diff options
| -rw-r--r-- | data.py | 30 | ||||
| -rwxr-xr-x | pywhoisd.py | 50 | 
2 files changed, 58 insertions, 22 deletions
| @@ -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__": | 
