def test(): header = Header(id, flags, 1, 0, 0, 0) query = Query('www.google.com', Query.TYPE_A, Query.CLASS_IN) req = DnsRequest(header, [query]) data = req.serialize() sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.connect((ip, 53)) sock.settimeout(2) sock.sendall(data) sock.recv(65535) sock.close()
def handle(self): hosts = self.server.hosts master = self.server.master data, sock = self.request req = DnsRequest.parse(StringIO(data)) domain = req.queries[0].name ip = hosts.get_ip(self.client_address[0], domain) if ip: self.log( '%s -- [%s] %s %s %s' % (self.client_address[0], time.ctime(), domain, 'Found', ip)) header = req.header header.answer_rrs = 1 query = req.queries[0] answer = Answer(domain, Answer.TYPE_A, Answer.CLASS_IN, 60, ip) resp = DnsResponse(header, [query], [answer]).serialize() else: self.log( '%s -- [%s] %s %s' % (self.client_address[0], time.ctime(), domain, 'Not Found')) resp = master.query(data) sock.sendto(resp, self.client_address)
def handle(self): data, sock = self.request hosts = self.server.hosts req = DnsRequest.parse(StringIO(data)) domain = req.queries[0].name ip = hosts.get_ip(domain) if ip: self.log('%s -- [%s] %s %s %s' % (self.client_address[0], time.ctime(), domain, 'Found', ip)) header = req.header header.flags = FLAGS_RESPONSE_OK header.answer_rrs = 1 query = req.queries[0] answer = Answer(domain, Answer.TYPE_A, Answer.CLASS_IN, 60, ip) resp = DnsResponse(header, [query], [answer]).serialize() else: self.log('%s -- [%s] %s %s' % (self.client_address[0], time.ctime(), domain, 'Not Found')) resp = Dns(self.server.dns_server).query(data) sock.sendto(resp, self.client_address)