Wed, 25 Sep 2019 18:52:40 +0200
Continued to resolve code style issue M841.
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6645
ad476851d7e0
Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6229
diff
changeset
|
3 | # Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a cache for Google Safe Browsing. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | # |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | # Some part of this code were ported from gglsbl.storage and adapted |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | # to QtSql. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | # |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | # https://github.com/afilipovich/gglsbl |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | # |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | import os |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
7269
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
19 | from PyQt5.QtCore import ( |
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
20 | QObject, QByteArray, QCryptographicHash, QCoreApplication, QEventLoop |
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
21 | ) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
22 | from PyQt5.QtSql import QSql, QSqlDatabase, QSqlQuery |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
6229
72b40274a3b6
Web Browser NG, Safe Browsing: refactored the code to prepare the implementation of the Lookup API (v4)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6186
diff
changeset
|
24 | from .SafeBrowsingThreatList import ThreatList |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
25 | |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
26 | |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | class SafeBrowsingCache(QObject): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Class implementing a cache for Google Safe Browsing. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | create_threat_list_stmt = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | CREATE TABLE threat_list |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | (threat_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | platform_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | threat_entry_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | client_state character varying(42), |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | timestamp timestamp without time zone DEFAULT current_timestamp, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | PRIMARY KEY (threat_type, platform_type, threat_entry_type) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | ) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | drop_threat_list_stmt = """DROP TABLE IF EXISTS threat_list""" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | create_full_hashes_stmt = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | CREATE TABLE full_hash |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | (value BLOB NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | threat_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | platform_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | threat_entry_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | downloaded_at timestamp without time zone DEFAULT current_timestamp, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | expires_at timestamp without time zone |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | NOT NULL DEFAULT current_timestamp, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | malware_threat_type varchar(32), |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | PRIMARY KEY (value, threat_type, platform_type, threat_entry_type) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | ) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | drop_full_hashes_stmt = """DROP TABLE IF EXISTS full_hash""" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | create_hash_prefix_stmt = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | CREATE TABLE hash_prefix |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | (value BLOB NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | cue character varying(4) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | threat_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | platform_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | threat_entry_type character varying(128) NOT NULL, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | timestamp timestamp without time zone DEFAULT current_timestamp, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | negative_expires_at timestamp without time zone |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | NOT NULL DEFAULT current_timestamp, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | PRIMARY KEY (value, threat_type, platform_type, threat_entry_type), |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | FOREIGN KEY(threat_type, platform_type, threat_entry_type) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | REFERENCES threat_list(threat_type, platform_type, threat_entry_type) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | ON DELETE CASCADE |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | ) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | drop_hash_prefix_stmt = """DROP TABLE IF EXISTS hash_prefix""" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | create_full_hash_cue_idx = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | CREATE INDEX idx_hash_prefix_cue ON hash_prefix (cue) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | drop_full_hash_cue_idx = """DROP INDEX IF EXISTS idx_hash_prefix_cue""" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | create_full_hash_expires_idx = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | CREATE INDEX idx_full_hash_expires_at ON full_hash (expires_at) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | drop_full_hash_expires_idx = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | DROP INDEX IF EXISTS idx_full_hash_expires_at |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | create_full_hash_value_idx = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | CREATE INDEX idx_full_hash_value ON full_hash (value) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | drop_full_hash_value_idx = """DROP INDEX IF EXISTS idx_full_hash_value""" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
93 | maxProcessEventsTime = 500 |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
94 | |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | def __init__(self, dbPath, parent=None): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | Constructor |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | @param dbPath path to store the cache DB into |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | @type str |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | @param parent reference to the parent object |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | @type QObject |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | super(SafeBrowsingCache, self).__init__(parent) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | self.__connectionName = "SafeBrowsingCache" |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | if not os.path.exists(dbPath): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | os.makedirs(dbPath) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | self.__dbFileName = os.path.join(dbPath, "SafeBrowsingCache.db") |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | preparationNeeded = not os.path.exists(self.__dbFileName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | self.__openCacheDb() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | if preparationNeeded: |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
116 | self.prepareCacheDb() |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
118 | def close(self): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
119 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
120 | Public method to close the database. |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
121 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
122 | if QSqlDatabase.database(self.__connectionName).isOpen(): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
123 | QSqlDatabase.database(self.__connectionName).close() |
5847
fd1262c3fa79
Fixed a copy and paste issue in the safe browsing cache.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5829
diff
changeset
|
124 | QSqlDatabase.removeDatabase(self.__connectionName) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
125 | |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | def __openCacheDb(self): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | Private method to open the cache database. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | @return flag indicating the open state |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | @rtype bool |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | db = QSqlDatabase.database(self.__connectionName, False) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | if not db.isValid(): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | # the database connection is a new one |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | db = QSqlDatabase.addDatabase("QSQLITE", self.__connectionName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | db.setDatabaseName(self.__dbFileName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | opened = db.open() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if not opened: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | QSqlDatabase.removeDatabase(self.__connectionName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | else: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | opened = True |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | return opened |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
145 | def prepareCacheDb(self): |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | """ |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
147 | Public method to prepare the cache database. |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | db = QSqlDatabase.database(self.__connectionName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | db.transaction() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | try: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | query = QSqlQuery(db) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | # step 1: drop old tables |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | query.exec_(self.drop_threat_list_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | query.exec_(self.drop_full_hashes_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | query.exec_(self.drop_hash_prefix_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | # step 2: drop old indices |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | query.exec_(self.drop_full_hash_cue_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | query.exec_(self.drop_full_hash_expires_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | query.exec_(self.drop_full_hash_value_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | # step 3: create tables |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | query.exec_(self.create_threat_list_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | query.exec_(self.create_full_hashes_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | query.exec_(self.create_hash_prefix_stmt) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | # step 4: create indices |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | query.exec_(self.create_full_hash_cue_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | query.exec_(self.create_full_hash_expires_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | query.exec_(self.create_full_hash_value_idx) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | finally: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | del query |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | db.commit() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | def lookupFullHashes(self, hashValues): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | Public method to get a list of threat lists and expiration flag |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | for the given hashes if a hash is blacklisted. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | @param hashValues list of hash values to look up |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | @type list of bytes |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | @return list of tuples containing the threat list info and the |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | expiration flag |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | @rtype list of tuple of (ThreatList, bool) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | queryStr = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | SELECT threat_type, platform_type, threat_entry_type, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | expires_at < current_timestamp AS has_expired |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
187 | FROM full_hash WHERE value IN ({0}) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | output = [] |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | db = QSqlDatabase.database(self.__connectionName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | if db.isOpen(): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | db.transaction() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | try: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | query = QSqlQuery(db) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | query.prepare( |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
197 | queryStr.format(",".join(["?"] * len(hashValues)))) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | for hashValue in hashValues: |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
199 | query.addBindValue(QByteArray(hashValue), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
200 | QSql.In | QSql.Binary) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | query.exec_() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | |
7022
a5f9f601b6ac
SafeBrowsingCache: adapted some __IGNORE_WARNING__ comments to the changed message numbers (M513 -> M523)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
204 | while query.next(): # __IGNORE_WARNING_M523__ |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | threatType = query.value(0) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | platformType = query.value(1) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | threatEntryType = query.value(2) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
208 | hasExpired = bool(query.value(3)) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | threatList = ThreatList(threatType, platformType, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | threatEntryType) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | output.append((threatList, hasExpired)) |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
212 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
213 | self.maxProcessEventsTime) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | del query |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | finally: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | db.commit() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | return output |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | def lookupHashPrefix(self, prefixes): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | Public method to look up hash prefixes in the local cache. |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
224 | @param prefixes list of hash prefixes to look up |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | @type list of bytes |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | @return list of tuples containing the threat list, full hash and |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | negative cache expiration flag |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | @rtype list of tuple of (ThreatList, bytes, bool) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | queryStr = """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | SELECT value,threat_type,platform_type,threat_entry_type, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | negative_expires_at < current_timestamp AS negative_cache_expired |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
233 | FROM hash_prefix WHERE cue IN ({0}) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | """ |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | output = [] |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | db = QSqlDatabase.database(self.__connectionName) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | if db.isOpen(): |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | db.transaction() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | try: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | query = QSqlQuery(db) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | query.prepare( |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
243 | queryStr.format(",".join(["?"] * len(prefixes)))) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | for prefix in prefixes: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | query.addBindValue(prefix) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | query.exec_() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | |
7022
a5f9f601b6ac
SafeBrowsingCache: adapted some __IGNORE_WARNING__ comments to the changed message numbers (M513 -> M523)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
249 | while query.next(): # __IGNORE_WARNING_M523__ |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | fullHash = bytes(query.value(0)) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | threatType = query.value(1) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | platformType = query.value(2) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | threatEntryType = query.value(3) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
254 | negativeCacheExpired = bool(query.value(4)) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | threatList = ThreatList(threatType, platformType, |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | threatEntryType) |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | output.append((threatList, fullHash, negativeCacheExpired)) |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
258 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
259 | self.maxProcessEventsTime) |
5817
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | del query |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | finally: |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | db.commit() |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | |
a5f6c9128500
Started implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | return output |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
265 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
266 | def storeFullHash(self, threatList, hashValue, cacheDuration, |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
267 | malwareThreatType): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
268 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
269 | Public method to store full hash data in the cache database. |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
270 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
271 | @param threatList threat list info object |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
272 | @type ThreatList |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
273 | @param hashValue hash to be stored |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
274 | @type bytes |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
275 | @param cacheDuration duration the data should remain in the cache |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
276 | @type int or float |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
277 | @param malwareThreatType threat type of the malware |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
278 | @type str |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
279 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
280 | insertQueryStr = """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
281 | INSERT OR IGNORE INTO full_hash |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
282 | (value, threat_type, platform_type, threat_entry_type, |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
283 | malware_threat_type, downloaded_at) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
284 | VALUES |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
285 | (?, ?, ?, ?, ?, current_timestamp) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
286 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
287 | updateQueryStr = """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
288 | UPDATE full_hash SET |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
289 | expires_at=datetime(current_timestamp, '+{0} SECONDS') |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
290 | WHERE value=? AND threat_type=? AND platform_type=? AND |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
291 | threat_entry_type=? |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
292 | """.format(int(cacheDuration)) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
293 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
294 | db = QSqlDatabase.database(self.__connectionName) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
295 | if db.isOpen(): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
296 | db.transaction() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
297 | try: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
298 | query = QSqlQuery(db) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
299 | query.prepare(insertQueryStr) |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
300 | query.addBindValue(QByteArray(hashValue), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
301 | QSql.In | QSql.Binary) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
302 | query.addBindValue(threatList.threatType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
303 | query.addBindValue(threatList.platformType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
304 | query.addBindValue(threatList.threatEntryType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
305 | query.addBindValue(malwareThreatType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
306 | query.exec_() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
307 | del query |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
308 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
309 | query = QSqlQuery(db) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
310 | query.prepare(updateQueryStr) |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
311 | query.addBindValue(QByteArray(hashValue), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
312 | QSql.In | QSql.Binary) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
313 | query.addBindValue(threatList.threatType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
314 | query.addBindValue(threatList.platformType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
315 | query.addBindValue(threatList.threatEntryType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
316 | query.exec_() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
317 | del query |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
318 | finally: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
319 | db.commit() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
320 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
321 | def deleteHashPrefixList(self, threatList): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
322 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
323 | Public method to delete hash prefixes for a given threat list. |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
324 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
325 | @param threatList threat list info object |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
326 | @type ThreatList |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
327 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
328 | queryStr = """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
329 | DELETE FROM hash_prefix |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
330 | WHERE threat_type=? AND platform_type=? AND threat_entry_type=? |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
331 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
332 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
333 | db = QSqlDatabase.database(self.__connectionName) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
334 | if db.isOpen(): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
335 | db.transaction() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
336 | try: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
337 | query = QSqlQuery(db) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
338 | query.prepare(queryStr) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
339 | query.addBindValue(threatList.threatType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
340 | query.addBindValue(threatList.platformType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
341 | query.addBindValue(threatList.threatEntryType) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
342 | query.exec_() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
343 | del query |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
344 | finally: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
345 | db.commit() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
346 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
347 | def cleanupFullHashes(self, keepExpiredFor=43200): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
348 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
349 | Public method to clean up full hash entries expired more than the |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
350 | given time. |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
351 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
352 | @param keepExpiredFor time period in seconds of entries to be expired |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
353 | @type int or float |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
354 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
355 | queryStr = """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
356 | DELETE FROM full_hash |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
357 | WHERE expires_at=datetime(current_timestamp, '{0} SECONDS') |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
358 | """.format(int(keepExpiredFor)) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
359 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
360 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
361 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
362 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
363 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
364 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
365 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
366 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
367 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
368 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
369 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
370 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
371 | def updateHashPrefixExpiration(self, threatList, hashPrefix, |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
372 | negativeCacheDuration): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
373 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
374 | Public method to update the hash prefix expiration time. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
375 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
376 | @param threatList threat list info object |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
377 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
378 | @param hashPrefix hash prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
379 | @type bytes |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
380 | @param negativeCacheDuration time in seconds the entry should remain |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
381 | in the cache |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
382 | @type int or float |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
383 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
384 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
385 | UPDATE hash_prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
386 | SET negative_expires_at=datetime(current_timestamp, '+{0} SECONDS') |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
387 | WHERE value=? AND threat_type=? AND platform_type=? AND |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
388 | threat_entry_type=? |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
389 | """.format(int(negativeCacheDuration)) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
390 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
391 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
392 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
393 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
394 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
395 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
396 | query.prepare(queryStr) |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
397 | query.addBindValue(QByteArray(hashPrefix), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
398 | QSql.In | QSql.Binary) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
399 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
400 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
401 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
402 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
403 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
404 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
405 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
406 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
407 | def getThreatLists(self): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
408 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
409 | Public method to get the available threat lists. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
410 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
411 | @return list of available threat lists |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
412 | @rtype list of tuples of (ThreatList, str) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
413 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
414 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
415 | SELECT threat_type,platform_type,threat_entry_type,client_state |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
416 | FROM threat_list |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
417 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
418 | output = [] |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
419 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
420 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
421 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
422 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
423 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
424 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
425 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
426 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
427 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
428 | |
7022
a5f9f601b6ac
SafeBrowsingCache: adapted some __IGNORE_WARNING__ comments to the changed message numbers (M513 -> M523)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
429 | while query.next(): # __IGNORE_WARNING_M523__ |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
430 | threatType = query.value(0) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
431 | platformType = query.value(1) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
432 | threatEntryType = query.value(2) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
433 | clientState = query.value(3) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
434 | threatList = ThreatList(threatType, platformType, |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
435 | threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
436 | output.append((threatList, clientState)) |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
437 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
438 | self.maxProcessEventsTime) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
439 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
440 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
441 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
442 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
443 | return output |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
444 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
445 | def addThreatList(self, threatList): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
446 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
447 | Public method to add a threat list to the cache. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
448 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
449 | @param threatList threat list to be added |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
450 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
451 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
452 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
453 | INSERT OR IGNORE INTO threat_list |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
454 | (threat_type, platform_type, threat_entry_type, timestamp) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
455 | VALUES (?, ?, ?, current_timestamp) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
456 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
457 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
458 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
459 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
460 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
461 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
462 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
463 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
464 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
465 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
466 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
467 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
468 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
469 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
470 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
471 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
472 | def deleteThreatList(self, threatList): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
473 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
474 | Public method to delete a threat list from the cache. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
475 | |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
476 | @param threatList threat list to be deleted |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
477 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
478 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
479 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
480 | DELETE FROM threat_list |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
481 | WHERE threat_type=? AND platform_type=? AND threat_entry_type=? |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
482 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
483 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
484 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
485 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
486 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
487 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
488 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
489 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
490 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
491 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
492 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
493 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
494 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
495 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
496 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
497 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
498 | def updateThreatListClientState(self, threatList, clientState): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
499 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
500 | Public method to update the client state of a threat list. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
501 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
502 | @param threatList threat list to update the client state for |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
503 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
504 | @param clientState new client state |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
505 | @type str |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
506 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
507 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
508 | UPDATE threat_list SET timestamp=current_timestamp, client_state=? |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
509 | WHERE threat_type=? AND platform_type=? AND threat_entry_type=? |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
510 | """ |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
511 | |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
512 | db = QSqlDatabase.database(self.__connectionName) |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
513 | if db.isOpen(): |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
514 | db.transaction() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
515 | try: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
516 | query = QSqlQuery(db) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
517 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
518 | query.addBindValue(clientState) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
519 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
520 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
521 | query.addBindValue(threatList.threatEntryType) |
5818
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
522 | query.exec_() |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
523 | del query |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
524 | finally: |
cae9956be67e
Continued implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5817
diff
changeset
|
525 | db.commit() |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
526 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
527 | def hashPrefixListChecksum(self, threatList): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
528 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
529 | Public method to calculate the SHA256 checksum for an alphabetically |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
530 | sorted concatenated list of hash prefixes. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
531 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
532 | @param threatList threat list to calculate checksum for |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
533 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
534 | @return SHA256 checksum |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
535 | @rtype bytes |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
536 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
537 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
538 | SELECT value FROM hash_prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
539 | WHERE threat_type=? AND platform_type=? AND threat_entry_type=? |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
540 | ORDER BY value |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
541 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
542 | checksum = None |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
543 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
544 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
545 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
546 | db.transaction() |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
547 | sha256Hash = QCryptographicHash(QCryptographicHash.Sha256) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
548 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
549 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
550 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
551 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
552 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
553 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
554 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
555 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
556 | |
7022
a5f9f601b6ac
SafeBrowsingCache: adapted some __IGNORE_WARNING__ comments to the changed message numbers (M513 -> M523)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
557 | while query.next(): # __IGNORE_WARNING_M523__ |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
558 | sha256Hash.addData(query.value(0)) |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
559 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
560 | self.maxProcessEventsTime) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
561 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
562 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
563 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
564 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5820
diff
changeset
|
565 | checksum = bytes(sha256Hash.result()) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
566 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
567 | return checksum |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
568 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
569 | def populateHashPrefixList(self, threatList, prefixes): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
570 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
571 | Public method to populate the hash prefixes for a threat list. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
572 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
573 | @param threatList threat list of the hash prefixes |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
574 | @type ThreatList |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
575 | @param prefixes list of hash prefixes to be inserted |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
576 | @type HashPrefixList |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
577 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
578 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
579 | INSERT INTO hash_prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
580 | (value, cue, threat_type, platform_type, threat_entry_type, |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
581 | timestamp) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
582 | VALUES (?, ?, ?, ?, ?, current_timestamp) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
583 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
584 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
585 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
586 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
587 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
588 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
589 | for prefix in prefixes: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
590 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
591 | query.prepare(queryStr) |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
592 | query.addBindValue(QByteArray(prefix), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
593 | QSql.In | QSql.Binary) |
7192
a22eee00b052
Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7022
diff
changeset
|
594 | query.addBindValue(prefix[:4].hex()) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
595 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
596 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
597 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
598 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
599 | del query |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
600 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
601 | self.maxProcessEventsTime) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
602 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
603 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
604 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
605 | def getHashPrefixValuesToRemove(self, threatList, indexes): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
606 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
607 | Public method to get the hash prefix values to be removed from the |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
608 | cache. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
609 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
610 | @param threatList threat list to remove prefixes from |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
611 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
612 | @param indexes list of indexes of prefixes to be removed |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
613 | @type list of int |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
614 | @return list of hash prefixes to be removed |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
615 | @rtype list of bytes |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
616 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
617 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
618 | SELECT value FROM hash_prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
619 | WHERE threat_type=? AND platform_type=? AND threat_entry_type=? |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
620 | ORDER BY value |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
621 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
622 | indexes = set(indexes) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
623 | output = [] |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
624 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
625 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
626 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
627 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
628 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
629 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
630 | query.prepare(queryStr) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
631 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
632 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
633 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
634 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
635 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
636 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
637 | index = 0 |
7022
a5f9f601b6ac
SafeBrowsingCache: adapted some __IGNORE_WARNING__ comments to the changed message numbers (M513 -> M523)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
638 | while query.next(): # __IGNORE_WARNING_M523__ |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
639 | if index in indexes: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
640 | prefix = bytes(query.value(0)) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
641 | output.append(prefix) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
642 | index += 1 |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
643 | QCoreApplication.processEvents(QEventLoop.AllEvents, |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
644 | self.maxProcessEventsTime) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
645 | del query |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
646 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
647 | db.commit() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
648 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
649 | return output |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
650 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
651 | def removeHashPrefixIndices(self, threatList, indexes): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
652 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
653 | Public method to remove hash prefixes from the cache. |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
654 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
655 | @param threatList threat list to delete hash prefixes of |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
656 | @type ThreatList |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
657 | @param indexes list of indexes of prefixes to be removed |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
658 | @type list of int |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
659 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
660 | queryStr = """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
661 | DELETE FROM hash_prefix |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
662 | WHERE threat_type=? AND platform_type=? AND |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
663 | threat_entry_type=? AND value IN ({0}) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
664 | """ |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
665 | batchSize = 40 |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
666 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
667 | prefixesToRemove = self.getHashPrefixValuesToRemove( |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
668 | threatList, indexes) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
669 | if prefixesToRemove: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
670 | db = QSqlDatabase.database(self.__connectionName) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
671 | if db.isOpen(): |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
672 | db.transaction() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
673 | try: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
674 | for index in range(0, len(prefixesToRemove), batchSize): |
7269
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
675 | removeBatch = prefixesToRemove[ |
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
676 | index:(index + batchSize) |
0c63ea7f94bd
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
677 | ] |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
678 | |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
679 | query = QSqlQuery(db) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
680 | query.prepare( |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
681 | queryStr.format(",".join(["?"] * len(removeBatch))) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
682 | ) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
683 | query.addBindValue(threatList.threatType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
684 | query.addBindValue(threatList.platformType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
685 | query.addBindValue(threatList.threatEntryType) |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
686 | for prefix in removeBatch: |
5820
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
687 | query.addBindValue(QByteArray(prefix), |
b610cb5b501a
Started implementing the safe browsing manager and management dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5819
diff
changeset
|
688 | QSql.In | QSql.Binary) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
689 | query.exec_() |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
690 | del query |
5853
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
691 | QCoreApplication.processEvents( |
e45a570528a4
Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5847
diff
changeset
|
692 | QEventLoop.AllEvents, self.maxProcessEventsTime) |
5819
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
693 | finally: |
69fa45e95673
Finished implementing the SafeBrowsingCache class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5818
diff
changeset
|
694 | db.commit() |