From 0dc583dc365074aad7809d85c313e403dc1d9fdd Mon Sep 17 00:00:00 2001 From: chove Date: Mon, 5 Dec 2005 21:06:40 +0100 Subject: [PATCH] import initial darcs-hash:20051205200640-4ec08-bfe1dd86ddf5cd83c81753d82e5da3f94ca1ab16.gz --- gestion/gen_confs/surveillance.py | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 gestion/gen_confs/surveillance.py diff --git a/gestion/gen_confs/surveillance.py b/gestion/gen_confs/surveillance.py new file mode 100755 index 00000000..b77bffdc --- /dev/null +++ b/gestion/gen_confs/surveillance.py @@ -0,0 +1,90 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" +Classe de synchronisation entre la base ldap et +la base postgresql pour la liste des exemptions +et la liste des machines. +Utilisé par generate.py +""" + +# importation des fonctions et classes + +import sys, os, commands +sys.path.append('/usr/scripts/gestion') +from ldap_crans import crans_ldap +from gen_confs import gen_config +from pyPgSQL import PgSQL + +# Génération des la tables d'exemptions +####################################### + +class exemptions(gen_config) : + + base=[('138.231.136.0/28','0.0.0.0/0'),('138.231.136.0/21','138.231.0.0/16'),('138.231.148.0/22','138.231.0.0/16')] + restart_cmd = "" + + def __str__ (self) : + return "surveillance_exemptions" + + def _gen (self) : + + machines = crans_ldap().search('exempt=*')['machine'] + + pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans') + curseur = pgsql.cursor() + + requete="DELETE FROM exemptes" + curseur.execute(requete) + + for source,destination in self.base : + requete="INSERT INTO exemptes (ip_crans,ip_dest) VALUES ('%s','%s')" % (source,destination) + curseur.execute(requete) + + for machine in machines : + for destination in machine.exempt() : + requete="INSERT INTO exemptes (ip_crans,ip_dest) VALUES ('%s','%s')" % (machine.ip(),destination) + curseur.execute(requete) + + pgsql.commit() + +# Génération des la liste des machines +###################################### + +class machines(gen_config) : + + restart_cmd = "" + + def __str__ (self) : + return "surveillance_liste_machines" + + def _gen (self) : + + # recherche de toutes les machines dans ldap + import sys + sys.path.append('/usr/scripts/gestion') + from ldap_crans import crans_ldap, club, adherent, crans + machines = crans_ldap().search('ip=*')['machine'] + + # liste des machines (on prend que les paimement ok) + machines = self.machines + # machines = crans_ldap().search('ip=*')['machine'] + + # connexion à la base postgresql + from pyPgSQL import PgSQL + pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans') + curseur = pgsql.cursor() + curseur.execute("DELETE FROM machines;") + + # ajout des entrée + for m in machines: + if m.proprietaire().__class__ == club: + curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','club',%s);"%(m.ip(),m.proprietaire().id())) + elif m.proprietaire().__class__ == adherent: + curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','adherent',%s);"%(m.ip(),m.proprietaire().id())) + elif m.proprietaire().__class__ == crans: + curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','crans',%s);"%(m.ip(),m.id())) + + # on commit + pgsql.commit() +