Detabification

darcs-hash:20050715153639-d1718-f52169c6a0b4a9dd0969f54f4aa4cf8db0a9d8da.gz
This commit is contained in:
bernat 2005-07-15 17:36:39 +02:00
parent efdc7b91de
commit c090c69ae4

View file

@ -22,9 +22,9 @@ def QuadToDec(ip) :
if len(test)!=4 : raise ValueError('IP Invalide') if len(test)!=4 : raise ValueError('IP Invalide')
ip_dec = 0 ip_dec = 0
for z in range(0,4) : for z in range(0,4) :
n = int(test[z]) n = int(test[z])
if n<0 or n>255 : raise ValueError('IP Invalide') if n<0 or n>255 : raise ValueError('IP Invalide')
ip_dec += n * ( 256**(3-z) ) ip_dec += n * ( 256**(3-z) )
__QuadToDecDone[ip] = ip_dec __QuadToDecDone[ip] = ip_dec
return ip_dec return ip_dec
@ -35,42 +35,42 @@ def DecToQuad(ip_dec) :
ip_dec est l'IP en base 10 ip_dec est l'IP en base 10
""" """
try : try :
return "%d.%d.%d.%d" % ( \ return "%d.%d.%d.%d" % ( \
ip_dec/(256**3) , ip_dec/(256**3) ,
(ip_dec%(256**3)) / (256**2) , (ip_dec%(256**3)) / (256**2) ,
( (ip_dec%(256**3)) % (256**2) ) / 256 , ( (ip_dec%(256**3)) % (256**2) ) / 256 ,
( (ip_dec%(256**3)) % (256**2) ) % 256 ) ( (ip_dec%(256**3)) % (256**2) ) % 256 )
except : except :
raise ValueError('IP Invalide') raise ValueError('IP Invalide')
def param(net) : def param(net) :
""" """
net est un résau fourni sous la forme xxx.xxx.xxx.xxx/yy net est un résau fourni sous la forme xxx.xxx.xxx.xxx/yy
si donnée valide retourne un dictionnaire : si donnée valide retourne un dictionnaire :
{ 'network' : xxx.xxx.xxx.xxx , { 'network' : xxx.xxx.xxx.xxx ,
'netmask' : yyy.yyy.yyy.yyy , 'netmask' : yyy.yyy.yyy.yyy ,
'broadcast' : zzz.zzz.zzz.zzz } 'broadcast' : zzz.zzz.zzz.zzz }
sinon retourne {} sinon retourne {}
""" """
reseau = {} reseau = {}
ip, mask = net.split('/') ip, mask = net.split('/')
try : try :
mask = int(mask) mask = int(mask)
dec_ip = QuadToDec(ip) dec_ip = QuadToDec(ip)
if dec_ip == -1 : raise if dec_ip == -1 : raise
except : except :
return {} return {}
# Calcul du netmask # Calcul du netmask
dec_netmask=0 dec_netmask=0
non_dec_netmask=0 # On calcule aussi le complémentaire non_dec_netmask=0 # On calcule aussi le complémentaire
for i in range(0,32) : for i in range(0,32) :
if i < mask : if i < mask :
dec_netmask += 2**(31-i) dec_netmask += 2**(31-i)
else : else :
non_dec_netmask += 2**(31-i) non_dec_netmask += 2**(31-i)
reseau['netmask'] = DecToQuad(dec_netmask) reseau['netmask'] = DecToQuad(dec_netmask)
# Calcul du network # Calcul du network
@ -92,19 +92,19 @@ def AddrInNet(ip,net) :
r = False r = False
for ne in net : for ne in net :
n = param(ne) n = param(ne)
if ip == n['broadcast'] or ip ==n['network'] : if ip == n['broadcast'] or ip ==n['network'] :
return False return False
r = r or QuadToDec(n['netmask']) & QuadToDec(ip) == QuadToDec(n['network']) r = r or QuadToDec(n['netmask']) & QuadToDec(ip) == QuadToDec(n['network'])
return r return r
def AddrInNets(ip,nets) : def AddrInNets(ip,nets) :
""" Vérifie si l'ip est au moins dans un des réseaux """ Vérifie si l'ip est au moins dans un des réseaux
de la liste nets (voir AddrInNet) """ de la liste nets (voir AddrInNet) """
for net in nets : for net in nets :
if AddrInNet(ip,net) : if AddrInNet(ip,net) :
return True return True
return False return False
if __name__ == '__main__' : if __name__ == '__main__' :