diff --git a/cranspasswords-server.py b/cranspasswords-server.py index 5695cd11f22983b99c84c6b450b5fb1a4b1407bd..6b3d03a36f243287f685baee399feee516357985 100755 --- a/cranspasswords-server.py +++ b/cranspasswords-server.py @@ -11,6 +11,7 @@ import pwd import sys import json import smtplib +import datetime from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart @@ -83,9 +84,9 @@ def validate(roles,mode='r'): return True return False -def getpath(filename): +def getpath(filename,backup=False): """Récupère le chemin du fichier `filename'""" - return os.path.join(STORE, '%s.json' % filename) + return os.path.join(STORE, '%s.%s' % (filename,'bak' if backup else 'json')) def writefile(filename, contents): """Écrit le fichier de manière sécure""" @@ -144,7 +145,7 @@ def putfile(filename): old = getfile(filename) oldroles = old['roles'] except TypeError: - old = "//Nouveau fichier" + old = "[Création du fichier]" pass else: if not validate(oldroles,'w'): @@ -152,7 +153,7 @@ def putfile(filename): notification("Modification de %s" % filename,\ "Le fichier %s a été modifié par %s." %\ - (filename,MYUID),filename,str(old)) + (filename,MYUID),filename,old) writefile(filepath, json.dumps({'roles': roles, 'contents': contents})) @@ -169,13 +170,20 @@ def rmfile(filename): if validate(roles,'w'): notification("Suppression de %s" % filename,\ "Le fichier %s a été supprimé par %s." %\ - (filename,MYUID),filename,str(old)) + (filename,MYUID),filename,old) os.remove(getpath(filename)) else: return False return True def notification(subject,corps,fname,old): + back = open(getpath(fname,True),'a') + back.write(json.dumps(old)) + back.write('\n') + back.write('* %s: %s\n' % (str(datetime.datetime.now()),corps)) + back.close() + + # Puis envoi du message conn = smtplib.SMTP('localhost') frommail = CRANSP_MAIL tomail = DEST_MAIL @@ -186,12 +194,14 @@ def notification(subject,corps,fname,old): msg['From'] = "cranspasswords <%s>" % CRANSP_MAIL msg['To'] = DEST_MAIL msg.preamble = "cranspasswords report" - info = MIMEText(corps + #"\nCi-joint l'ancien fichier." + + info = MIMEText(corps + + "\nLa précédente version a été sauvegardée" + + #"\nCi-joint l'ancien fichier." + "\n\n-- \nCranspasswords.py",_charset="utf-8") msg.attach(info) #old = MIMEText(old) #old.add_header('Content-Disposition', 'attachment', filename=fname) - #msg.attach(old) + #msg.attach(str(old)) conn.sendmail(frommail,tomail,msg.as_string()) conn.quit()