Pour viter toute confusion future, on stocke les dates de blacklist en

nombre de secondes coules depuis Epoch.

darcs-hash:20060326040722-68412-25d9d48ded7ffc0279da4fbbeb74bdf610a33b2f.gz
This commit is contained in:
glondu 2006-03-26 06:07:22 +02:00
parent 9623054b9d
commit 230e01cc1b
3 changed files with 50 additions and 46 deletions

View file

@ -61,10 +61,14 @@ def generate_ps(sanction, proprio):
template = template.replace('~mail~', proprio.email().encode('iso8859-15'))
template = template.replace('~debut~', strftime(format_date, localtime()))
template = template.replace('~fin~', strftime(format_date, localtime(time()+14*86400)))
historique = [ bl.encode('iso-8859-15').split(',') for bl in proprio.blacklist() if bl.split(',')[2] == 'autodisc_upload' ] # filtrage des autodisc
historique = [ (strftime('%A %d %B %Y', strptime(bl[0], '%d/%m/%Y %H:%M')), bl[-1].split(' ')[-2]) for bl in historique ] # transfomation en tupple (date, upload)
historique = [ '%s & %s & Mo'%(bl[0], bl[1]) for bl in historique ] # tranformation en ligne
historique = '\\\\\n'.join(historique) # assemblage des lignes
# filtrage des autodisc
historique = [ bl.encode('iso-8859-15').split('$') for bl in proprio.blacklist() if bl.split('$')[2] == 'autodisc_upload' ]
# transfomation en tuple (date, upload)
historique = [ (strftime('%A %d %B %Y', localtime(int(bl[0]))), bl[-1].split(' ')[-2]) for bl in historique ]
# tranformation en ligne
historique = [ '%s & %s & Mo'%(bl[0], bl[1]) for bl in historique ]
# assemblage des lignes
historique = r'\\\n'.join(historique)
template = template.replace('~historique~', historique)
template = template.replace('~limitehard~', str(upload.hard))
template = template.replace('~nbadher~', str(len(ldap.search('paiement=ok')['adherent'])))
@ -219,9 +223,9 @@ for elupload, eltype, elid in uploadeurs:
# On sanctionne
###############
debut = localtime(time())
fin = localtime(time()+60*60*24)
proprio.blacklist(["%.2d/%.2d/%.4d %.2d:%.2d" % (debut[2], debut[1], debut[0], debut[3], debut[4]), "%.2d/%.2d/%.4d %.2d:%.2d" % (fin[2], fin[1], fin[0], fin[3], fin[4]), 'autodisc_upload', "Déconn auto. %s Mo" % elupload])
debut = int(time())
fin = debut + 24*3600
proprio.blacklist([debut, fin, 'autodisc_upload', "Déconn auto. %s Mo" % elupload])
proprio.save()
# On envoie un mail à l'adhérent
@ -239,7 +243,7 @@ for elupload, eltype, elid in uploadeurs:
# Vérification du nombre de déconnexions
#########################################
nb_decos = len([ x for x in proprio.blacklist() if mktime(strptime(x.split(',')[0], '%d/%m/%Y %H:%M')) > mktime(localtime())-30*24*60*60 and x.split(',')[2] == 'autodisc_upload' ])
nb_decos = len([ x for x in proprio.blacklist() if int(x.split('$')[0]) > time()-30*24*3600 and x.split('$')[2] == 'autodisc_upload' ])
if nb_decos >= 3:
# Génération du fichier postscript
@ -329,7 +333,7 @@ for ip, nombre in infectes:
index = [blacklist.index(x) for x in blacklist if 'virus' in x ]
if index:
# L'adhérent est déjà blacklisté
proprio.blacklist(( index[0] , ['now', '-', 'virus', hostname] ))
proprio.blacklist((index[0], ['now', '-', 'virus', hostname]))
proprio.save()
else:
# L'adhérent n'est pas encore blacklisté
@ -367,10 +371,10 @@ for ip, nombre in infectes:
curseur.execute(requete)
# On récupère les index des lignes de bl où il y a marqué virus
index = [blacklist.index(x) for x in blacklist if 'virus' in x ]
index = [ blacklist.index(x) for x in blacklist if 'virus' in x ]
if index:
# L'adhérent est déjà blacklisté
proprio.blacklist(( index[0] , ['now', '-', 'virus', hostname] ))
proprio.blacklist((index[0], ['now', '-', 'virus', hostname]))
proprio.save()
else:
# L'adhérent n'est pas encore blacklisté
@ -410,8 +414,8 @@ for IP in infectes:
# En prenant en compte le fait que d'autres lignes de blackliste
# ont pu s'ajouter.
for ligne in bl:
if ',-,virus,%s'%hostname in ligne:
liste = ligne.split(',')
if '$-$virus$%s' % hostname in ligne:
liste = ligne.split('$')
argument = [liste[0], 'now', liste[2], liste[3]]
index = bl.index(ligne)
proprio.blacklist((index, argument))
@ -480,7 +484,7 @@ for ip, id_p2p, nombre in fraudeurs:
# Vérification du nombre de déconnexions
#########################################
nb_decos = len([ x for x in proprio.blacklist() if mktime(strptime(x.split(',')[0], '%d/%m/%Y %H:%M')) > mktime(localtime())-365*24*60*60 and x.split(',')[2] == 'autodisc_p2p' ])
nb_decos = len([ x for x in proprio.blacklist() if int(x.split('$')[0]) > time()-365*24*3600 and x.split('$')[2] == 'autodisc_p2p' ])
if nb_decos >= 3:
fichier_ps = generate_ps('p2p', proprio)
@ -494,6 +498,6 @@ for ip, id_p2p, nombre in fraudeurs:
mail.sendmail(p2p.expediteur, p2p.expediteur, corps)
# L'adhérent n'est pas encore blacklisté
fin = localtime(time()+60*60*24)
proprio.blacklist(['now', "%.2d/%.2d/%.4d %.2d:%.2d" % (fin[2], fin[1], fin[0], fin[3], fin[4]), 'autodisc_p2p', hostname])
fin = int(time()) + 24*3600
proprio.blacklist(['now', fin, 'autodisc_p2p', hostname])
proprio.save()