From 1481c22db17b80227552dae9864dd3d73c34cbf0 Mon Sep 17 00:00:00 2001 From: pauget Date: Sun, 17 Oct 2004 16:20:32 +0200 Subject: [PATCH] Gnration des fichiers de conf de squid. darcs-hash:20041017142032-41617-5e9b037884233c2835fc0c68080f1210a1936742.gz --- gestion/gen_confs/generate.py | 57 +++++++++++++++++++--- gestion/gen_confs/squid.py | 92 +++++++++++++++++++---------------- 2 files changed, 98 insertions(+), 51 deletions(-) diff --git a/gestion/gen_confs/generate.py b/gestion/gen_confs/generate.py index 3a7269d6..47834c79 100755 --- a/gestion/gen_confs/generate.py +++ b/gestion/gen_confs/generate.py @@ -25,9 +25,11 @@ import config args_autorises = ['quiet', 'remove=', 'list' ,'help'] if hostname == 'zamok' : - args_autorises += [ 'home=', 'mail_bienvenue=', 'ML-ENS=', 'droits', 'switch=' , 'dhcp', 'dns', 'firewall' , 'del_user='] + args_autorises += [ 'home=', 'mail_bienvenue=', 'ML-ENS=', 'droits', 'switch=' , 'dhcp', 'dns', 'firewall' , 'del_user=', 'blacklist_upload' ] elif hostname == 'nectaris' : args_autorises += [ 'conf_wifi', 'bornes_wifi=' , 'droits-nectaris'] +elif hostname == 'sila' : + args_autorises += [ 'bl_squid_upload', 'blacklist_virus' , 'blacklist_warez' , 'bl_chbre_invalide', 'bl_carte_etudiant' ] # On vérifie que l'on est root if os.getuid() != 0: @@ -209,17 +211,17 @@ if hostname == 'zamok': except: if auto : db.services_to_restart('droits') - if 'upload' in to_do.keys() : - if auto : db.services_to_restart('-upload') - # aussi relancer le firewall (+ tard) + if 'blacklist_upload' in to_do.keys() : + if auto : db.services_to_restart('-blacklist_upload') + db.services_to_restart('bl_squid_upload') try: - from gen_confs.squid import squid_upload - a = squid_upload() + from gen_confs.firewall import bl_upload_fw + a = bl_upload_fw() a.debug = debug a.reconfigure() except: - if auto: db.services_to_restart('upload') - + if auto: db.services_to_restart('blacklist_upload') + if 'switch' in to_do.keys() : if auto : db.services_to_restart('-switch') try: @@ -334,7 +336,46 @@ elif hostname == 'sila' : except: if auto: db.services_to_restart('bl_carte_etudiant') + if 'blacklist_virus' in to_do.keys() : + if auto : db.services_to_restart('-blacklist_virus') + try: + from gen_confs.squid import squid_virus + a = squid_virus() + a.debug = debug + a.reconfigure() + except: + if auto: db.services_to_restart('blacklist_virus') + if 'blacklist_warez' in to_do.keys() : + if auto : db.services_to_restart('-blacklist_warez') + try: + from gen_confs.squid import squid_warez + a = squid_warez() + a.debug = debug + a.reconfigure() + except: + if auto: db.services_to_restart('blacklist_warez') + + if 'bl_squid_upload' in to_do.keys() : + if auto : db.services_to_restart('-bl_squid_upload') + try: + from gen_confs.squid import squid_upload + a = squid_upload() + a.debug = debug + a.reconfigure() + except: + if auto: db.services_to_restart('bl_squid_upload') + + if 'bl_chbre_invalide' in to_do.keys() : + if auto : db.services_to_restart('-bl_chbre_invalide') + try: + from gen_confs.squid import squid_chbre + a = squid_chbre() + a.debug = debug + a.reconfigure() + except: + if auto: db.services_to_restart('bl_chbre_invalide') + if debug : print 'Non traité ici mais signalé dans la base LDAP : \n\t', db.services_to_restart() diff --git a/gestion/gen_confs/squid.py b/gestion/gen_confs/squid.py index adf48a33..04e7ba50 100755 --- a/gestion/gen_confs/squid.py +++ b/gestion/gen_confs/squid.py @@ -1,81 +1,87 @@ #! /usr/bin/env python # -*- coding: iso-8859-15 -*- -""" Génération de la configuration pour squid sur sila -""" +""" Génération de la configuration pour squid sur sila """ import sys sys.path.append('/usr/scripts/gestion') from gen_confs import gen_config -from ldap_crans import crans_ldap, adherent, club, machine, ann_scol +from ldap_crans import crans_ldap, ann_scol from time import localtime class squid(gen_config) : db = crans_ldap() restart_cmd = '/etc/init.d/squid reload' - def _mklist(self,quoi,FICHIER) : - bl = self.db.search("blacklist=*%s*"%quoi) - l_proprio = bl["adherent"]+bl["club"] + def __str__(self) : + return str(self.__class__).replace('_','-').split('.')[2] + + def _gen(self) : + self._mklist() + + def _mklist(self) : fic = self._open_conf(self.FICHIER) + # recherche_bl : + # 1 : search sur champ blacklist et clubs compris + # 0 : search plus général et clubs exclus + if self.recherche_bl==1: + liste = self.db.search("paiement=ok&blacklist=*%s*"%self.chaine) + l_proprio = liste["adherent"]+liste["club"] + else: + l_proprio = self.db.search('paiement=ok&' + self.chaine)["adherent"] self.anim.iter=len(l_proprio) for proprio in l_proprio : self.anim.cycle() - if quoi in proprio.blacklist_actif(): + if self.recherche_bl==0 or self.chaine in proprio.blacklist_actif(): # Pas la peine de renvoyer les machines complètement bloqués for m in proprio.machines(): if not 'bloq' in m.blacklist_actif(): fic.write(m.Nom()+'\n') fic.close() + class squid_upload(squid) : """ Genère le fichier blacklist-upload pour squid """ - FICHIER = "/tmp/blacklist-upload" - - def __str__(self) : - return "squid-upload" - - def _gen(self) : - self._mklist("upload",self.FICHIER) + FICHIER = "/etc/squid/blacklist_upload" + chaine = "upload" + recherche_bl = 1 class squid_virus(squid) : """ Genère le fichier blacklist-virus pour squid """ - FICHIER = "/tmp/blacklist-virus" - - def __str__(self) : - return "squid-virus" - + #FICHIER = "/etc/squid/blacklist_infectes" + # on ne fait rien pour l'instant, non géré par LDAP + chaine = "virus" def _gen(self) : - self._mklist("virus",self.FICHIER) + pass + recherche_bl = 1 + +class squid_warez(squid) : + """ Genère le fichier blacklist-warez pour squid """ + FICHIER = "/etc/squid/blacklist_warez" + chaine = "warez" + recherche_bl = 1 -class squid_carte(gen_config) : +class squid_carte(squid) : """ Genère le fichier blacklist-carte pour squid """ FICHIER = "/etc/squid/blacklist_carte_et" - # Septembre ou octobre + chaine = "carteEtudiant!=%i"%ann_scol + recherche_bl = 0 + if localtime()[1] in [9,10] : - # Inutile de relancer squid + # Inutile de relancer squid en septembre et octobre restart_cmd = '' - else: - restart_cmd = '/etc/init.d/squid reload' - - def __str__(self) : - return "squid-carte" - + def _gen(self) : - fic = self._open_conf(self.FICHIER) - # Pas les mois de septembre ni octobre + # Liste vide les mois de septembre et octobre if localtime()[1] in [9,10] : - # on vide la blacklist + fic = self._open_conf(self.FICHIER) + # on vide la blackliste fic.close() return - db = crans_ldap() - l_adh = db.search("paiement=ok&carteEtudiant!=%i"%ann_scol)["adherent"] - self.anim.iter=len(l_adh) - for proprio in l_adh : - self.anim.cycle() - # Pas la peine de renvoyer les machines complètement bloqués - for m in proprio.machines(): - if not 'bloq' in m.blacklist_actif(): - fic.write(m.Nom()+'\n') - fic.close() - + self._mklist() + +class squid_chbre(squid) : + """ Genère le fichier blacklist-chbre pour squid """ + FICHIER = "/etc/squid/blacklist_chbre" + chaine = "chbre=????" + recherche_bl = 0