ldap_crans: valeur "<automatique>" pour champ mac
Et on vire l'ipv6 dans ce cas.
This commit is contained in:
parent
5c9e740f73
commit
ff88440f2e
3 changed files with 22 additions and 3 deletions
|
@ -24,7 +24,11 @@ import netaddr
|
||||||
|
|
||||||
def mac_to_ipv6(ipv6_prefix, mac_address):
|
def mac_to_ipv6(ipv6_prefix, mac_address):
|
||||||
"""Convert a MAC address (EUI48) to an IPv6 (prefix::EUI64)."""
|
"""Convert a MAC address (EUI48) to an IPv6 (prefix::EUI64)."""
|
||||||
|
if mac_address == '<automatique>':
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if type(mac_address) in [str, unicode]:
|
||||||
|
mac_address = netaddr.EUI(mac_address)
|
||||||
addr = int(mac_address.bits(netaddr.mac_bare), 2)
|
addr = int(mac_address.bits(netaddr.mac_bare), 2)
|
||||||
ip6addr = (((addr >> 24) ^ (1 << 17)) << 40) | (0xFFFE << 24) | (addr & 0xFFFFFF)
|
ip6addr = (((addr >> 24) ^ (1 << 17)) << 40) | (0xFFFE << 24) | (addr & 0xFFFFFF)
|
||||||
n = netaddr.IPNetwork(ipv6_prefix)
|
n = netaddr.IPNetwork(ipv6_prefix)
|
||||||
|
|
|
@ -223,6 +223,9 @@ def format_mac(mac):
|
||||||
Le séparateur original peut être :, - ou rien
|
Le séparateur original peut être :, - ou rien
|
||||||
Retourne la mac formatée.
|
Retourne la mac formatée.
|
||||||
"""
|
"""
|
||||||
|
mac = mac.strip()
|
||||||
|
if mac == '<automatique>':
|
||||||
|
return mac
|
||||||
l, mac = preattr(mac)
|
l, mac = preattr(mac)
|
||||||
mac = mac.strip().replace(' ','').replace("-", ":")
|
mac = mac.strip().replace(' ','').replace("-", ":")
|
||||||
if mac.count(":") == 5:
|
if mac.count(":") == 5:
|
||||||
|
@ -2863,6 +2866,10 @@ class Machine(BaseClasseCrans):
|
||||||
|
|
||||||
mac = format_mac(mac)
|
mac = format_mac(mac)
|
||||||
|
|
||||||
|
if mac == '<automatique>':
|
||||||
|
multi_ok = True
|
||||||
|
lock = False
|
||||||
|
|
||||||
# La MAC serait-elle une MAC à la con ?
|
# La MAC serait-elle une MAC à la con ?
|
||||||
if mac == "00:04:4b:80:80:03":
|
if mac == "00:04:4b:80:80:03":
|
||||||
raise ValueError(u"Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.", 2)
|
raise ValueError(u"Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.", 2)
|
||||||
|
@ -2898,7 +2905,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
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)), lock)
|
self.ipv6(ip6tools.mac_to_ipv6(net, mac), lock)
|
||||||
else:
|
else:
|
||||||
self.ipv6(config.ipv6_machines_speciales[int(self.rid())], lock)
|
self.ipv6(config.ipv6_machines_speciales[int(self.rid())], lock)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -3390,7 +3397,14 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
"""Retourne l'adresse IPv6 correspondant à la machine"""
|
"""Retourne l'adresse IPv6 correspondant à la machine"""
|
||||||
|
|
||||||
if ipv6 == None:
|
if ipv6 == None:
|
||||||
return netaddr.IPAddress(self._data.get('ip6HostNumber', [''])[0])
|
if self._data.get('ip6HostNumber', []) == []:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return netaddr.IPAddress(self._data.get('ip6HostNumber')[0])
|
||||||
|
|
||||||
|
if ipv6 == '':
|
||||||
|
self._set('ip6HostNumber', [])
|
||||||
|
return
|
||||||
|
|
||||||
ipv6 = str(ipv6)
|
ipv6 = str(ipv6)
|
||||||
net = self.netv6()
|
net = self.netv6()
|
||||||
|
|
|
@ -670,7 +670,8 @@ def machine_details(machine) :
|
||||||
|
|
||||||
f+= coul(u'IP : ','gras') + "%s\t\t" %machine.ip()
|
f+= coul(u'IP : ','gras') + "%s\t\t" %machine.ip()
|
||||||
f+= coul(u'MAC : ','gras') + "%s\n" %machine.mac()
|
f+= coul(u'MAC : ','gras') + "%s\n" %machine.mac()
|
||||||
f+= coul(u'IPv6 : ','gras') + "%s\n" %machine.ipv6()
|
if machine.ipv6() != None:
|
||||||
|
f+= coul(u'IPv6 : ','gras') + "%s\n" %machine.ipv6()
|
||||||
|
|
||||||
if len(machine.sshFingerprint()) > 0 and aff_ssh:
|
if len(machine.sshFingerprint()) > 0 and aff_ssh:
|
||||||
f += u"\n".join([coul(u'Fingerprint SSH : ', 'gras') + u"%s" % (i) for i in machine.sshFingerprint()])+"\n"
|
f += u"\n".join([coul(u'Fingerprint SSH : ', 'gras') + u"%s" % (i) for i in machine.sshFingerprint()])+"\n"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue