diff options
author | Raúl Benencia <rbenencia@linti.unlp.edu.ar> | 2012-08-01 18:05:04 -0300 |
---|---|---|
committer | Raúl Benencia <rbenencia@linti.unlp.edu.ar> | 2012-08-01 18:05:04 -0300 |
commit | 01aa58c5d7947e37bc3f0a927c2ed809873122a3 (patch) | |
tree | 31eb413ef072c5bc56da31b5820bb2be960d3726 /core.py | |
parent | 9eaa4fb13a8f761e4be0abec042501d600b4de10 (diff) |
New scheme. Starting port to python 3. It's now or never!
Diffstat (limited to 'core.py')
-rw-r--r-- | core.py | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -0,0 +1,57 @@ +from ipcalc import IP, Network +import socketserver + +class WhoisDaemon(): + def __init__(data): + self.data = data + + def query(q): + if is_ip(q): + self.search_ip(q) + else: + if is_domain(q): + self.search_domain(q) + else: + return self.print_help() + + def search_ip(self, ip): + result = {} + + # Iterate over all IP block elements + for network in self.data.get_networks(): + for block in network.ip_blocks: + if ip in Network(block): + result['name'] = network.name + for key in network.data: + result[key] = network.data[key] + + return result + + result['error'] = "Red no encontrada" + return result + + def search_domain(self): + pass + +class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler): + + def handle(self): + data = self.request.recv(100) + cur_thread = threading.current_thread() + response = self.get_header() + "\n" + self.get_answer(data) + "\n" + self.get_footer() + self.request.sendall(response) + +class WhoisServer(socketserver.TCPServer): + def __init__(self, config): + host = config.get('Servers', 'classic_host') + port = config.get('Servers', 'classic_port') + + TCPServer.__init__(self, (host, port), ThreadedTCPRequestHandler) + + def start(self): + pass + +class WhoisWebServer(socketserver.TCPServer): + def __init__(self, config): + self.host = config.get('Servers', 'web_host') + self.port = config.get('Servers', 'web_host') |