
Ignore-this: 7db733c3d54d00b432b875a29c5128f0 darcs-hash:20120920012717-2c9c1-e67265e341e5579711210a3df5bdc3327ceff0c0.gz
69 lines
2.5 KiB
Python
Executable file
69 lines
2.5 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
# Codé par b2moo, commenté par 20-100, cr{itiqu|on}é par Nit
|
|
|
|
import datetime
|
|
import time
|
|
import re
|
|
import ldap_crans
|
|
conn = ldap_crans.CransLdap()
|
|
|
|
import sys
|
|
import os
|
|
|
|
import config
|
|
year = config.ann_scol
|
|
delai = 0 # jours avant d'être considéré déserteur
|
|
|
|
# On récupère ceux qui n'ont pas payé cette année
|
|
bad_boys_e_s = conn.search('chbre=????&paiement=%d&paiement!=%d' % (year-1,year))['adherent']
|
|
|
|
timeout = time.time() - 3600*24*delai
|
|
|
|
|
|
header_printed = False
|
|
to_print = []
|
|
for clandestin in bad_boys_e_s:
|
|
# On cherche la dernière fois qu'il s'est retrouvé en chambre ????
|
|
for l in clandestin.historique():
|
|
# On récupère la date du dernier changement de chambre
|
|
# (l'historique est enregistré par ordre chronologique)
|
|
x = re.match("(.*),.* : chbre \(.*-> \?\?\?\?\)",l)
|
|
if x <> None:
|
|
d = x.group(1)
|
|
|
|
# On lui accorde un délai
|
|
if timeout < time.mktime(time.strptime(d,'%d/%m/%Y %H:%M')):
|
|
continue
|
|
|
|
for m in clandestin.machines():
|
|
# 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)
|
|
|
|
if to_print != []:
|
|
# Il s'est passé quelque chose, donc on envoie un mail
|
|
# On regarde le plus grand hostname
|
|
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
|
|
tiret_line = u"+------+-----------------+------+-%s-+\n" % ("-" * hostnamemaxsize)
|
|
message += tiret_line
|
|
message += template % ("aid", " ip", "mid", (" " * (max((hostnamemaxsize-8)/2,0)) + "hostname"))
|
|
message += tiret_line
|
|
for aid, ip, mid, hostname in to_print:
|
|
message += template % (aid, ip, mid, hostname)
|
|
message += tiret_line
|
|
headers = u"From: respbats@crans.org\nSubject: Machines supprimées pour chambre invalide\n"
|
|
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()
|
|
|