From 5446bb8142bc4b457feb1e8c5bd515dac3a22b71 Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Tue, 22 Jul 2014 13:53:54 +0200 Subject: [PATCH] =?UTF-8?q?deconnexion.py:=20code=20mort=20et=20obsol?= =?UTF-8?q?=C3=A8te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- surveillance/deconnexion.py | 163 +----------------------------------- 1 file changed, 2 insertions(+), 161 deletions(-) diff --git a/surveillance/deconnexion.py b/surveillance/deconnexion.py index 015ecd91..73a82e73 100755 --- a/surveillance/deconnexion.py +++ b/surveillance/deconnexion.py @@ -28,9 +28,7 @@ from ldap_crans import crans_ldap from ldap_crans import MachineWifi from ldap_crans import MachineFixe from time import * -#import locale -#locale.setlocale(locale.LC_TIME, 'fr_FR') -import lock + sys.path.append('/usr/scripts/surveillance/fiche_deconnexion') from generate import generate_ps from affich_tools import tableau @@ -41,19 +39,6 @@ import mail as mail_module # 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 ################## @@ -82,6 +67,7 @@ def connectsmtp(): return mail # Pour trouver la chambre où était la machine que l'on déconnecte. +# TODO: mettre ça dans annuaires_pg def reperage_chambre(mac): pgsql = psycopg2.connect(host="thot.adm.crans.org", database='mac_prises', user='crans') # 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_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)