Bug dans la mise jour de la correspondance MAC-IP.
Je ne vois pas ce qui a caus la manifestation soudaine de cette erreur. darcs-hash:20060327211818-68412-9de681b7bd9920cc88e59665b8c42a1e0d0ac21a.gz
This commit is contained in:
parent
609ce7d564
commit
d902ba7fc6
1 changed files with 9 additions and 6 deletions
|
@ -308,28 +308,31 @@ class firewall_crans :
|
|||
self.anim = anim('\tActualisation TEST_MAC-IP')
|
||||
for regle in iptables("-t nat -L TEST_MAC-IP -n").split('\n')[2:] :
|
||||
regle = regle.split()
|
||||
if regle[0] == 'DROP':
|
||||
# On est arrivé à la fin de la liste
|
||||
break
|
||||
ip = regle[3]
|
||||
mac = regle[6].lower()
|
||||
if ip in mac_ip_maj.keys() :
|
||||
# La règle correspond à une ip à mettre à jour
|
||||
machine = mac_ip_maj[ip]
|
||||
try :
|
||||
try:
|
||||
if not machine :
|
||||
# Il faut détruire cette entrée
|
||||
iptables("-t nat -D TEST_MAC-IP -s %s -m mac --mac-source %s -j ACCEPT" % (ip, mac))
|
||||
iptables("-t nat -D TEST_MAC-IP -s %s -m mac --mac-source %s -j RETURN" % (ip, mac))
|
||||
else :
|
||||
if (isinstance(machine, MachineWifi) and mac != self.mac_wifi) \
|
||||
or (not isinstance(machine, MachineWifi) and mac != machine.mac()):
|
||||
# La correspondance MAC-IP est fausse => on ajoute la bonne règle
|
||||
self.__test_mac_ip(machine)
|
||||
# Supression de l'ancienne ligne
|
||||
iptables("-t nat -D TEST_MAC-IP -s %s -m mac --mac-source %s -j ACCEPT" % (ip, mac))
|
||||
iptables("-t nat -D TEST_MAC-IP -s %s -m mac --mac-source %s -j RETURN" % (ip, mac))
|
||||
|
||||
# Toutes les autres occurences devront être détruites
|
||||
mac_ip_maj[ip]=None
|
||||
|
||||
except IptablesError, c :
|
||||
warn += c
|
||||
except IptablesError, c:
|
||||
warn += str(c) + '\n'
|
||||
|
||||
# Ajout des machines qui n'étaient pas dans le firewall
|
||||
for machine in mac_ip_maj.values() :
|
||||
|
@ -344,7 +347,7 @@ class firewall_crans :
|
|||
self.exception_catcher(procedure)
|
||||
|
||||
def build_chaine_adherent(self,chaine,methode) :
|
||||
# On construit d'abord les autorisations particuli\uffffres
|
||||
# On construit d'abord les autorisations particulières
|
||||
if not self.build_chaine(chaine, methode) :
|
||||
# Puis si pas de problèmes les autorisations par défaut
|
||||
self.anim.reinit()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue