| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 import socket, threading, time | 3 import logging, socket, threading, time |
| 4 | 4 |
| 5 class DNSQuery: | 5 class DNSQuery: |
| 6 TYPE = '\x00\x01' # An 'A' record | 6 TYPE = '\x00\x01' # An 'A' record |
| 7 CLASS = '\x00\x01' # of the Internet class | 7 CLASS = '\x00\x01' # of the Internet class |
| 8 TTL = '\x00\x00\x00\x3c' # 60 hops | 8 TTL = '\x00\x00\x00\x3c' # 60 hops |
| 9 RESOURCE_DATA_LENGTH = '\x00\x04' # 4 bytes | 9 RESOURCE_DATA_LENGTH = '\x00\x04' # 4 bytes |
| 10 | 10 |
| 11 | 11 |
| 12 def __init__(self, data): | 12 def __init__(self, data): |
| 13 self.data=data | 13 self.data=data |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 Example use: | 69 Example use: |
| 70 server = DNSServer(fake_ip='127.0.0.1') | 70 server = DNSServer(fake_ip='127.0.0.1') |
| 71 stopper = threading.Event() | 71 stopper = threading.Event() |
| 72 thread = threading.Thread(target=server.run, args=(stopper,)) | 72 thread = threading.Thread(target=server.run, args=(stopper,)) |
| 73 . | 73 . |
| 74 . | 74 . |
| 75 . | 75 . |
| 76 stopper.set() | 76 stopper.set() |
| 77 """ | 77 """ |
| 78 self._udps.bind((self._address, self._port)) | 78 self._udps.bind((self._address, self._port)) |
| 79 print 'miniFakeDns listening on port %d' % self._port | 79 logging.info('miniFakeDns listening on port %d' % self._port) |
| 80 self._udps.settimeout(1) | 80 self._udps.settimeout(1) |
| 81 while not stop.is_set(): | 81 while not stop.is_set(): |
| 82 try: | 82 try: |
| 83 data, addr = self._udps.recvfrom(1500) | 83 data, addr = self._udps.recvfrom(1500) |
| 84 p=DNSQuery(data) | 84 p=DNSQuery(data) |
| 85 self._udps.sendto(p.respuesta(self._fake_ip), addr) | 85 self._udps.sendto(p.respuesta(self._fake_ip), addr) |
| 86 print 'Respuesta: %s -> %s' % (p.dominio, self._fake_ip) | 86 logging.debug('Response: %s -> %s' % (p.dominio, self._fake_ip)) |
| 87 except socket.timeout: | 87 except socket.timeout: |
| 88 pass | 88 pass |
| 89 | 89 |
| 90 | 90 |
| 91 def __stop(self): | 91 def __stop(self): |
| 92 self._udps.close() | 92 self._udps.close() |
| 93 | 93 |
| 94 | 94 |
| 95 if __name__ == '__main__': | 95 if __name__ == '__main__': |
| 96 ip='192.168.1.1' | 96 ip='192.168.1.1' |
| 97 print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip | 97 print 'pyminifakeDNS:: dom.query. 60 IN A %s' % ip |
| 98 server = DNSServer(fake_ip=ip) | 98 server = DNSServer(fake_ip=ip) |
| 99 stopper = threading.Event() | 99 stopper = threading.Event() |
| 100 thread = threading.Thread(target=server.run, args=(stopper,)) | 100 thread = threading.Thread(target=server.run, args=(stopper,)) |
| 101 try: | 101 try: |
| 102 thread.start() | 102 thread.start() |
| 103 while 1: | 103 while 1: |
| 104 time.sleep(1) | 104 time.sleep(1) |
| 105 except KeyboardInterrupt: | 105 except KeyboardInterrupt: |
| 106 print 'stopping thread' | 106 print 'stopping thread' |
| 107 stopper.set() | 107 stopper.set() |
| 108 thread.join() | 108 thread.join() |
| OLD | NEW |