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