On refuse la MAC si elle n'est pas d'un constructeur connu plutot que de

refuser celles ne commencant pas par 00.

darcs-hash:20050923213505-41617-664368838711143f2797c92dc99c5a058bd55d6b.gz
This commit is contained in:
pauget 2005-09-23 23:35:05 +02:00
parent 7419250d8d
commit 201f976b98
2 changed files with 7686 additions and 4 deletions

7665
gestion/ethercodes.dat Normal file

File diff suppressed because it is too large Load diff

View file

@ -1862,12 +1862,29 @@ class machine(base_classes_crans) :
raise ValueError(u'Mac déja utilisée sur le réseau.',1) raise ValueError(u'Mac déja utilisée sur le réseau.',1)
# La MAC serait-elle une MAC à la con ? # La MAC serait-elle une MAC à la con ?
if mac.lower() == "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)
elif mac.lower()[0:11] == "44:45:53:54": elif mac[0:11] == "44:45:53:54":
raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2) raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
elif mac[0:2] != "00":
raise ValueError(u"L'adresse MAC correspond à un pont réseau, désactivez ce pont réseau (ou contactez une nounou si ce n'est pas un pont réseau).",2) # Le test final
# Extraction des trois premiers chiffres de la mac en
# supprimant les zéros superflus pour coller au format
# de la base d'arpwatch
prefix=mac[:8].replace(':0',':') + '\t'
if prefix[0]=='0' : prefix=prefix[1:]
vendor = ''
try:
for line in open('/usr/scripts/gestion/ethercodes.dat').readlines() :
if line.find(prefix)==0 :
vendor = line.replace(prefix,'').strip()
break
except IOError:
# Le fichier existe pas, on sors
raise RuntimeError("Fichier de fabiquants de MAC non trouvé !")
if not vendor :
raise ValueError(u"Le constructeur correspondant à cette adresse MAC ne peut être trouvé.\nL'adresse MAC correspond peut-être à un pont réseau, désactivez ce pont réseau.\nContactez nounou si la MAC est bien celle d'une carte.",2)
# Lock de la mac # Lock de la mac
self.lock('macAddress',mac) self.lock('macAddress',mac)