From 9334846582cb8ead9ac1a91d3a2df260c8fa9319 Mon Sep 17 00:00:00 2001 From: salles Date: Sat, 11 Mar 2006 08:36:02 +0100 Subject: [PATCH] L aussi, la fonction search a des problmes, on fait comme pour squid et on fait deux recherches distinctes sur les blacklistes associes un adhrent et celles associes une machine. a vite le croisement de donnes qui limine des rsultats. En attendant que quelqu'un ait une ide pour la fonction search. darcs-hash:20060311073602-72cb0-a4c5593531861d8a1bae03787fde3d51cd8de3bb.gz --- gestion/gen_confs/firewall.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gestion/gen_confs/firewall.py b/gestion/gen_confs/firewall.py index 745e6e0c..b6933e75 100755 --- a/gestion/gen_confs/firewall.py +++ b/gestion/gen_confs/firewall.py @@ -670,15 +670,20 @@ class firewall_komaz(firewall_crans) : iptables('-F BLACKLIST_SRC') blacklist=[] - search = db.search('blacklist=*&paiement=%s'% ann_scol) + # Recherche sur le champ ablacklist (clubs compris) + search = db.search('ablacklist=*&paiement=%s'% ann_scol) + for entite in search['adherent']+search['club']: + self.anim.cycle() + sanctions = entite.blacklist_actif() + if 'upload' in sanctions or 'warez' in sanctions or 'p2p' in sanctions or 'autodisc_p2p' in sanctions or 'autodisc_upload' in sanctions : + blacklist+=entite.machines() + # Recherche sur le champ mblacklist (clubs aussi compris mais on extrait pas les résultats) + search = db.search('mblacklist=*&paiement=%s'% ann_scol) for entite in search['adherent']+search['club']+search['machine']: self.anim.cycle() sanctions = entite.blacklist_actif() if 'upload' in sanctions or 'warez' in sanctions or 'p2p' in sanctions or 'autodisc_p2p' in sanctions or 'autodisc_upload' in sanctions : - if isinstance(entite, Machine): - blacklist+=[entite] - else: - blacklist+=entite.machines() + blacklist+=[entite] for machine in blacklist: iptables("-A BLACKLIST_DST -d %s -j REJECT --reject-with icmp-host-prohibited" % machine.ip())