From ab15c97378d41e6084eac42843e44733d1444bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Benencia?= Date: Wed, 1 Aug 2012 19:45:34 -0300 Subject: Completed some documentation --- data.py | 30 ++++++++++++++++++++++++------ pywhoisd.py | 50 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/data.py b/data.py index 200d3ba..4b48e19 100644 --- a/data.py +++ b/data.py @@ -1,31 +1,49 @@ from xml.etree.ElementTree import ElementTree -class WhoisNetwork(): +class Network(): + """A simple network definition""" + def __init__(self, name): self.name = name self.domain = None self.ip_blocks = [] self.data = {} -class WhoisData(): +class Data(): + """Abstract class for storing network information""" + def __init__(self, config): self.networks = [] self.config = config - def parse_config(self): pass - def load_data(self): pass + 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 WhoisDataXML(WhoisData): +class DataXML(Data): + """Reads network information from a XML file""" + def parse_config(): - self.data_file = self.config.get('Storage', 'xml_file') + """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']) diff --git a/pywhoisd.py b/pywhoisd.py index 7832cae..6b8a36d 100755 --- a/pywhoisd.py +++ b/pywhoisd.py @@ -1,51 +1,69 @@ #!/usr/bin/python3 import configparser -import whoiscore +import core class PyWhoisD(): """Main class. It reads the configuration options and starts the server""" def __init__(self): self.config = configparser.ConfigParser() - self.config.read('pywhoisd.conf') + self.config.read('examples/pywhoisd.conf') self.data = None self.daemon = None # What kind of storage are we using? def config_data(self): + """Config data sources. + + Only XML is supported. + """ + mode = self.config['Storage']['mode'] if mode == 'xml': self.data = WhoisData.WhoisDataXML(self.config) def config_daemon(self): + """Config common information source for all configured servers""" + self.config_data() self.daemon = WhoisDaemon(self.data) - # Returns true if web server is enabled - def webserver(self): - return self.config.get('Servers', 'web') == 'yes' + + def web(self): + """Returns true if web server is enabled""" + + return self.config['Servers']['web'] == 'yes' - # Returns true if web server is enabled - def classicserver(self): - self.config.get('Servers', 'classic') == 'yes' + + def classic(self): + """Returns true if web server is enabled""" + + self.config['Servers']['classic'] == 'yes' def config_servers(self): - if self.classicserver(): - self.classic_server = whoiscore.WhoisServer(self.config, self.daemon) + """Sets up server configuration from config files""" + + if self.classic(): + self.classic_server = core.WhoisClassicServer(self.config, self.daemon) - if self.webserver(self): - self.web_server = whoiscore.WhoisWebServer(self.config, self.daemon) + if self.web(): + self.web_server = core.WhoisWebServer(self.config, self.daemon) def start_servers(self): - if self.classicserver(): self.classic_server.start() - if self.webserver(): self.web_server.start() + """Start configured servers""" + + self.config_servers() + + if self.classic(): + self.classic_server.start() + + if self.web(): + self.web_server.start() def main(self): self.config_daemon() - self.config_servers() - self.start_servers() if __name__ == "__main__": -- cgit v1.2.3