blob: 5894e0519d40df4a12f21692a7acca6e998e4269 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
from xml.etree.ElementTree import ElementTree
class Network():
"""A simple network definition"""
def __init__(self, name):
self.name = name
self.domain = []
self.ip_blocks = []
self.data = {}
class Domain():
"""A simple domain definition"""
def __init__(self, name, domain):
self.name = name
self.domain = domain
self.admins = []
def add_admin(self, admin):
"""Add an administrator for this network"""
self.admins.append(admin)
class Person():
"""A simple person definition"""
def __init__(self, name, surname, email):
self.name = name
self.surname = surname
self.email = email
class Data():
"""Abstract class for storing anf getting information"""
def __init__(self, config):
self.networks = []
self.config = config
def parse_config(self):
"""Abstract method"""
pass
def load_data(self):
"""Abstract method"""
pass
def get_networks(self):
"""Return all networks. Common method for all kind of storages."""
if self.networks == None:
self.load_data()
return self.networks
class DataXML(Data):
"""Reads network information from a XML file"""
def parse_config():
"""Reads and sets up XML config file fields"""
self.data_file = self.config['Storage']['xml_file']
def load_data(self):
"""Parse XML for getting network information""" # Ugly implementation. Beautify.
root = ElementTree(file=self.data_file).getroot()
for elem in root:
network = WhoisNetwork(elem.attrib['name'])
for e in elem:
if e.tag == 'ip_block':
network.ip_blocks.append(e.text)
else:
network.data[e.tag] = e.text
self.networks.append(network)
|