4
0
mirror of https://github.com/cwinfo/yggdrasil-map synced 2025-08-14 15:58:10 +00:00

Validate received graph format

This commit is contained in:
Vanhala Antti
2014-06-04 21:41:33 +03:00
parent 613b5aec09
commit ddb2a681e4
5 changed files with 59 additions and 28 deletions

View File

@@ -1,7 +1,15 @@
import re
class Node:
def __init__(self, ip, version=None, label=None):
if not valid_cjdns_ip(ip):
raise ValueError('Invalid IP address')
if not valid_version(version):
raise ValueError('Invalid version')
self.ip = ip
self.version = version
self.version = int(version)
self.label = ip[-4:] if label == None else label
def __lt__(self, b):
@@ -24,3 +32,18 @@ class Edge:
return 'Edge(a.ip="%s", b.ip="%s")' % (
self.a.ip,
self.b.ip)
_re_cjdns_ip = re.compile(r'^fc[0-9a-f]{2}(:[0-9a-f]{4}){7}$', re.IGNORECASE)
def valid_cjdns_ip(ip):
return _re_cjdns_ip.match(ip) != None
def valid_version(version):
try:
return int(version) < 20
except ValueError:
return False