En cas de deconnexion pour virus, on reedite la blackliste si l'adherent a u
npassif darcs-hash:20051012184914-6d78a-d18ff92fec3c28bf12858ce0e3a5842e3c5ed52f.gz
This commit is contained in:
parent
eccb55c441
commit
b7c3587b7b
1 changed files with 56 additions and 27 deletions
|
@ -15,6 +15,19 @@ from ldap_crans import crans_ldap, crans, invite, base_classes_crans
|
||||||
from time import *
|
from time import *
|
||||||
|
|
||||||
|
|
||||||
|
# quelques fonctions
|
||||||
|
####################
|
||||||
|
|
||||||
|
def machine_online(machine) :
|
||||||
|
"""
|
||||||
|
Retourne True si la machine est connectée au réseau et False si elle ne l'est pas
|
||||||
|
"""
|
||||||
|
# les wifi sont toujours online
|
||||||
|
if machine.ipsec() :
|
||||||
|
return True
|
||||||
|
# arping pour les fixes
|
||||||
|
return not commands.getstatusoutput('/usr/sbin/arping -c 3 %s' % machine.mac())[0]
|
||||||
|
|
||||||
# Connections :
|
# Connections :
|
||||||
###############
|
###############
|
||||||
pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans')
|
pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans')
|
||||||
|
@ -234,6 +247,7 @@ if veroles:
|
||||||
machine = ldap.search('ipHostNumber=%s' % ip,'w' )['machine'][0]
|
machine = ldap.search('ipHostNumber=%s' % ip,'w' )['machine'][0]
|
||||||
hostname = machine.nom()
|
hostname = machine.nom()
|
||||||
proprio = machine.proprietaire()
|
proprio = machine.proprietaire()
|
||||||
|
bl = proprio.blacklist()
|
||||||
# Inscription dans la table des infectes
|
# Inscription dans la table des infectes
|
||||||
requete="INSERT INTO avertis_virus (ip_crans,date) VALUES ('%s','now')" % ip1
|
requete="INSERT INTO avertis_virus (ip_crans,date) VALUES ('%s','now')" % ip1
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
|
@ -241,10 +255,20 @@ if veroles:
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
infectes = curseur.fetchall()
|
infectes = curseur.fetchall()
|
||||||
# Blacklistage
|
# Blacklistage
|
||||||
date = time()
|
for ligne in bl:
|
||||||
debut = localtime(date)
|
# On réédite si possible les lignes existantes pour ne pas charger la blackliste
|
||||||
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',"Virus (auto)"])
|
if ',virus,' in ligne :
|
||||||
proprio.save()
|
liste=ligne.split(',')
|
||||||
|
argument=['now','-',virus,hostname]
|
||||||
|
print argument,IP
|
||||||
|
index = bl.index(ligne)
|
||||||
|
proprio.blacklist((index,argument))
|
||||||
|
proprio.save()
|
||||||
|
else :
|
||||||
|
date = time()
|
||||||
|
debut = localtime(date)
|
||||||
|
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',hostname])
|
||||||
|
proprio.save()
|
||||||
|
|
||||||
|
|
||||||
# Flood
|
# Flood
|
||||||
|
@ -283,8 +307,9 @@ if veroles:
|
||||||
# Blacklistage
|
# Blacklistage
|
||||||
date = time()
|
date = time()
|
||||||
debut = localtime(date)
|
debut = localtime(date)
|
||||||
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',"Virus_flood (auto)"])
|
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',hostname)
|
||||||
proprio.save()
|
proprio.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Reconnexion si le virus a disparu
|
# Reconnexion si le virus a disparu
|
||||||
|
@ -302,24 +327,28 @@ for i in range(1,len(infectes)):
|
||||||
curseur.execute(requete2)
|
curseur.execute(requete2)
|
||||||
nb_flood = curseur.fetchall()
|
nb_flood = curseur.fetchall()
|
||||||
# On traite que les IP qui sont descendues en dessoys des seuils
|
# On traite que les IP qui sont descendues en dessoys des seuils
|
||||||
if nb_virus[0][0] < virus.virus and nb_flood[0][0] < virus.flood:
|
if nb_virus[0][0] < virus.virus and nb_flood[0][0] < virus.flood :
|
||||||
machine = ldap.search('ipHostNumber=%s' % IP,'w' )['machine'][0]
|
machine = ldap.search('ipHostNumber=%s' % IP,'w' )['machine'][0]
|
||||||
proprio = machine.proprietaire()
|
# si la machine n'est pas online, on ne reconnecte pas
|
||||||
bl = proprio.blacklist()
|
if not machine_online(machine) :
|
||||||
hostname = machine.nom()
|
continue
|
||||||
# On stoppe la sanction pour une ligne existante de la blackliste
|
proprio = machine.proprietaire()
|
||||||
# En prenant en compte le fait que d'autres lignes de blackliste
|
bl = proprio.blacklist()
|
||||||
# ont pu s'ajouter.
|
hostname = machine.nom()
|
||||||
for ligne in bl:
|
# On stoppe la sanction pour une ligne existante de la blackliste
|
||||||
if ',-,virus,' in ligne:
|
# En prenant en compte le fait que d'autres lignes de blackliste
|
||||||
liste=ligne.split(',')
|
# ont pu s'ajouter.
|
||||||
argument=[liste[0],'now',liste[2],liste[3]]
|
for ligne in bl:
|
||||||
print argument,IP
|
if ',-,virus,%s'%hostname in ligne:
|
||||||
index = bl.index(ligne)
|
liste=ligne.split(',')
|
||||||
proprio.blacklist((index,argument))
|
argument=[liste[0],'now',liste[2],liste[3]]
|
||||||
proprio.save()
|
print argument,IP
|
||||||
requete="DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
index = bl.index(ligne)
|
||||||
curseur.execute(requete)
|
proprio.blacklist((index,argument))
|
||||||
|
proprio.save()
|
||||||
|
requete="DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
||||||
|
curseur.execute(requete)
|
||||||
|
|
||||||
|
|
||||||
# Gestion du P2P :
|
# Gestion du P2P :
|
||||||
##################
|
##################
|
||||||
|
@ -353,7 +382,7 @@ if pair :
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
protocole = curseur.fetchall()
|
protocole = curseur.fetchall()
|
||||||
protocole=protocole[0][0]
|
protocole=protocole[0][0]
|
||||||
corps = p2p.avertissement % { 'From': upload.expediteur,
|
corps = p2p.avertissement % { 'From': upload.expediteur,
|
||||||
'To': upload.expediteur,
|
'To': upload.expediteur,
|
||||||
'protocole': protocole,
|
'protocole': protocole,
|
||||||
'hostname':hostname}
|
'hostname':hostname}
|
||||||
|
@ -371,7 +400,7 @@ if pair :
|
||||||
# 7 jours
|
# 7 jours
|
||||||
fin = localtime(date+60*60*24*7)
|
fin = localtime(date+60*60*24*7)
|
||||||
# proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),"%d/%d/%d %d:%d" % (fin[2],fin[1],fin[0],fin[3],fin[4]),'p2p',"P2P (auto)" % protocole])
|
# proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),"%d/%d/%d %d:%d" % (fin[2],fin[1],fin[0],fin[3],fin[4]),'p2p',"P2P (auto)" % protocole])
|
||||||
# proprio.save()
|
# proprio.save()
|
||||||
mail.quit()
|
mail.quit()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue