scripts/gestion/gen_confs/surveillance.py
2013-05-05 02:12:46 +02:00

101 lines
3.6 KiB
Python

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
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, Club, Adherent, AssociationCrans
from gen_confs import gen_config
import psycopg2
db = crans_ldap()
# 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 = db.search('exempt=*')['machine']
pgsql = psycopg2.connect(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')
machines = db.search('ip=*')['machine']
# liste des machines (on prend que les paimement ok)
# machines = self.machines
# machines = db.search('ip=*')['machine']
# connexion à la base postgresql
import psycopg2
pgsql = psycopg2.connect(database='filtrage', user='crans')
curseur = pgsql.cursor()
curseur.execute("DELETE FROM machines;")
ipv6_vu={}
def ipv6_already_set(ipv6):
ret = ipv6_vu.get(ipv6, False)
ipv6_vu[ipv6] = True
return ret
# 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()))
if not ipv6_already_set(m.ipv6()):
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','club',%s);"%(m.ipv6(),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()))
if not ipv6_already_set(m.ipv6()):
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','adherent',%s);"%(m.ipv6(),m.proprietaire().id()))
elif m.proprietaire().__class__ == AssociationCrans:
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','crans',%s);"%(m.ip(),m.id()))
if not ipv6_already_set(m.ipv6()):
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','crans',%s);"%(m.ipv6(),m.id()))
# on commit
pgsql.commit()