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,9 +255,19 @@ if veroles:
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
infectes = curseur.fetchall()
|
infectes = curseur.fetchall()
|
||||||
# Blacklistage
|
# 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()
|
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 (auto)"])
|
proprio.blacklist(["%d/%d/%d %d:%d" % (debut[2],debut[1],debut[0],debut[3],debut[4]),'-','virus',hostname])
|
||||||
proprio.save()
|
proprio.save()
|
||||||
|
|
||||||
|
|
||||||
|
@ -283,10 +307,11 @@ 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
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
|
@ -304,6 +329,9 @@ for i in range(1,len(infectes)):
|
||||||
# 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]
|
||||||
|
# si la machine n'est pas online, on ne reconnecte pas
|
||||||
|
if not machine_online(machine) :
|
||||||
|
continue
|
||||||
proprio = machine.proprietaire()
|
proprio = machine.proprietaire()
|
||||||
bl = proprio.blacklist()
|
bl = proprio.blacklist()
|
||||||
hostname = machine.nom()
|
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
|
# En prenant en compte le fait que d'autres lignes de blackliste
|
||||||
# ont pu s'ajouter.
|
# ont pu s'ajouter.
|
||||||
for ligne in bl:
|
for ligne in bl:
|
||||||
if ',-,virus,' in ligne:
|
if ',-,virus,%s'%hostname in ligne:
|
||||||
liste=ligne.split(',')
|
liste=ligne.split(',')
|
||||||
argument=[liste[0],'now',liste[2],liste[3]]
|
argument=[liste[0],'now',liste[2],liste[3]]
|
||||||
print argument,IP
|
print argument,IP
|
||||||
|
@ -321,6 +349,7 @@ for i in range(1,len(infectes)):
|
||||||
requete="DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
requete="DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
||||||
curseur.execute(requete)
|
curseur.execute(requete)
|
||||||
|
|
||||||
|
|
||||||
# Gestion du P2P :
|
# Gestion du P2P :
|
||||||
##################
|
##################
|
||||||
# Dans le table virus on sélectionne les ip_src qui appartiennent au reseau
|
# 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