diff --git a/gestion/config/mails/upload.py b/gestion/config/mails/upload.py index 72d0e44a..c9aaba59 100644 --- a/gestion/config/mails/upload.py +++ b/gestion/config/mails/upload.py @@ -3,6 +3,10 @@ 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. """ #: Envoyé à l'adhérent en cas de dépassement de la limite soft @@ -45,44 +49,6 @@ pas branchées sur le CRANS. Disconnect team""" % {'subject': Header('[Cr@ns] Attention !', 'utf-8')} -class Message_adherent_soft(object): - template = u"""Bonjour %%(proprio)s, - -Nous t'informons que ta (tes) machine(s) envoie(nt) une quantité -importante de données vers l'extérieur (%%(upload)s Mo en 24 heures). - -*Ce message t'est envoyé à titre informatif, il ne te sanctionne pas.* - -Il signifie que tu as envoyé plus de 300 Mo au cours des dernières 24 -heures. Cela peut venir du fait que, *par exemple*, tu essaies -d'envoyer des fichiers de grosse taille à l'extérieur de la zone -crans, ou encore que tu as fait une utilisation importante de -logiciels envoyant une très grande quantité de petites données -(vidéo-conférence par exemple). Il peut y avoir d'autres raisons. - - -Si cela continuait, et que tu dépassais la limite acceptable des 3789 -Mo sur 24 heures, ton débit serais automatiquement fortement limité pour -une durée de 24 heures. Il t'appartient donc de surveiller cela de -plus près et de faire en sorte que tes machines n'uploadent pas de -manière excessive à l'avenir. - - -Pour plus d'informations, tu peux consulter la page: -http://wiki.crans.org/VieCrans/DéconnexionPourUpload - -Si tu as des questions, contacte disconnect@crans.org - -N.B. : L'upload consiste en l'envoi de données vers des machines n'étant -pas branchées sur le CRANS. - ---\u0020 -Disconnect team""" - - def __init__(self): - self.subject = u"[Cr@ns] Attention !" - - #: Envoyé à l'adhérent en cas de dépassement de la limite hard message_hard = u"""From: %%(from)s To: %%(to)s @@ -121,13 +87,9 @@ Content-Type: text/plain; charset="utf-8" --\u0020 Message créé par deconnexion.py""" -#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard -message_disconnect_hard = u"""From: %(from)s -To: %(to)s -Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?= -Content-Type: text/plain; charset="utf-8" - -%(proprio)s (%(id)s) a été limité en débit montant du fait d'un +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 Mo). Ses machines ont été aperçues pour la dernière fois à ces endroits : @@ -136,7 +98,16 @@ Ses machines ont été aperçues pour la dernière fois à ces endroits : La chambre de l'adhérent est %(chambre)s. --\u0020 -Message créé par deconnexion.py""" +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): + self.proprio = proprio + self.id, self.upload, self.mdc, self.chambre = id, upload, mdc, chambre + 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 diff --git a/surveillance/deconnexion.py b/surveillance/deconnexion.py index d4951471..ffe3eb61 100755 --- a/surveillance/deconnexion.py +++ b/surveillance/deconnexion.py @@ -258,9 +258,8 @@ for elupload, eltype, elid in uploadeurs: theid = "cid=" else: theid = "aid=" - corps = config.mails.upload.message_disconnect_hard % {'from': upload.expediteur, 'to': upload.expediteur, 'upload': elupload, 'proprio': proprio.Nom(), 'mdc': mdcf, 'chambre': proprio.chbre(), 'id': theid + proprio.id()} - corps = corps.encode('utf-8') - mail.sendmail(upload.expediteur, upload.expediteur, corps) + mail = config.mails.upload.Message_disconnect_hard(upload.expediteur, upload.expediteur, proprio=proprio.Nom(), id=theid + proprio.id(), upload=elupload, mdc=mdcf, chambre=proprio.chbre()) + mail.send() # Vérification du nombre de déconnexions ######################################### diff --git a/utils/sendmail.py b/utils/sendmail.py index fa03782a..ca82fd92 100644 --- a/utils/sendmail.py +++ b/utils/sendmail.py @@ -43,6 +43,24 @@ def sendmail(emetteur, destinataires, objet, message, cc=[], more_headers={}, de mail = create_mail(emetteur, destinataires, objet, message, cc, more_headers) actually_sendmail(emetteur, destinataires, mail, debug) +class Message(object): + """Message pré-formaté à envoyer à un adhérent ou une ML""" + def __init__(self, emetteur, destinataires, objet, corps, cc=[], more_headers={}): + self.emetteur = emetteur + self.destinataires = destinataires + self.objet = objet + self.cc = cc + self.more_headers = more_headers + self.corps = corps % self.__dict__ + + def mail(self): + """Fabrique le mail""" + return create_mail(self.emetteur, self.destinataires, self.objet, + self.corps, self.cc, self.more_headers) + + def send(self): + """Envoie le mail""" + return actually_sendmail(self.emetteur, self.destinataires, self.mail()) if __name__ == "__main__": print "Exemple d'utilisation :"