Utilisation des listes d'ip precalculees
darcs-hash:20070521191029-c992d-736403ea227de4e2bf2862d42bac5fb76cd996a9.gz
This commit is contained in:
parent
ddf12f6a1a
commit
826beec2e9
1 changed files with 5 additions and 20 deletions
|
@ -18,6 +18,7 @@ from chgpass import chgpass
|
|||
from affich_tools import coul, prompt, cprint
|
||||
from email_tools import send_email
|
||||
from syslog import *
|
||||
from numeros_disponibles import lister_ip_dispo
|
||||
|
||||
date_format = '%d/%m/%Y %H:%M'
|
||||
hostname = gethostname().split(".")[0]
|
||||
|
@ -2668,37 +2669,21 @@ class Machine(BaseClasseCrans):
|
|||
# Dans quel réseau la machine doit-elle être placée ?
|
||||
if isinstance(self, MachineWifi):
|
||||
net = config.NETs['wifi-adh']
|
||||
pool_ip = lister_ip_dispo('wifi-adh')
|
||||
elif isinstance(self, BorneWifi):
|
||||
net = config.NETs['bornes']
|
||||
pool_ip = lister_ip_dispo('bornes')
|
||||
elif isinstance(self.proprietaire(), AssociationCrans):
|
||||
net = [ '0.0.0.0/0' ]
|
||||
pool_ip = lister_ip_dispo('all')
|
||||
else:
|
||||
try:
|
||||
net = config.NETs[self.proprietaire().chbre()[0].lower()]
|
||||
pool_ip = lister_ip_dispo(self.proprietaire().chbre()[0].lower())
|
||||
except:
|
||||
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
|
||||
|
||||
if ip == '<automatique>':
|
||||
pool_ip = [] # Pool d'IP à tester
|
||||
for ne in net:
|
||||
ip = ne.split('/')[0]
|
||||
ip = ip.split('.')
|
||||
n = []
|
||||
for i in ip:
|
||||
n.append(int(i))
|
||||
while 1:
|
||||
if n[3] < 255:
|
||||
n[3] += 1
|
||||
else:
|
||||
n[2] += 1
|
||||
n[3] = 0
|
||||
if n[2] == 255: break
|
||||
ip = "%d.%d.%d.%d" % tuple(n)
|
||||
if not iptools.AddrInNet(ip, ne):
|
||||
# On est allé trop loin
|
||||
break
|
||||
pool_ip.append(ip)
|
||||
|
||||
# On va prendre choisir une IP au hasard dans le pool des IP dispo
|
||||
random.shuffle(pool_ip)
|
||||
while len(pool_ip) > 0:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue