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