From c9a7ef774236ae8183c1de16b49ef4a05a7682f5 Mon Sep 17 00:00:00 2001 From: neox95 Date: Mon, 8 Jul 2019 19:44:09 +0200 Subject: [PATCH] Working on launcher : download functions --- src/analyzer/CNI_Revelator.py | 16 +---- src/analyzer/id-card.ico | Bin 0 -> 1901 bytes src/launcher/conf.ig | 1 + src/launcher/downloader.py | 131 +++++++++++++++++++++++++++++++++- src/launcher/globs.py | 1 + src/launcher/ihm.py | 11 ++- src/launcher/logger.py | 2 +- src/launcher/updater.py | 32 +++++++-- 8 files changed, 164 insertions(+), 30 deletions(-) create mode 100644 src/analyzer/id-card.ico create mode 100644 src/launcher/conf.ig diff --git a/src/analyzer/CNI_Revelator.py b/src/analyzer/CNI_Revelator.py index 947d93f..ee4a7a5 100644 --- a/src/analyzer/CNI_Revelator.py +++ b/src/analyzer/CNI_Revelator.py @@ -80,20 +80,10 @@ def main(logger): logger.info('launcher : ' + CST_NAME + ' ' + CST_VER) logger.info('launcher : *****Hello World*****') logger.info('launcher : *****Launching SoftUpdate()*****') -try: - Answer = SoftUpdate(logger) -except Exception as e: - logger.info('launcher : *****FATAL ERROR*****' + str(e)) - os.abort() -logger.info('launcher : *****Ending SoftUpdate()*****') -try: - if Answer == True: - logger.info('launcher : *****Launching main()*****') - State = main(logger) -except Exception as e: - logger.info('launcher : *****FATAL ERROR*****' + str(e)) - os.abort() +logger.info('launcher : *****Launching main()*****') +State = main(logger) + logger.info('launcher : *****Ending main()*****') logger.info('launcher : *****Goodbye!*****') diff --git a/src/analyzer/id-card.ico b/src/analyzer/id-card.ico new file mode 100644 index 0000000000000000000000000000000000000000..efa86e4bc2d929c43599b2b48a2b3b15813b4f6c GIT binary patch literal 1901 zcmcgtYgE!_9De_RiVOtGL~CBU%*r*jZCP0XIh{5ytmUnlar@6ExfCkK^V z1wDQw(Ie;O8UU?r_$(GNlP{d+ zEkVc_bqjg#>|v5F0HrI(HD(84Q$+?4yy!Lf?98my=}}$L)>%Wpn+J##RW&EJZ`%p# z2qCr4D~hBb+5X&>`+>W+Lj6>4Wl?$hZOZB6wJI7hn@`U#UT^gLfLx81#MNpxx=!e) zVkgHIkYO!F6XmNc>uz1T7)mXUO_;<-J025vj?1B!{82Gssv=u_8x)_=c<7GXBd3CB zS;|aC!ymJ&*elW=KZd%}=??b4S;=unzS08jt}2Z(el3W{BB%`f%TQX!d7F{^U1&)s zE8Nh+?Ezf&ux8k%B;kI9Pw$vBuuyOkH;#3}4+?Ic(e}kZXh3&yoGO{prR&#@Nzf}0 zdZINXMd;sq&53Nq-A1cIr#aDCYcAKnyLk?gB7&3FsLx^bH%C{Z+Xn3gZ_WcLu1U)v zDSJ2)jx_iE!2>9%JYu2yZg8W<7bA>Wya0=MMG&}oZU>j$H&HP@8+mkRjUo7>-dNPo z3t@hV`5)aX2G;*nQ}cl0k;T)}X_g2s zp2JdK^fS#Y40`L^3Z2y#CXLs^2&tm3Fv!K~)fx^Gbq3Y8>$OI2SkH&;M6)|S!+J7n zt)9jiL2?w`KRJA7{KKR{7v|YrOf$d9d9B;`Jik<1bz&v@(2dlXTlER@u>cDEV0i{( z;q3A$uD~b(z9F|5@etDDmpxY zFc2fH*bVAjxy1txIaaEXHa#P!d;whVre0OMx9rO-2PEnf-n~P@=~DuajoX^->33tt zhsn9$)*gwzo?+$0Hr($YF&v)hF=M?SY0hnq9@pg-EkU=jb#nfOC}Z3L`1cHVGK+W_ zCE4G)x8~=o%YBc^O_b9NY~og^G$;RRg$E?z?;pHA?T@Vam6zaqu%t>h)bkQtxT8~@ zH%`ujMTK=?7iFbYmBMFl46z_sMv30^mJt>NXK(s}j{$b9z06 z+TfN9s4M7CpNC0;zj^2qlzMx-^im+eujYyafkDyZgj?D7r5WqtZ`akDx=_gWxh$tF z(=c40SzS&XN?GV8-s9_dZy__&JEVuxz^Asinl)c10G(7ogy2E!KN|H*h3)g?@y#G_ zT{rZ`$cG`FJGgeTNrHys`XI?WFg`m*X$5jK@o*$~ZIKN%XcAP~alTuoC($u1S4yn$ z2@fm*JgH|hbCcx?RGZ?VUDT)xjHNS}twZf4kPk@T{&BS`Y?{t|&z!I1$7V7Bbq2K< z_6!|te~MAJyIG@CWqFP#X!BrR*-}_^oAUo>%v_Gm0=?j3': + logfile.printdbg('Successfully connected to the Internet !') + self.sessionHandler = session + self.valid = True + return + + if str(sessionAnswer) != '': + logfile.printerr('Network Error!') + return + + if self.trying > 3: + logfile.printerr('Invalid credentials : access denied, a maximum of 3 trials have been raised !') + return + + logfile.printdbg('Invalid credentials : access denied') + + # Deleting the root of Evil if needed + if self.readInTheBooks: + os.remove(globs.CNIRFolder + '\\conf.ig') + logfile.printdbg("Deleting the root of Evil") + + try: + with open(globs.CNIRFolder + '\\conf.ig', 'rb') as (configFile): + self.readInTheBooks = True + # Decrypt the config file + AESObj = AESCipher(globs.CNIRCryptoKey) + try: + # Reading it + reading = AESObj.decrypt(configFile.read()) + # Parsing it + if reading != '||': + if reading.find('||') != -1: + # TADAAA + self.login, self.password = reading.split('||')[0:2] + else: + # UPS + logfile.printerr('Cryptokey is bad !') + return + + except Exception as e: + raise IOError(str(e)) + + except FileNotFoundError: + logfile.printdbg('We will ask for credentials then') + + launcherWindow = ihm.launcherWindowCur + + # Parameters for the password invite + invite = ihm.LoginDialog(launcherWindow) + invite.transient(launcherWindow) + invite.grab_set() + + launcherWindow.wait_window(invite) + + # Getting the credentials + self.login = invite.login + self.password = invite.key + + AESObj = AESCipher(globs.CNIRCryptoKey) + with open(globs.CNIRFolder + '\\conf.ig', 'wb+') as (configFile): + logfile.printdbg('Saving credentials in encrypted config file') + configFile.write(AESObj.encrypt(self.login + '||' + self.password)) + + + return class newdownload(): - def __init__(url): - self.url = url - + def __init__(self, credentials, urlFile, destinationFile): + self.urlFile = urlFile + self.destinationFile = destinationFile + + \ No newline at end of file diff --git a/src/launcher/globs.py b/src/launcher/globs.py index dd26cb9..5f2a65b 100644 --- a/src/launcher/globs.py +++ b/src/launcher/globs.py @@ -28,3 +28,4 @@ CNIRTesserHash = '5b58db27f7bc08c58a2cb33d01533b034b067cf8' CNIRFolder = os.getcwd() CNIRLColor = "#006699" CNIRName = "CNIRevelator Launcher 3" +CNIRCryptoKey = '82Xh!efX3#@P~2eG' diff --git a/src/launcher/ihm.py b/src/launcher/ihm.py index fa98736..034e8c9 100644 --- a/src/launcher/ihm.py +++ b/src/launcher/ihm.py @@ -34,6 +34,8 @@ import globs # globs.py class LoginDialog(Toplevel): def __init__(self, parent): + self.key = '' + self.login = '' super().__init__(parent) self.title('Connexion') Label(self, text='IPN : ').pack() @@ -55,16 +57,13 @@ class LoginDialog(Toplevel): self.iconbitmap(sys._MEIPASS + '\\id-card.ico\\id-card.ico') else: self.iconbitmap('id-card.ico') - upwin.update() x = ws / 2 - w / 2 y = hs / 2 - h / 2 self.geometry('%dx%d+%d+%d' % (w, h, x, y)) - def logingin(self): - global key - global login - login = self.entry_login.get().strip() - key = self.entry_pass.get().strip() + def connecti(self): + self.login = self.entry_login.get().strip() + self.key = self.entry_pass.get().strip() self.destroy() class LauncherWindow(Tk): diff --git a/src/launcher/logger.py b/src/launcher/logger.py index 871d836..4738109 100644 --- a/src/launcher/logger.py +++ b/src/launcher/logger.py @@ -34,7 +34,7 @@ class NewLoggingSystem: # Deleting the error log try: - os.remove(globs.CNIRFolder + '\\error.log') # The deletion does not working + os.remove(globs.CNIRFolder + '\\error.log') except Exception as e: #print(str(e) + " : " + str(globs.CNIRFolder + '\\error.log')) pass diff --git a/src/launcher/updater.py b/src/launcher/updater.py index 39a6ee1..1f1137d 100644 --- a/src/launcher/updater.py +++ b/src/launcher/updater.py @@ -28,9 +28,10 @@ import traceback import sys import time -import logger # logger.py -import globs # globs.py -import ihm # ihm.py +import logger # logger.py +import globs # globs.py +import ihm # ihm.py +import downloader # downloader.py def createShortcut(path, target='', wDir='', icon=''): ext = path[-3:] @@ -59,7 +60,17 @@ def batch(): for i in range(0,10000): if i % 1000 : launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text=('Starting... ' + str(i))) - return + + credentials = downloader.newcredentials() + + if not credentials.valid: + return False + + + for i in range(10000,20000): + if i % 1000 : launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text=('Starting... ' + str(i))) + + return True ## Main Function def umain(): @@ -69,7 +80,8 @@ def umain(): launcherWindow = ihm.launcherWindowCur try: - batch() + # EXECUTING THE UPDATE BATCH + success = batch() except Exception as e: logfile.printerr("An error occured on the thread : " + str(traceback.format_exc())) launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text=('ERROR : ' + str(e))) @@ -77,7 +89,12 @@ def umain(): launcherWindow.destroy() return 1 - launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text='Software is up-to-date !') + if success: + logfile.printdbg("Software is up-to-date !") + launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text='Software is up-to-date !') + else: + logfile.printerr("An error occured. No effective update !") + launcherWindow.mainCanvas.itemconfigure(launcherWindow.msg, text='An error occured. No effective update !') time.sleep(2) launcherWindow.destroy() return 0 @@ -87,5 +104,6 @@ def umain(): launcherWindow.destroy() sys.exit(2) return 2 - + + return