16 |
16 |
17 from Utilities.AutoSaver import AutoSaver |
17 from Utilities.AutoSaver import AutoSaver |
18 import Utilities |
18 import Utilities |
19 import Preferences |
19 import Preferences |
20 |
20 |
|
21 |
21 class CookieJar(QNetworkCookieJar): |
22 class CookieJar(QNetworkCookieJar): |
22 """ |
23 """ |
23 Class implementing a QNetworkCookieJar subclass with various accept policies. |
24 Class implementing a QNetworkCookieJar subclass with various accept policies. |
24 |
25 |
25 @signal cookiesChanged() emitted after the cookies have been changed |
26 @signal cookiesChanged() emitted after the cookies have been changed |
26 """ |
27 """ |
27 cookiesChanged = pyqtSignal() |
28 cookiesChanged = pyqtSignal() |
28 |
29 |
29 JAR_VERSION = 23 |
30 JAR_VERSION = 23 |
30 |
31 |
31 AcceptAlways = 0 |
32 AcceptAlways = 0 |
32 AcceptNever = 1 |
33 AcceptNever = 1 |
33 AcceptOnlyFromSitesNavigatedTo = 2 |
34 AcceptOnlyFromSitesNavigatedTo = 2 |
34 |
35 |
35 KeepUntilExpire = 0 |
36 KeepUntilExpire = 0 |
36 KeepUntilExit = 1 |
37 KeepUntilExit = 1 |
37 KeepUntilTimeLimit = 2 |
38 KeepUntilTimeLimit = 2 |
38 |
39 |
39 Allow = 0 |
40 Allow = 0 |
40 Block = 1 |
41 Block = 1 |
41 AllowForSession = 2 |
42 AllowForSession = 2 |
42 |
43 |
43 def __init__(self, parent = None): |
44 def __init__(self, parent=None): |
44 """ |
45 """ |
45 Constructor |
46 Constructor |
46 |
47 |
47 @param parent reference to the parent object (QObject) |
48 @param parent reference to the parent object (QObject) |
48 """ |
49 """ |
50 |
51 |
51 self.__loaded = False |
52 self.__loaded = False |
52 self.__acceptCookies = self.AcceptOnlyFromSitesNavigatedTo |
53 self.__acceptCookies = self.AcceptOnlyFromSitesNavigatedTo |
53 self.__saveTimer = AutoSaver(self, self.save) |
54 self.__saveTimer = AutoSaver(self, self.save) |
54 |
55 |
55 self.__cookiesFile = os.path.join(Utilities.getConfigDir(), |
56 self.__cookiesFile = os.path.join(Utilities.getConfigDir(), |
56 "browser", "cookies.ini") |
57 "browser", "cookies.ini") |
57 |
58 |
58 def saveCookies(self, cookiesList): |
59 def saveCookies(self, cookiesList): |
59 """ |
60 """ |
60 Public method to save the cookies. |
61 Public method to save the cookies. |
87 |
88 |
88 version = stream.readUInt16() |
89 version = stream.readUInt16() |
89 if version != self.JAR_VERSION: |
90 if version != self.JAR_VERSION: |
90 return [] |
91 return [] |
91 |
92 |
92 stream.readUInt32() # number of cookies |
93 stream.readUInt32() # number of cookies |
93 |
94 |
94 rawCookie = QByteArray() |
95 rawCookie = QByteArray() |
95 while not stream.atEnd(): |
96 while not stream.atEnd(): |
96 stream >> rawCookie |
97 stream >> rawCookie |
97 newCookies = QNetworkCookie.parseCookies(rawCookie) |
98 newCookies = QNetworkCookie.parseCookies(rawCookie) |
168 self.__purgeOldCookies() |
169 self.__purgeOldCookies() |
169 |
170 |
170 cookieSettings = QSettings(self.__cookiesFile, QSettings.IniFormat) |
171 cookieSettings = QSettings(self.__cookiesFile, QSettings.IniFormat) |
171 |
172 |
172 cookiesList = self.allCookies() |
173 cookiesList = self.allCookies() |
173 for index in range(len(cookiesList) -1, -1, -1): |
174 for index in range(len(cookiesList) - 1, -1, -1): |
174 if cookiesList[index].isSessionCookie(): |
175 if cookiesList[index].isSessionCookie(): |
175 del cookiesList[index] |
176 del cookiesList[index] |
176 cookies = self.saveCookies(cookiesList) |
177 cookies = self.saveCookies(cookiesList) |
177 |
178 |
178 cookieSettings.setValue("Cookies", cookies) |
179 cookieSettings.setValue("Cookies", cookies) |
179 cookieSettings.setValue("Exceptions/block", self.__exceptionsBlock) |
180 cookieSettings.setValue("Exceptions/block", self.__exceptionsBlock) |
180 cookieSettings.setValue("Exceptions/allow", self.__exceptionsAllow) |
181 cookieSettings.setValue("Exceptions/allow", self.__exceptionsAllow) |
181 cookieSettings.setValue("Exceptions/allowForSession", |
182 cookieSettings.setValue("Exceptions/allowForSession", |
182 self.__exceptionsAllowForSession) |
183 self.__exceptionsAllowForSession) |
183 |
184 |
184 Preferences.setHelp("AcceptCookies", self.__acceptCookies) |
185 Preferences.setHelp("AcceptCookies", self.__acceptCookies) |
185 Preferences.setHelp("KeepCookiesUntil", self.__keepCookies) |
186 Preferences.setHelp("KeepCookiesUntil", self.__keepCookies) |
186 Preferences.setHelp("FilterTrackingCookies", self.__filterTrackingCookies) |
187 Preferences.setHelp("FilterTrackingCookies", self.__filterTrackingCookies) |