From 18635b6af619e26fece9b112b7278fb9b23f6326 Mon Sep 17 00:00:00 2001 From: chove Date: Thu, 16 Mar 2006 20:53:04 +0100 Subject: [PATCH] correction : pb1 : si on voulait dconnecter juste une machine alors que d'habitude dans ldap c'est l'adhrent qui est blacklist, la santion n'tait pas prise en compte pb2 : si quelqu'on est bloq et bl_upload, il n'tait pas dans les fichiers de squid, donc lors de sa reco de bloq il ne serait pas bloqu par squid je crois que c'est tout... darcs-hash:20060316195304-4ec08-97ea41461c9dc8ed410df999f8c4ea628bc9f04a.gz --- gestion/gen_confs/squid.py | 78 ++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 45 deletions(-) diff --git a/gestion/gen_confs/squid.py b/gestion/gen_confs/squid.py index 3698fff6..9a302543 100755 --- a/gestion/gen_confs/squid.py +++ b/gestion/gen_confs/squid.py @@ -12,8 +12,9 @@ from config import bl_carte_et_actif class squid(gen_config) : db = crans_ldap() + actif = True # la sanction est elle active ? restart_cmd = '/etc/init.d/squid reload' - + def __str__(self) : return str(self.__class__).replace('_','-').split('.')[2] @@ -22,90 +23,77 @@ class squid(gen_config) : def _mklist(self) : fic = self._open_conf(self.FICHIER) - # recherche_bl : - # 1 : search sur champ blacklist et clubs compris - # 2 : search sur champ ablacklist et clubs compris - # 3 : search sur champ mblacklist 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"] - elif self.recherche_bl==2: - liste = self.db.search("paiement=ok&ablacklist=*%s*"%self.chaine) - l_proprio = liste["adherent"]+liste["club"] - elif self.recherche_bl==3: - liste = self.db.search("paiement=ok&mblacklist=*%s*"%self.chaine) - l_proprio = liste["adherent"]+liste["club"] + + if not self.actif: + return + + # recherche dans la base LDAP + if '=' in self.chaine: + # chaine de tri spéciale + liste = self.db.search("paiement=ok&%s"%self.chaine) + l_proprio = liste["adherent"] + liste["club"] + l_machine = liste["machine"] + else: - l_proprio = self.db.search('paiement=ok&' + self.chaine)["adherent"] - self.anim.iter=len(l_proprio) + # recherche dans les adhérents blacklistés + liste = self.db.search("paiement=ok&ablacklist=*%s*"%self.chaine) + l_proprio = liste["adherent"] + liste["club"] + l_proprio = [ x for x in l_proprio if self.chaine in x.blacklist_actif() ] + + # recherche dans les machines blacklistés + liste = self.db.search("paiement=ok&mblacklist=*%s*"%self.chaine) + l_machine = liste["machine"] + l_machine = [ m for m in l_machine if self.chaine in proprio.blacklist_actif() ] + + # on ajoute les machines des proprios aux autres machines for proprio in l_proprio : - self.anim.cycle() - 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') + l_machine += proprio.machines() + + # on colle toutes les machines dans le fichier + self.anim.iter=len(l_machine) + for m in l_machine: + self.anim.cycle() + fic.write( m.Nom() + '\n' ) fic.close() - class squid_upload(squid) : """ Genère le fichier blacklist-upload pour squid """ FICHIER = "/etc/squid/blacklist_upload" chaine = "upload" - recherche_bl = 1 class squid_p2p(squid) : """ Genère le fichier blacklist-p2p pour squid """ FICHIER = "/etc/squid/blacklist_p2p" chaine = "p2p" - recherche_bl = 2 # Sanction sur l'adhérent uniquement class squid_autodisc_upload(squid) : """ Genère le fichier blacklist-autodiscupload pour squid """ FICHIER = "/etc/squid/blacklist_autodisc_upload" chaine = "autodisc_upload" - recherche_bl = 2 class squid_autodisc_p2p(squid) : """ Genère le fichier blacklist-autodisc-p2p pour squid """ FICHIER = "/etc/squid/blacklist_autodisc_p2p" chaine = "autodisc_p2p" - recherche_bl = 2 # Sanction sur l'adhérent uniquement class squid_virus(squid) : """ Genère le fichier blacklist-virus pour squid """ FICHIER = "/etc/squid/blacklist_virus" chaine = "virus" - recherche_bl = 3 # Sanction sur une machine uniquement class squid_warez(squid) : """ Genère le fichier blacklist-warez pour squid """ FICHIER = "/etc/squid/blacklist_warez" chaine = "warez" - recherche_bl = 2 # Sanction sur l'adhérent uniquement class squid_carte(squid) : """ Genère le fichier blacklist-carte pour squid """ + actif = bl_carte_et_actif + if not actif : restart_cmd = '' FICHIER = "/etc/squid/blacklist_carte_et" chaine = "carteEtudiant!=%i"%ann_scol - recherche_bl = 0 - - if not bl_carte_et_actif : - # Inutile de relancer squid si la blacklist n'est pas activée - restart_cmd = '' - - def _gen(self) : - # Liste vide si la blacklist n'est pas activée - if not bl_carte_et_actif : - fic = self._open_conf(self.FICHIER) - # on vide la blackliste - fic.close() - return - self._mklist() class squid_chbre(squid) : """ Genère le fichier blacklist-chbre pour squid """ FICHIER = "/etc/squid/blacklist_chbre" chaine = "chbre=????" - recherche_bl = 0