deconnexion.py: code mort et obsolète
This commit is contained in:
parent
00f44f0d17
commit
5446bb8142
1 changed files with 2 additions and 161 deletions
|
@ -28,9 +28,7 @@ from ldap_crans import crans_ldap
|
||||||
from ldap_crans import MachineWifi
|
from ldap_crans import MachineWifi
|
||||||
from ldap_crans import MachineFixe
|
from ldap_crans import MachineFixe
|
||||||
from time import *
|
from time import *
|
||||||
#import locale
|
|
||||||
#locale.setlocale(locale.LC_TIME, 'fr_FR')
|
|
||||||
import lock
|
|
||||||
sys.path.append('/usr/scripts/surveillance/fiche_deconnexion')
|
sys.path.append('/usr/scripts/surveillance/fiche_deconnexion')
|
||||||
from generate import generate_ps
|
from generate import generate_ps
|
||||||
from affich_tools import tableau
|
from affich_tools import tableau
|
||||||
|
@ -41,19 +39,6 @@ import mail as mail_module
|
||||||
# ldap
|
# ldap
|
||||||
ldap = crans_ldap()
|
ldap = crans_ldap()
|
||||||
|
|
||||||
# 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 machines wifi sont toujours online
|
|
||||||
if isinstance(machine, MachineWifi):
|
|
||||||
return True
|
|
||||||
# Arping pour les fixes
|
|
||||||
return not commands.getstatusoutput('/usr/sbin/arping -c 3 %s' % machine.mac())[0]
|
|
||||||
|
|
||||||
# Variables utiles
|
# Variables utiles
|
||||||
##################
|
##################
|
||||||
|
|
||||||
|
@ -82,6 +67,7 @@ def connectsmtp():
|
||||||
return mail
|
return mail
|
||||||
|
|
||||||
# Pour trouver la chambre où était la machine que l'on déconnecte.
|
# Pour trouver la chambre où était la machine que l'on déconnecte.
|
||||||
|
# TODO: mettre ça dans annuaires_pg
|
||||||
def reperage_chambre(mac):
|
def reperage_chambre(mac):
|
||||||
pgsql = psycopg2.connect(host="thot.adm.crans.org", database='mac_prises', user='crans')
|
pgsql = psycopg2.connect(host="thot.adm.crans.org", database='mac_prises', user='crans')
|
||||||
# A priori, pas besoin, on ne fait que des select
|
# A priori, pas besoin, on ne fait que des select
|
||||||
|
@ -290,148 +276,3 @@ for elupload, eltype, elid in uploadeurs:
|
||||||
curseur.execute("DELETE FROM avertis_upload_hard WHERE date < timestamp 'now' - interval '85200 seconds'") # 23h et 40min pour prolonger les blacklists toujours au dessus de la limite
|
curseur.execute("DELETE FROM avertis_upload_hard WHERE date < timestamp 'now' - interval '85200 seconds'") # 23h et 40min pour prolonger les blacklists toujours au dessus de la limite
|
||||||
curseur.execute("DELETE FROM avertis_upload_soft WHERE date < timestamp 'now' - interval '1 day'")
|
curseur.execute("DELETE FROM avertis_upload_soft WHERE date < timestamp 'now' - interval '1 day'")
|
||||||
|
|
||||||
################################################################################
|
|
||||||
## Détection de l'existence de virus #
|
|
||||||
#################################################################################
|
|
||||||
#
|
|
||||||
## Dans la table virus on sélectionne les ip_src qui appartiennent au réseau
|
|
||||||
#requete = "SELECT ip_src,count(ip_src) FROM virus WHERE %s and date > timestamp 'now' - interval '1 hour' group by ip_src" % ip_src_in_crans
|
|
||||||
#curseur.execute(requete)
|
|
||||||
#infectes = curseur.fetchall()
|
|
||||||
#
|
|
||||||
## Récupération des infectés pour ne pas les reblacklister
|
|
||||||
#requete = "SELECT ip_crans FROM avertis_virus"
|
|
||||||
#curseur.execute(requete)
|
|
||||||
#infectes_old = curseur.fetchall()
|
|
||||||
#
|
|
||||||
#for ip, nombre in infectes:
|
|
||||||
#
|
|
||||||
# # Si on est en dessous du seuil, on laisse passer
|
|
||||||
# if nombre < virus.virus:
|
|
||||||
# continue
|
|
||||||
#
|
|
||||||
# # Si on est déja avertis, on laisse passer
|
|
||||||
# if (ip) in infectes_old:
|
|
||||||
# continue
|
|
||||||
#
|
|
||||||
# # Lecture des infos de ldap
|
|
||||||
# machine = ldap.search('ipHostNumber=%s' % ip, 'w' )['machine'][0]
|
|
||||||
# hostname = machine.nom()
|
|
||||||
# proprio = machine.proprietaire()
|
|
||||||
# blacklist = proprio.blacklist()
|
|
||||||
#
|
|
||||||
# # Inscription dans la table des infectés
|
|
||||||
# requete = "INSERT INTO avertis_virus (ip_crans,date) VALUES ('%s','now')" % ip
|
|
||||||
# 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 'autodisc_virus' in x ]
|
|
||||||
# if index:
|
|
||||||
# # L'adhérent est déjà blacklisté
|
|
||||||
# proprio.blacklist((index[0], ['now', '-', 'autodisc_virus', hostname]))
|
|
||||||
# proprio.save()
|
|
||||||
# else:
|
|
||||||
# # L'adhérent n'est pas encore blacklisté
|
|
||||||
# proprio.blacklist(['now', '-', 'autodisc_virus', hostname])
|
|
||||||
# proprio.save()
|
|
||||||
#
|
|
||||||
#################################################################################
|
|
||||||
## Détection des virus qui floodent #
|
|
||||||
#################################################################################
|
|
||||||
#
|
|
||||||
## Dans la table virus on sélectionne les ip_src qui appartiennent au réseau
|
|
||||||
#requete = "SELECT ip_src,count(ip_src) FROM flood WHERE %s and date > timestamp 'now' - interval '1 hour' GROUP BY ip_src" % ip_src_in_crans
|
|
||||||
#curseur.execute(requete)
|
|
||||||
#infectes = curseur.fetchall()
|
|
||||||
#
|
|
||||||
## Récupération des infectés pour ne pas les reblacklister
|
|
||||||
#requete = "SELECT ip_crans FROM avertis_virus"
|
|
||||||
#curseur.execute(requete)
|
|
||||||
#infectes_old = curseur.fetchall()
|
|
||||||
#
|
|
||||||
#for ip, nombre in infectes:
|
|
||||||
#
|
|
||||||
# # Si on est en dessous du seuil, ou qu'on est déjà averti, on laisse passer
|
|
||||||
# if nombre < virus.flood or (ip) in infectes_old:
|
|
||||||
# continue
|
|
||||||
#
|
|
||||||
# # Lecture des infos de ldap
|
|
||||||
# try :
|
|
||||||
# machine = ldap.search('ipHostNumber=%s' % ip, 'w' )['machine'][0]
|
|
||||||
# except IndexError :
|
|
||||||
# # Dans le cas où l'ip détectée n'est pas enregistrée
|
|
||||||
# print "La machine avec l'ip %s n'est pas declaree !" % ip
|
|
||||||
# continue
|
|
||||||
# hostname = machine.nom()
|
|
||||||
# proprio = machine.proprietaire()
|
|
||||||
# blacklist = proprio.blacklist()
|
|
||||||
#
|
|
||||||
# # Inscription dans la table des infectés
|
|
||||||
# requete = "INSERT INTO avertis_virus (ip_crans,date) VALUES ('%s','now')" % ip
|
|
||||||
# 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 'autodisc_virus' in x ]
|
|
||||||
# try:
|
|
||||||
# if index:
|
|
||||||
# # L'adhérent est déjà blacklisté
|
|
||||||
# proprio.blacklist((index[0], ['now', '-', 'autodisc_virus', hostname]))
|
|
||||||
# proprio.save()
|
|
||||||
# else:
|
|
||||||
# # L'adhérent n'est pas encore blacklisté
|
|
||||||
# proprio.blacklist(['now', '-', 'autodisc_virus', hostname])
|
|
||||||
# proprio.save()
|
|
||||||
# except ValueError: # On a essayé de blacklister un proporiétaire virtuel
|
|
||||||
# pass # Le message d'erreur a déjà été affiché (changer ça ?)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
## Reconnexion si le virus/flood a disparu
|
|
||||||
##########################################
|
|
||||||
#
|
|
||||||
## Dans la table avertis_virus on récupère la liste des infectés
|
|
||||||
#requete = "SELECT ip_crans FROM avertis_virus where date < timestamp 'now' - interval '1 hour'"
|
|
||||||
#curseur.execute(requete)
|
|
||||||
#infectes = [ x[0] for x in curseur.fetchall() ]
|
|
||||||
#
|
|
||||||
#for IP in infectes:
|
|
||||||
#
|
|
||||||
# # Nombre de requêtes de virus
|
|
||||||
# requete1 = "SELECT COUNT(ip_src) FROM virus where ip_src='%s' and date > timestamp 'now' - interval '1 hour'" % IP
|
|
||||||
# curseur.execute(requete1)
|
|
||||||
# nb_virus = curseur.fetchall()
|
|
||||||
#
|
|
||||||
# # Nombre de requêtes de flood
|
|
||||||
# requete2 = "SELECT COUNT(ip_src) FROM flood where ip_src='%s' and date > timestamp 'now' - interval '1 hour'" % IP
|
|
||||||
# curseur.execute(requete2)
|
|
||||||
# nb_flood = curseur.fetchall()
|
|
||||||
#
|
|
||||||
# # On ne traite que les IP qui sont descendues en dessous des seuils
|
|
||||||
# if nb_virus[0][0] < virus.virus and nb_flood[0][0] < virus.flood:
|
|
||||||
# try:
|
|
||||||
# machine = ldap.search('ipHostNumber=%s' % IP, 'w' )['machine'][0]
|
|
||||||
# except IndexError:
|
|
||||||
# print "Suppression de %s des machines infectees (la machine n'existe plus)"%IP
|
|
||||||
# requete = "DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
|
||||||
# curseur.execute(requete)
|
|
||||||
# continue # la machine n'existe plus, on passe à l'infecté suivant
|
|
||||||
# # Si la machine n'est pas online, on reconnecte
|
|
||||||
# #if machine_online(machine):
|
|
||||||
# proprio = machine.proprietaire()
|
|
||||||
# bl = proprio.blacklist()
|
|
||||||
# hostname = machine.nom()
|
|
||||||
# # On stoppe la sanction pour une ligne existante de la blackliste
|
|
||||||
# # En prenant en compte le fait que d'autres lignes de blackliste
|
|
||||||
# # ont pu s'ajouter.
|
|
||||||
# lignes_enlevees = 0
|
|
||||||
# for ligne in bl:
|
|
||||||
# if '$-$autodisc_virus$%s' % hostname in ligne:
|
|
||||||
# liste = ligne.split('$')
|
|
||||||
# argument = [liste[0], 'now', liste[2], liste[3]]
|
|
||||||
# index = bl.index(ligne)
|
|
||||||
# proprio.blacklist((index, argument))
|
|
||||||
# proprio.save()
|
|
||||||
# lignes_enlevees += 1
|
|
||||||
# if lignes_enlevees == 0:
|
|
||||||
# print "Suppression de %s des machines infectees, mais aucune blackliste"%hostname
|
|
||||||
# requete = "DELETE FROM avertis_virus where ip_crans='%s'"%IP
|
|
||||||
# curseur.execute(requete)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue