diff --git a/cranspasswords-server.py b/cranspasswords-server.py index 713872e781808ee2beca6fad4ece1556ea183584..5695cd11f22983b99c84c6b450b5fb1a4b1407bd 100755 --- a/cranspasswords-server.py +++ b/cranspasswords-server.py @@ -10,11 +10,17 @@ import os import pwd import sys import json +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart MYUID = pwd.getpwuid(os.getuid())[0] if MYUID == 'root': MYUID = os.environ['SUDO_USER'] +CRANSP_MAIL = "root@crans.org" +DEST_MAIL = "dstan@crans.org" + KEYS = { "aza-vallina": ("Damien.Aza-Vallina@crans.org", None), "dandrimont": ("nicolas.dandrimont@crans.org", "66475AAF"), @@ -31,6 +37,7 @@ KEYS = { "becue": ("becue@crans.org", "194974E2"), "dstan": ("daniel.stan@crans.org", "6E1C820B"), "samir": ("samir@crans.org", "41C2B76B"), + "boilard": ("boilard@crans.org", "C39EB6F4"), "cauderlier": ("cauderlier@crans.org",None), #Méchant pas beau "maioli": ("maioli@crans.org",None) #Bis (maybe 9E5026E8) } @@ -52,13 +59,15 @@ NOUNOUS=RTC+[ "parret-freaud", "cauderlier", "maioli", - "samir" + "samir", + "boilard" ] +CA=["becue","dstan","boilard"] + ROLES = { - "bureau": [], - "ca": [], - "rtc": RTC, + "ca": CA, + "ca-w": CA, "nounous": NOUNOUS, "nounous-w": NOUNOUS #Or maybe RTC ? } @@ -132,29 +141,60 @@ def putfile(filename): return False try: - oldroles = getfile(filename)['roles'] + old = getfile(filename) + oldroles = old['roles'] except TypeError: + old = "//Nouveau fichier" pass else: if not validate(oldroles,'w'): return False + notification("Modification de %s" % filename,\ + "Le fichier %s a été modifié par %s." %\ + (filename,MYUID),filename,str(old)) + + writefile(filepath, json.dumps({'roles': roles, 'contents': contents})) return True def rmfile(filename): """Supprime le fichier filename après avoir vérifié les droits sur le fichier""" try: - roles = getfile(filename)['roles'] + old = getfile(filename) + roles = old['roles'] except TypeError: return True else: if validate(roles,'w'): + notification("Suppression de %s" % filename,\ + "Le fichier %s a été supprimé par %s." %\ + (filename,MYUID),filename,str(old)) os.remove(getpath(filename)) else: return False return True +def notification(subject,corps,fname,old): + conn = smtplib.SMTP('localhost') + frommail = CRANSP_MAIL + tomail = DEST_MAIL + msg = MIMEMultipart(_charset="utf-8") + msg['Subject'] = subject + # me == the sender's email address + # family = the list of all recipients' email addresses + msg['From'] = "cranspasswords <%s>" % CRANSP_MAIL + msg['To'] = DEST_MAIL + msg.preamble = "cranspasswords report" + info = MIMEText(corps + #"\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) + conn.sendmail(frommail,tomail,msg.as_string()) + conn.quit() + if __name__ == "__main__": argv = sys.argv[1:] if len(argv) not in [1, 2]: