From 02acf7142ebfe389c5ce0bca1684f39d1430d225 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sun, 31 Mar 2013 17:41:56 +0200 Subject: [PATCH] =?UTF-8?q?[gestion/chambres=5Fvides.py]=20La=20chambre=20?= =?UTF-8?q?invalide=20est=20maintenant=20unee=20blacklist,=20donc=20on=20n?= =?UTF-8?q?'ignore=20pas=20les=20machines=20blacklist=C3=A9es.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gestion/chambres_vides.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/gestion/chambres_vides.py b/gestion/chambres_vides.py index f3a6eeda..dd3d7631 100755 --- a/gestion/chambres_vides.py +++ b/gestion/chambres_vides.py @@ -1,7 +1,13 @@ #!/usr/bin/env python # -*- encoding: utf-8 -*- +""" Pour détecter les gens en chambre invalide, les prévenir, et supprimer leurs machines + en l'absence de réponse. Récupérer des IPs, c'est cool.""" + # Codé par b2moo, commenté par 20-100, cr{itiqu|on}é par Nit +# +# +# import datetime import time @@ -10,13 +16,22 @@ import ldap_crans conn = ldap_crans.CransLdap() import sys +#: envoyer un mail à chaque adhérent concerné sendmails = False if "--mail-all" in sys.argv: sendmails = True import email.Header -import os +#: Envoyer un mail à respbats +sendmail_respbats = True +if "--no-mail" in sys.argv: + sendmail_respbats = False +DEBUG = False +if "--debug" in sys.argv: + DEBUG = True + +import os import config year = config.ann_scol delai = config.demenagement_delai @@ -46,7 +61,7 @@ for clandestin in bad_boys_e_s: delta = now - kickout_date ttl = delai*86400 - delta if ttl > 0: - if sendmails and machine_liste != []: + if sendmails and machine_liste != [] or DEBUG: # On lui envoie un mail pour le prévenir to = clandestin.mail() if not "@" in to: @@ -55,15 +70,14 @@ for clandestin in bad_boys_e_s: "chambre" : exchambre, "jours" : int(ttl/86400) + 1, "to" : to} + if DEBUG: + print mail mailer = os.popen("/usr/sbin/sendmail -t", "w") mailer.write(mail.encode("utf-8") + "\n.") mailer.close() else: for m in machine_liste: - # On n'a pas envie d'essayer de supprimer une machine qui a une blackliste - if len(m.blacklist_actif()) > 0: - continue to_print.append( (clandestin.id(), m.ip(), m.id(), m.nom()) ) m2 = conn.search('mid=%s' % m.id(),mode='w')['machine'][0] m2.delete('Adherent sans chambre valide depuis %d jours' % delai) @@ -74,7 +88,7 @@ if to_print != []: hostnamemaxsize = max([len(i[3]) for i in to_print]) template = u"| %%4s | %%-15s | %%4s | %%-%ss |\n" % (hostnamemaxsize) message = u"" - message += u"\nListe des machines supprimée pour chambre invalide depuis plus de %s jours :\n" % delai + message += u"\nListe des machines supprimées pour chambre invalide depuis plus de %s jours :\n" % delai tiret_line = u"+------+-----------------+------+-%s-+\n" % ("-" * hostnamemaxsize) message += tiret_line message += template % ("aid", " ip", "mid", (" " * (max((hostnamemaxsize-8)/2,0)) + "hostname")) @@ -86,7 +100,9 @@ if to_print != []: headers += u"Content-Type: text/plain; charset=UTF-8\n" headers += u"To: respbats@crans.org\n" mail = headers + "\n" + message - mailer = os.popen("/usr/sbin/sendmail -t", "w") - mailer.write(mail.encode("utf-8") + "\n.") - mailer.close() - + if sendmail: + mailer = os.popen("/usr/sbin/sendmail -t", "w") + mailer.write(mail.encode("utf-8") + "\n.") + mailer.close() + else: + print mail