Le routeur n'est plus komaz mais odlyd
This commit is contained in:
parent
b99600575d
commit
34876f3b55
3 changed files with 21 additions and 23 deletions
|
@ -28,9 +28,9 @@ def ips_of_metadata(clients, vlan='adm'):
|
|||
"""Renvoie la liste des IPs des machines de la liste ``clients``
|
||||
#TODO: sur le vlan ``vlan``
|
||||
sur le vlan adm
|
||||
|
||||
|
||||
Renvoie les Ipv4 et Ipv6.
|
||||
|
||||
|
||||
``clients`` est une liste de ClientMetadata, qui peut être obtenue via
|
||||
metadata.query.by_groups (ou similaire)
|
||||
"""
|
||||
|
@ -77,7 +77,7 @@ ip_vlan = {
|
|||
'vlan-isolement':'10.52.0.10'
|
||||
},
|
||||
'titanic' : {'vlan-ens' : '10.2.9.1' },
|
||||
'komaz' : {'vlan-ens' : '10.2.9.4' },
|
||||
'odlyd' : {'vlan-ens' : '10.2.9.4' },
|
||||
}
|
||||
|
||||
def radinip():
|
||||
|
@ -103,32 +103,32 @@ def isolementip():
|
|||
return ip_vlan[hostname]["vlan-isolement"]
|
||||
else:
|
||||
raise NotImplementedError, "Ce serveur n'a rien a faire sur le VLAN isolement"
|
||||
|
||||
|
||||
def cidr_to_regex(cidr):
|
||||
"""Get a ipv4 cidr string and return a regexp for it.
|
||||
https://chris-lamb.co.uk/posts/matching-ips-regexes-concidrd-harmful
|
||||
"""
|
||||
ip, prefix = cidr.split('/')
|
||||
|
||||
|
||||
base = 0
|
||||
for val in map(int, ip.split('.')):
|
||||
base = (base << 8) | val
|
||||
|
||||
|
||||
shift = 32 - int(prefix)
|
||||
start = base >> shift << shift
|
||||
end = start | (1 << shift) - 1
|
||||
|
||||
|
||||
def regex(lower, upper):
|
||||
if lower == upper:
|
||||
return str(lower)
|
||||
|
||||
|
||||
from math import log10
|
||||
exp = int(log10(upper - lower))
|
||||
delta = 10 ** exp
|
||||
|
||||
|
||||
if lower == 0 and upper == 255:
|
||||
return "\d+"
|
||||
|
||||
|
||||
if delta == 1:
|
||||
val = ""
|
||||
for a, b in zip(str(lower), str(upper)):
|
||||
|
@ -141,22 +141,22 @@ def cidr_to_regex(cidr):
|
|||
else:
|
||||
val += '[%s-%s]' % (a, b)
|
||||
return val
|
||||
|
||||
|
||||
def gen_classes():
|
||||
floor_ = lambda x: int(round(x / delta, 0) * delta)
|
||||
|
||||
|
||||
xs = range(floor_(upper) - delta, floor_(lower), -delta)
|
||||
for x in map(str, xs):
|
||||
yield '%s%s' % (x[:-exp], r'\d' * exp)
|
||||
|
||||
|
||||
yield regex(lower, floor_(lower) + (delta - 1))
|
||||
yield regex(floor_(upper), upper)
|
||||
|
||||
|
||||
return '|'.join(gen_classes())
|
||||
|
||||
|
||||
def get_parts():
|
||||
for x in range(24, -1, -8):
|
||||
yield regex(start >> x & 255, end >> x & 255)
|
||||
|
||||
|
||||
return '^%s$' % r'\.'.join(get_parts())
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue