diff --git a/kcc/KCC_gui.py b/kcc/KCC_gui.py
index f82e538..5a0c03f 100644
--- a/kcc/KCC_gui.py
+++ b/kcc/KCC_gui.py
@@ -37,6 +37,7 @@ from PyQt5 import QtGui, QtCore, QtWidgets
from xml.dom.minidom import parse
from html.parser import HTMLParser
from psutil import TOTAL_PHYMEM, Popen
+from hashlib import md5
from . import comic2ebook
from . import kindlesplit
from . import KCC_rc_web
@@ -187,10 +188,21 @@ class VersionThread(QtCore.QThread):
def __init__(self):
QtCore.QThread.__init__(self)
self.newVersion = ''
+ self.md5 = ''
def __del__(self):
self.wait()
+ def md5Checksum(self, filePath):
+ with open(filePath, 'rb') as fh:
+ m = md5()
+ while True:
+ data = fh.read(8192)
+ if not data:
+ break
+ m.update(data)
+ return m.hexdigest()
+
def run(self):
try:
XML = urllib.request.urlopen('http://kcc.vulturis.eu/Version.php')
@@ -201,6 +213,7 @@ class VersionThread(QtCore.QThread):
if tuple(map(int, (latestVersion.split(".")))) > tuple(map(int, (__version__.split(".")))):
if sys.platform.startswith('win'):
self.newVersion = latestVersion
+ self.md5 = XML.childNodes[0].getElementsByTagName('WindowsMD5')[0].childNodes[0].toxml()
MW.showDialog.emit('New version released! '
'See changelog.<
Installed version: ' + __version__ +
'
Current version: ' + latestVersion +
@@ -218,6 +231,8 @@ class VersionThread(QtCore.QThread):
MW.progressBarTick.emit('Downloading update')
path = urllib.request.urlretrieve('http://kcc.vulturis.eu/Windows/KindleComicConverter_win_' +
self.newVersion + '.exe', reporthook=self.getNewVersionTick)
+ if self.md5 != self.md5Checksum(path[0]):
+ raise Exception
move(path[0], path[0] + '.exe')
MW.hideProgressBar.emit()
MW.modeConvert.emit(1)