From 5b8b19fe19264c61f74dd88dc3ac6a9a2bca81d3 Mon Sep 17 00:00:00 2001 From: Charlie Jacomme Date: Sun, 23 Apr 2017 18:26:28 +0200 Subject: [PATCH] [server] Ajout d'une fonction de restoration des fichiers corrompus --- server.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/server.py b/server.py index 0ec29d6..a9740f4 100755 --- a/server.py +++ b/server.py @@ -157,6 +157,37 @@ def listfiles(): files[fname] = file_dict["roles"] return files +@server_command('restorefiles') +def restorefiles(): + """Si un fichier a été corrompu, on restore son dernier backup valide""" + os.chdir(serverconfig.STORE) + + filenames = glob.glob('*.json') + files = {} + for filename in filenames: + file_dict = json.loads(open(filename).read()) + if not ('-----BEGIN PGP MESSAGE-----' in file_dict["contents"]): + fname = filename[:-5].decode('utf-8') + with open(fname+'.bak') as f: + line = f.readline() + backup = '' + while not (line==''): + try: + line_dict = json.loads(line) + if ('-----BEGIN PGP MESSAGE-----' in line_dict["contents"]): + backup = line + except: + pass + line = f.readline() + if not (backup == ''): + files[fname] = 'restored' + with open(fname+'.json','w') as f2: + f2.write(backup) + else: + files[fname] = 'not restored' + return files + + @server_command('getfile') def getfile(filename): """Récupère le fichier ``filename``"""