265 """ |
265 """ |
266 fileName = self.rulesFileName() |
266 fileName = self.rulesFileName() |
267 f = QFile(fileName) |
267 f = QFile(fileName) |
268 if f.exists(): |
268 if f.exists(): |
269 if not f.open(QIODevice.ReadOnly): |
269 if not f.open(QIODevice.ReadOnly): |
270 E5MessageBox.warning(None, |
270 E5MessageBox.warning( |
|
271 None, |
271 self.trUtf8("Load subscription rules"), |
272 self.trUtf8("Load subscription rules"), |
272 self.trUtf8( |
273 self.trUtf8( |
273 """Unable to open adblock file '{0}' for reading.""")\ |
274 """Unable to open adblock file '{0}' for reading.""")\ |
274 .format(fileName)) |
275 .format(fileName)) |
275 else: |
276 else: |
276 textStream = QTextStream(f) |
277 textStream = QTextStream(f) |
277 header = textStream.readLine(1024) |
278 header = textStream.readLine(1024) |
278 if not header.startswith("[Adblock"): |
279 if not header.startswith("[Adblock"): |
279 E5MessageBox.warning(None, |
280 E5MessageBox.warning( |
|
281 None, |
280 self.trUtf8("Load subscription rules"), |
282 self.trUtf8("Load subscription rules"), |
281 self.trUtf8("""AdBlock file '{0}' does not start""" |
283 self.trUtf8("""AdBlock file '{0}' does not start""" |
282 """ with [Adblock.""")\ |
284 """ with [Adblock.""")\ |
283 .format(fileName)) |
285 .format(fileName)) |
284 f.close() |
286 f.close() |
353 self.__loadRules() |
355 self.__loadRules() |
354 return |
356 return |
355 |
357 |
356 import Helpviewer.HelpWindow |
358 import Helpviewer.HelpWindow |
357 from Helpviewer.Network.FollowRedirectReply import FollowRedirectReply |
359 from Helpviewer.Network.FollowRedirectReply import FollowRedirectReply |
358 self.__downloading = FollowRedirectReply(self.location(), |
360 self.__downloading = FollowRedirectReply( |
|
361 self.location(), |
359 Helpviewer.HelpWindow.HelpWindow.networkAccessManager()) |
362 Helpviewer.HelpWindow.HelpWindow.networkAccessManager()) |
360 self.__downloading.finished[()].connect(self.__rulesDownloaded) |
363 self.__downloading.finished[()].connect(self.__rulesDownloaded) |
361 |
364 |
362 def __rulesDownloaded(self): |
365 def __rulesDownloaded(self): |
363 """ |
366 """ |
370 self.__downloading = None |
373 self.__downloading = None |
371 |
374 |
372 if reply.error() != QNetworkReply.NoError: |
375 if reply.error() != QNetworkReply.NoError: |
373 if not self.__defaultSubscription: |
376 if not self.__defaultSubscription: |
374 # don't show error if we try to load the default |
377 # don't show error if we try to load the default |
375 E5MessageBox.warning(None, |
378 E5MessageBox.warning( |
|
379 None, |
376 self.trUtf8("Downloading subscription rules"), |
380 self.trUtf8("Downloading subscription rules"), |
377 self.trUtf8( |
381 self.trUtf8( |
378 """<p>Subscription rules could not be""" |
382 """<p>Subscription rules could not be""" |
379 """ downloaded.</p><p>Error: {0}</p>""") |
383 """ downloaded.</p><p>Error: {0}</p>""") |
380 .format(reply.errorString())) |
384 .format(reply.errorString())) |
382 # reset after first download attempt |
386 # reset after first download attempt |
383 self.__defaultSubscription = False |
387 self.__defaultSubscription = False |
384 return |
388 return |
385 |
389 |
386 if response.isEmpty(): |
390 if response.isEmpty(): |
387 E5MessageBox.warning(None, |
391 E5MessageBox.warning( |
|
392 None, |
388 self.trUtf8("Downloading subscription rules"), |
393 self.trUtf8("Downloading subscription rules"), |
389 self.trUtf8("""Got empty subscription rules.""")) |
394 self.trUtf8("""Got empty subscription rules.""")) |
390 return |
395 return |
391 |
396 |
392 fileName = self.rulesFileName() |
397 fileName = self.rulesFileName() |
393 QFile.remove(fileName) |
398 QFile.remove(fileName) |
394 f = QFile(fileName) |
399 f = QFile(fileName) |
395 if not f.open(QIODevice.ReadWrite): |
400 if not f.open(QIODevice.ReadWrite): |
396 E5MessageBox.warning(None, |
401 E5MessageBox.warning( |
|
402 None, |
397 self.trUtf8("Downloading subscription rules"), |
403 self.trUtf8("Downloading subscription rules"), |
398 self.trUtf8( |
404 self.trUtf8( |
399 """Unable to open adblock file '{0}' for writing.""")\ |
405 """Unable to open adblock file '{0}' for writing.""")\ |
400 .file(fileName)) |
406 .file(fileName)) |
401 return |
407 return |
442 calculatedChecksum = base64.b64encode(md5.digest()).decode()\ |
448 calculatedChecksum = base64.b64encode(md5.digest()).decode()\ |
443 .rstrip("=") |
449 .rstrip("=") |
444 if calculatedChecksum == expectedChecksum: |
450 if calculatedChecksum == expectedChecksum: |
445 return True |
451 return True |
446 else: |
452 else: |
447 res = E5MessageBox.yesNo(None, |
453 res = E5MessageBox.yesNo( |
|
454 None, |
448 self.trUtf8("Downloading subscription rules"), |
455 self.trUtf8("Downloading subscription rules"), |
449 self.trUtf8( |
456 self.trUtf8( |
450 """<p>AdBlock subscription <b>{0}</b> has a wrong""" |
457 """<p>AdBlock subscription <b>{0}</b> has a wrong""" |
451 """ checksum.<br/>""" |
458 """ checksum.<br/>""" |
452 """Found: {1}<br/>""" |
459 """Found: {1}<br/>""" |
464 if not fileName: |
471 if not fileName: |
465 return |
472 return |
466 |
473 |
467 f = QFile(fileName) |
474 f = QFile(fileName) |
468 if not f.open(QIODevice.ReadWrite | QIODevice.Truncate): |
475 if not f.open(QIODevice.ReadWrite | QIODevice.Truncate): |
469 E5MessageBox.warning(None, |
476 E5MessageBox.warning( |
|
477 None, |
470 self.trUtf8("Saving subscription rules"), |
478 self.trUtf8("Saving subscription rules"), |
471 self.trUtf8( |
479 self.trUtf8( |
472 """Unable to open adblock file '{0}' for writing.""")\ |
480 """Unable to open adblock file '{0}' for writing.""")\ |
473 .format(fileName)) |
481 .format(fileName)) |
474 return |
482 return |