On vite l'inclusion d'un rgle avec un numro fixe

darcs-hash:20060428211113-72cb0-73c9f88e7461c1612bafb51fb40aa2bb3244fbf2.gz
This commit is contained in:
salles 2006-04-28 23:11:13 +02:00
parent 411144f361
commit d6f0260382

View file

@ -504,6 +504,24 @@ class firewall_komaz(firewall_crans) :
# On ne va pas plus loin si il ne s'agit pas de bittorrent
iptables("-t mangle -A POSTROUTING -m mark ! --mark %s -j ACCEPT" % conf_fw.mark['bittorrent'])
print OK
# On marque les paquets bittorrent uniquement
iptables("-t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark")
iptables("-t mangle -A PREROUTING -p tcp -m mark ! --mark 0x0 " +
"-j ACCEPT")
iptables("-t mangle -A PREROUTING -p tcp -m ipp2p --bit -j MARK " +
"--set-mark %s" % conf_fw.mark['bittorrent'])
iptables("-t mangle -A PREROUTING -p tcp -m mark " +
"--mark %s -j CONNMARK --save-mark" % conf_fw.mark['bittorrent'])
warn = ''
# Par défaut on envoit les paquets dans la classe 9998
for net in NETs['all'] :
iptables("-t mangle -A POSTROUTING -o crans -d %s " % net +
"-j CLASSIFY --set-class 1:9998")
iptables("-t mangle -A POSTROUTING -o ens -s %s " % net +
"-j CLASSIFY --set-class 1:9998")
# On crée les chaînes de sous-réseaux
for net in NETs['all'] :
for mask in conf_fw.mask :
@ -517,23 +535,11 @@ class firewall_komaz(firewall_crans) :
prev_chain = "SUBNET-%s" % prev_subnet
next_chain = "SUBNET-%s" % subnet
redirect_chain('mangle', prev_chain, next_chain, subnet)
print OK
# On marque les paquets bittorrent uniquement
iptables("-t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark")
iptables("-t mangle -A PREROUTING -p tcp -m mark ! --mark 0x0 " +
"-j ACCEPT")
iptables("-t mangle -A PREROUTING -p tcp -m ipp2p --bit -j MARK " +
"--set-mark %s" % conf_fw.mark['bittorrent'])
iptables("-t mangle -A PREROUTING -p tcp -m mark " +
"--mark %s -j CONNMARK --save-mark" % conf_fw.mark['bittorrent'])
adherents = db.search('paiement=ok')['adherent']
# On calcule le débit garanti pour un adhérent
debit_adh = p2p.debit_max/(len(adherents)+1)
self.anim = anim('\tGénération des classes de filtrage p2p', len(adherents))
warn = ''
# Création des classes et qdisc
for interface in [self.eth_ext, self.eth_int] :
# On vide les classes et qdisc
@ -547,12 +553,8 @@ class firewall_komaz(firewall_crans) :
tc("class add dev %s parent 1: classid 1:1 htb rate %s ceil %s" % (interface, p2p.debit_max, p2p.debit_max))
tc("class add dev %s parent 1:1 classid 1:9998 htb rate %s ceil %s" % (interface, debit_adh, debit_adh))
tc("qdisc add dev %s parent 1:9998 handle 9999: sfq perturb 10" % interface)
# Par défaut on envoit les paquets dans la classe 9998
for net in NETs['all'] :
iptables("-t mangle -I POSTROUTING 2 -o crans -d %s " % net +
"-j CLASSIFY --set-class 1:9998")
iptables("-t mangle -I POSTROUTING 2 -o ens -s %s " % net +
"-j CLASSIFY --set-class 1:9998")
self.anim = anim('\tGénération des classes de filtrage p2p', len(adherents))
# On construit ensuite les classes et qdisc pour chaque adhérent
for adherent in adherents :
self.anim.cycle()