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 *
|
||||
|
||||
|
||||
# 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 :
|
||||
###############
|
||||
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]
|
||||
hostname = machine.nom()
|
||||
proprio = machine.proprietaire()
|
||||
bl = proprio.blacklist()
|
||||
# Inscription dans la table des infectes
|
||||
requete="INSERT INTO avertis_virus (ip_crans,date) VALUES ('%s','now')" % ip1
|
||||
curseur.execute(requete)
|
||||
|
@ -241,9 +255,19 @@ if veroles:
|
|||
curseur.execute(requete)
|
||||
infectes = curseur.fetchall()
|
||||
# Blacklistage
|
||||
for ligne in bl:
|
||||
# On réédite si possible les lignes existantes pour ne pas charger la blackliste
|
||||
if ',virus,' in ligne :
|
||||
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',"Virus (auto)"])
|
||||
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',hostname])
|
||||
proprio.save()
|
||||
|
||||
|
||||
|
@ -283,10 +307,11 @@ if veroles:
|
|||
# Blacklistage
|
||||
date = time()
|
||||
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()
|
||||
|
||||
|
||||
|
||||
# Reconnexion si le virus a disparu
|
||||
###################################
|
||||
|
||||
|
@ -304,6 +329,9 @@ for i in range(1,len(infectes)):
|
|||
# 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 :
|
||||
machine = ldap.search('ipHostNumber=%s' % IP,'w' )['machine'][0]
|
||||
# si la machine n'est pas online, on ne reconnecte pas
|
||||
if not machine_online(machine) :
|
||||
continue
|
||||
proprio = machine.proprietaire()
|
||||
bl = proprio.blacklist()
|
||||
hostname = machine.nom()
|
||||
|
@ -311,7 +339,7 @@ for i in range(1,len(infectes)):
|
|||
# En prenant en compte le fait que d'autres lignes de blackliste
|
||||
# ont pu s'ajouter.
|
||||
for ligne in bl:
|
||||
if ',-,virus,' in ligne:
|
||||
if ',-,virus,%s'%hostname in ligne:
|
||||
liste=ligne.split(',')
|
||||
argument=[liste[0],'now',liste[2],liste[3]]
|
||||
print argument,IP
|
||||
|
@ -321,6 +349,7 @@ for i in range(1,len(infectes)):
|
|||
requete="DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
||||
curseur.execute(requete)
|
||||
|
||||
|
||||
# Gestion du P2P :
|
||||
##################
|
||||
# Dans le table virus on sélectionne les ip_src qui appartiennent au reseau
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue