diff --git a/gestion/config/mails/upload.py b/gestion/config/mails/upload.py index 498c92c4..43d646eb 100644 --- a/gestion/config/mails/upload.py +++ b/gestion/config/mails/upload.py @@ -1,13 +1,9 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from email.header import Header - -import sys -sys.path.append("/usr/scripts") -from utils.sendmail import Message - -""" Templates des mails envoyés en cas d'upload. """ +""" Templates des mails envoyés en cas d'upload. +TODO: à migrer dans /usr/scripts/gestion/mail/templates +""" #: Envoyé à la ML disconnect@ en cas de dépassement de la limite soft (désactivé) message_disconnect_soft = u"""From: %(from)s @@ -21,32 +17,6 @@ Content-Type: text/plain; charset="utf-8" --\u0020 Message créé par deconnexion.py""" -class Message_disconnect_hard(Message): - """Envoyé à la ML disconnect@ en cas de dépassement de la limite hard""" - template = u"""%(proprio)s (%(id)s) a été limité en débit montant du fait d'un -upload excessif (%(upload)s Mio). - -Ses machines ont été aperçues pour la dernière fois à ces endroits : -%(mdc)s - -La chambre de l'adhérent est %(chambre)s. - -analyse.py devrait bientôt avoir généré un fichier que vous pourrez lui envoyer en cas de demande. Le fichier sera dans le dossier /usr/scripts/var/analyse/. - -Test: url de reconnexion: %(reco_url)s. - ---\u0020 -Message créé par deconnexion.py - -""" + (" __1__"+10*" "+3*"%"+","+7*"%"+"\n \_._/"+11*" "+",'%% \\-*"+7*"%"+"\n ( ^ )"+5*" "+";"+5*"%"+"*% _%%%%\"\n"+2*" "+"`='|\."+4*" "+",%%%"+7*" "+"\(_.*%%%%.\n"+4*" "+"/ |"+4*" "+"% *%%, ,"+4*"%"+"*("+4*" "+"'\n (/ | %^"+5*" "+",*%%% )\|,%%*%,_\n |__, |"+7*" "+"*%"+4*" "+"\/ #).-\"*%%*\n | |"+11*" "+"_.) ,/ *%,\n | | "+9*"_"+"/)#("+12*"_"+"\n /___| |"+25*"_"+"|\n ===").replace("%", "%%") - - def __init__(self, emetteur, destinataires, proprio, id, upload, mdc, chambre, reco_url): - self.proprio = proprio - self.id, self.upload, self.mdc, self.chambre, self.reco_url = id, upload, mdc, chambre, reco_url - self.objet = u"%s a été bridé" % (proprio) - self.corps = self.template - super(Message_disconnect_hard, self).__init__(emetteur, destinataires, self.objet, self.corps) - #: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois message_disconnect_multi = u"""From: %(from)s To: %(to)s diff --git a/gestion/mail/template/upload_notif/From/fr b/gestion/mail/template/upload_notif/From/fr new file mode 100644 index 00000000..f75e6e37 --- /dev/null +++ b/gestion/mail/template/upload_notif/From/fr @@ -0,0 +1 @@ +{{from}} diff --git a/gestion/mail/template/upload_notif/README b/gestion/mail/template/upload_notif/README new file mode 100644 index 00000000..90f85867 --- /dev/null +++ b/gestion/mail/template/upload_notif/README @@ -0,0 +1 @@ +Envoyé sur disconnect lors d'une déconnexion (bridage) pour upload diff --git a/gestion/mail/template/upload_notif/Subject/fr b/gestion/mail/template/upload_notif/Subject/fr new file mode 100644 index 00000000..0ad2789b --- /dev/null +++ b/gestion/mail/template/upload_notif/Subject/fr @@ -0,0 +1 @@ +{{ proprio }} a été bridé diff --git a/gestion/mail/template/upload_notif/To/fr b/gestion/mail/template/upload_notif/To/fr new file mode 100644 index 00000000..e6199f75 --- /dev/null +++ b/gestion/mail/template/upload_notif/To/fr @@ -0,0 +1 @@ +{{to}} diff --git a/gestion/mail/template/upload_notif/X-Mailer/fr b/gestion/mail/template/upload_notif/X-Mailer/fr new file mode 100644 index 00000000..f5d9c869 --- /dev/null +++ b/gestion/mail/template/upload_notif/X-Mailer/fr @@ -0,0 +1 @@ +{{ mailer }} diff --git a/gestion/mail/template/upload_notif/body/fr b/gestion/mail/template/upload_notif/body/fr new file mode 100644 index 00000000..f9938cf5 --- /dev/null +++ b/gestion/mail/template/upload_notif/body/fr @@ -0,0 +1,21 @@ +{{proprio}} ({{id}}) a été limité en débit montant du fait d'un +upload excessif ({{upload}} Mio). + +Ses machines ont été aperçues pour la dernière fois à ces endroits : +{{mdc}} + +La chambre de l'adhérent est {{chambre}}. + +analyse.py devrait bientôt avoir généré un fichier que vous pourrez lui envoyer +en cas de demande. Le fichier sera dans le dossier /usr/scripts/var/analyse/. + +{% if reco_url %} +Une url de reconnexion a été envoyée à l'adhérent : +{{ reco_url }} +{% else %} +Une erreur a eu lieu lors de la génération de l'url, plus d'information : +{{ reco_url_error }} +{% endif %} + +-- +Système de déconnexion, {{ mailer }} diff --git a/surveillance/deconnexion.py b/surveillance/deconnexion.py index 2efa5aaa..bc658a9d 100755 --- a/surveillance/deconnexion.py +++ b/surveillance/deconnexion.py @@ -19,8 +19,8 @@ import smtplib from time import * from gestion.config import NETs, plage_ens, prefix -from gestion.config import upload as config_upload -import gestion.config.mails.upload as upload +from gestion.config import upload as upload +import gestion.config.mails.upload as mails_upload from gestion.ldap_crans import crans_ldap from gestion.ldap_crans import MachineFixe @@ -176,12 +176,44 @@ for elupload, eltype, elid in uploadeurs: mdcf = tableau(macs_dates_chambres, ('mac', 'date', 'chambre'), (20, 21, 7), ('c', 'c', 'c')) + # Début de remplissage du mail + ############################## + if eltype == "club": + theid = "cid=" + else: + theid = "aid=" + theid += proprio.id() + + # Test: validation_url('upload') + try: + data = {'dn': theid, + 'blid': len(proprio.blacklist())} + reco_url = mail_module.validation_url('upload', data) + reco_url_error = "" + except Exception as e: + reco_url_error = "[[erreur de génération: %r]]" % e + reco_url = "" + + mail_data = { + 'from': upload.expediteur, + 'to': proprio.email(), + 'upload': "%.2f" % (elupload,), + 'proprio': proprio.Nom(), + 'lang_info':'English version below', + 'mdc': mdcf, + 'chambre': proprio.chbre(), + 'id': theid, + 'reco_url': reco_url, + 'reco_url_error': reco_url_error, + } + # On sanctionne ############### debut = int(time()) fin = debut + 24*3600 orig = strftime("%Y/%m/%d %H:%M:%S", localtime(debut - 86400)) end = strftime("%Y/%m/%d %H:%M:%S", localtime(debut)) + try: proprio.blacklist([debut, fin, 'autodisc_upload', "Déconn auto. %s Mo" % elupload]) proprio.save() @@ -195,34 +227,16 @@ for elupload, eltype, elid in uploadeurs: # On envoie un mail à l'adhérent ################################ - if eltype == "club": - theid = "cid=" - else: - theid = "aid=" - theid += proprio.id() - - # Test: validation_url('upload') - try: - data = {'dn': theid, - 'blid': len(proprio.blacklist())-1} - reco_url = mail_module.validation_url('upload', data) - except Exception as e: - reco_url = "[[erreur de génération: %r]]" % e - mail = connectsmtp() - corps = mail_module.generate('upload_hard', {'from': upload.expediteur, 'to': proprio.email(), 'upload': "%.2f" % (elupload,), 'proprio': proprio.Nom(), 'lang_info':'English version below'}).as_string() + corps = mail_module.generate('upload_hard', mail_data).as_string() mail.sendmail(upload.expediteur, proprio.email(), corps) # On envoie un mail à disconnect ################################ - if upload.disconnect_mail_hard: - mail_disconnect_hard = mails_upload.Message_disconnect_hard(upload.expediteur, - upload.expediteur, proprio=proprio.Nom(), id=theid, - upload="%.2f" % (elupload,), mdc=mdcf, chambre=proprio.chbre(), - reco_url=reco_url, - ) - mail_disconnect_hard.send() + mail_data['to'] = upload.expediteur + corps = mail_module.generate('upload_notif', mail_data).as_string() + mail.sendmail(upload.expediteur, upload.expediteur, corps) # Vérification du nombre de déconnexions #########################################