[gest_crans] On répare la méthode de préremplissage, et on corrige des bugs
* La méthode de préremplissage posait des locks, les fonctions affectant des valeurs ont désormais un argument lock, par défaut à True, pour savoir si elles doivent poser des locks * La méthode de préremplissage doit aussi affecter une ip * Il y avait un decode de trop dans la gestion des blacklistes
This commit is contained in:
parent
673e8266e8
commit
337f4906b6
2 changed files with 39 additions and 25 deletions
|
@ -1015,7 +1015,7 @@ def set_blackliste(clas):
|
||||||
arg += u'"- pour fin indéterminée" 2 25 "" 0 0 0 0 '
|
arg += u'"- pour fin indéterminée" 2 25 "" 0 0 0 0 '
|
||||||
arg += u'"Les jours de début et de fin sont inclus." 3 1 "" 0 0 0 0 '
|
arg += u'"Les jours de début et de fin sont inclus." 3 1 "" 0 0 0 0 '
|
||||||
arg += u'"Sanction : %s" 4 1 "" 0 0 0 0 ' % t[2]
|
arg += u'"Sanction : %s" 4 1 "" 0 0 0 0 ' % t[2]
|
||||||
arg += u'"Commentaire (pas de dollar) : " 5 1 "%s" 6 1 52 0 ' % t[3].decode("utf-8")
|
arg += u'"Commentaire (pas de dollar) : " 5 1 "%s" 6 1 52 0 ' % t[3]
|
||||||
annul, r = dialog(arg)
|
annul, r = dialog(arg)
|
||||||
if annul: return 1
|
if annul: return 1
|
||||||
|
|
||||||
|
@ -1491,13 +1491,18 @@ def set_machine(machine):
|
||||||
# Traitement
|
# Traitement
|
||||||
err = ''
|
err = ''
|
||||||
try: machine.nom(result[0])
|
try: machine.nom(result[0])
|
||||||
except ValueError, c: err += c.args[0] + '\n'
|
except ValueError, c:
|
||||||
except EnvironmentError, c: err += c.args[0] + '\n'
|
err += c.args[0] + '\n'
|
||||||
|
except EnvironmentError, c:
|
||||||
|
err += c.args[0] + '\n'
|
||||||
|
|
||||||
try: machine.ip(result[2])
|
try: machine.ip(result[2])
|
||||||
except ValueError, c: err += c.args[0] + '\n'
|
except ValueError, c:
|
||||||
except EnvironmentError, c: err += c.__str__() + '\n'
|
err += c.args[0] + '\n'
|
||||||
except RuntimeError, c: err += c.args[0] + '\n' # Plus d'IP libres, peut-être à traiter differement ?
|
except EnvironmentError, c:
|
||||||
|
err += c.__str__() + '\n'
|
||||||
|
except RuntimeError, c:
|
||||||
|
err += c.args[0] + '\n' # Plus d'IP libres, peut-être à traiter differement ?
|
||||||
try: machine.mac(result[1])
|
try: machine.mac(result[1])
|
||||||
except ValueError, c:
|
except ValueError, c:
|
||||||
if len(c.args)>1 and c.args[1] == 1 and isadm:
|
if len(c.args)>1 and c.args[1] == 1 and isadm:
|
||||||
|
@ -1509,8 +1514,10 @@ def set_machine(machine):
|
||||||
return set_machine(machine)
|
return set_machine(machine)
|
||||||
else:
|
else:
|
||||||
try: machine.mac(result[1], 1)
|
try: machine.mac(result[1], 1)
|
||||||
except ValueError, c: err += c.args[0] + '\n'
|
except ValueError, c:
|
||||||
except EnvironmentError, c: err += c.args[0] + '\n'
|
err += c.args[0] + '\n'
|
||||||
|
except EnvironmentError, c:
|
||||||
|
err += c.args[0] + '\n'
|
||||||
elif len(c.args)>1 and c.args[1] == 3 and isadm:
|
elif len(c.args)>1 and c.args[1] == 3 and isadm:
|
||||||
# Mac douteuse
|
# Mac douteuse
|
||||||
arg = u'--title "Adresse MAC" '
|
arg = u'--title "Adresse MAC" '
|
||||||
|
@ -1520,8 +1527,10 @@ def set_machine(machine):
|
||||||
return set_machine(machine)
|
return set_machine(machine)
|
||||||
else:
|
else:
|
||||||
try: machine.mac(result[1], 1)
|
try: machine.mac(result[1], 1)
|
||||||
except ValueError, c: err += c.args[0] + '\n'
|
except ValueError, c:
|
||||||
except EnvironmentError, c: err += c.args[0] + '\n'
|
err += c.args[0] + '\n'
|
||||||
|
except EnvironmentError, c:
|
||||||
|
err += c.args[0] + '\n'
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
err += c.args[0] + '\n'
|
err += c.args[0] + '\n'
|
||||||
|
@ -1529,7 +1538,8 @@ def set_machine(machine):
|
||||||
raise
|
raise
|
||||||
raise Exception("UnicodeDecodeError on %s" % repr(c.args))
|
raise Exception("UnicodeDecodeError on %s" % repr(c.args))
|
||||||
|
|
||||||
except EnvironmentError, c: err += c.args[0] + '\n'
|
except EnvironmentError, c:
|
||||||
|
err += c.args[0] + '\n'
|
||||||
|
|
||||||
if isadm:
|
if isadm:
|
||||||
try:
|
try:
|
||||||
|
@ -2224,8 +2234,9 @@ def menu_principal():
|
||||||
#Saisie prédictive de la mac
|
#Saisie prédictive de la mac
|
||||||
try:
|
try:
|
||||||
prise = proprio.chbre().lower()[0] + becane.prise()
|
prise = proprio.chbre().lower()[0] + becane.prise()
|
||||||
|
becane.ip("<automatique>", lock=False)
|
||||||
f = open('/usr/scripts/var/last_macs/' + prise, 'r')
|
f = open('/usr/scripts/var/last_macs/' + prise, 'r')
|
||||||
becane.mac(f.read())
|
becane.mac(f.read(), lock=False)
|
||||||
f.close()
|
f.close()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -2823,7 +2823,7 @@ class Machine(BaseClasseCrans):
|
||||||
""" Retourne le nom de la machine """
|
""" Retourne le nom de la machine """
|
||||||
return self.nom()
|
return self.nom()
|
||||||
|
|
||||||
def mac(self, mac=None, multi_ok=0):
|
def mac(self, mac=None, multi_ok=0, lock=True):
|
||||||
"""
|
"""
|
||||||
Défini ou retourne l'adresse mac de la machine
|
Défini ou retourne l'adresse mac de la machine
|
||||||
Adresse valide si:
|
Adresse valide si:
|
||||||
|
@ -2867,16 +2867,17 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
raise ValueError(u"Mac déjà utilisée sur le réseau.", 1)
|
raise ValueError(u"Mac déjà utilisée sur le réseau.", 1)
|
||||||
|
|
||||||
# Lock de la mac
|
# Lock de la mac
|
||||||
|
if lock:
|
||||||
self.lock('macAddress', mac)
|
self.lock('macAddress', mac)
|
||||||
net = self.netv6()
|
net = self.netv6()
|
||||||
try:
|
try:
|
||||||
self._set('macAddress', [mac])
|
self._set('macAddress', [mac])
|
||||||
if net.size > 1:
|
if net.size > 1:
|
||||||
self.ipv6(ip6tools.mac_to_ipv6(net, netaddr.EUI(mac)))
|
self.ipv6(ip6tools.mac_to_ipv6(net, netaddr.EUI(mac)), lock)
|
||||||
else:
|
else:
|
||||||
self.ipv6(config.ipv6_machines_speciales[int(self.rid())])
|
self.ipv6(config.ipv6_machines_speciales[int(self.rid())], lock)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError('La correspondance MAC <-> EUID64 a planté. Tapez PEB et son entourage. (net : %s, mac : %s, exception levée : %s)' % (net, mac, e))
|
raise ValueError('La correspondance MAC <-> EUID64 a plante. Tapez PEB et son entourage. (net : %s, mac : %s, exception levee : %s)' % (net, mac, e))
|
||||||
return mac
|
return mac
|
||||||
|
|
||||||
def __host_alias(self, champ, new):
|
def __host_alias(self, champ, new):
|
||||||
|
@ -3029,7 +3030,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
self._set('sshFingerprint', liste)
|
self._set('sshFingerprint', liste)
|
||||||
return liste
|
return liste
|
||||||
|
|
||||||
def ip(self, ip=None):
|
def ip(self, ip=None, lock=True):
|
||||||
"""
|
"""
|
||||||
Défini ou retourne l'IP de la machine.
|
Défini ou retourne l'IP de la machine.
|
||||||
Les IP sont stoquées sous forme xxx.xxx.xxx.xxx et doivent être fournies ainsi.
|
Les IP sont stoquées sous forme xxx.xxx.xxx.xxx et doivent être fournies ainsi.
|
||||||
|
@ -3101,13 +3102,14 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
my_rid = ridtools.Rid(ipv4=ip)
|
my_rid = ridtools.Rid(ipv4=ip)
|
||||||
|
|
||||||
# Lock ip
|
# Lock ip
|
||||||
|
if lock:
|
||||||
self.lock('ipHostNumber', ip)
|
self.lock('ipHostNumber', ip)
|
||||||
self._set('ipHostNumber', [ip])
|
self._set('ipHostNumber', [ip])
|
||||||
|
|
||||||
self.rid("%d" % my_rid)
|
self.rid("%d" % my_rid, lock=lock)
|
||||||
return ip
|
return ip
|
||||||
|
|
||||||
def rid(self, rid=None):
|
def rid(self, rid=None, lock=True):
|
||||||
"""
|
"""
|
||||||
Retourne le rid si rid == None, l'affecte sinon.
|
Retourne le rid si rid == None, l'affecte sinon.
|
||||||
"""
|
"""
|
||||||
|
@ -3119,6 +3121,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
if int(rid_t) != int(rid):
|
if int(rid_t) != int(rid):
|
||||||
raise ValueError('L\'ip et le rid doivent correspondre. rid : %s, ip : %s, rid_t : %s' % (int(rid), self.ip(), rid_t))
|
raise ValueError('L\'ip et le rid doivent correspondre. rid : %s, ip : %s, rid_t : %s' % (int(rid), self.ip(), rid_t))
|
||||||
|
|
||||||
|
if lock:
|
||||||
self.lock('rid', '%s' % rid)
|
self.lock('rid', '%s' % rid)
|
||||||
self._set('rid', ['%s' % rid])
|
self._set('rid', ['%s' % rid])
|
||||||
|
|
||||||
|
@ -3360,7 +3363,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
else:
|
else:
|
||||||
return netaddr.IPNetwork(config.ipv6_machines_speciales[int(self.rid())])
|
return netaddr.IPNetwork(config.ipv6_machines_speciales[int(self.rid())])
|
||||||
|
|
||||||
def ipv6(self, ipv6=None):
|
def ipv6(self, ipv6=None, lock=True):
|
||||||
"""Retourne l'adresse IPv6 correspondant à la machine"""
|
"""Retourne l'adresse IPv6 correspondant à la machine"""
|
||||||
|
|
||||||
if ipv6 == None:
|
if ipv6 == None:
|
||||||
|
@ -3373,10 +3376,10 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
ipv6_t = config.ipv6_machines_speciales[int(self.rid())]
|
ipv6_t = config.ipv6_machines_speciales[int(self.rid())]
|
||||||
else:
|
else:
|
||||||
ipv6_t = str(ip6tools.mac_to_ipv6(net, netaddr.EUI(self.mac())))
|
ipv6_t = str(ip6tools.mac_to_ipv6(net, netaddr.EUI(self.mac())))
|
||||||
|
|
||||||
if ipv6 != ipv6_t:
|
if ipv6 != ipv6_t:
|
||||||
raise ValueError('L\'ipv6 n\'est pas celle EUID64 attendue. %s, %s' % (ipv6, ipv6_t))
|
raise ValueError('L\'ipv6 n\'est pas celle EUID64 attendue. %s, %s' % (ipv6, ipv6_t))
|
||||||
|
|
||||||
|
if lock:
|
||||||
self.lock('ip6HostNumber', ipv6)
|
self.lock('ip6HostNumber', ipv6)
|
||||||
self._set('ip6HostNumber', [ipv6])
|
self._set('ip6HostNumber', [ipv6])
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue