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``"""