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')