Try to shutdown the UnixSocketServer when our program exits

Also add logging

#1 - Forward using iptables, pr0xy and custom DNS
This commit is contained in:
2019-07-27 21:34:45 +02:00
parent e04e2989e5
commit 88bf17ca8c

View File

@@ -72,6 +72,7 @@ class UnixSocketServer(socketserver.ThreadingMixIn, socketserver.UnixStreamServe
def stop(self):
self.shutdown()
self.server_close()
def isAlive(self):
return self.thread.isAlive()
@@ -182,17 +183,12 @@ class RandomResolver(BaseResolver):
return reply
def handle_sig(signum, frame):
logger.info('pid=%d, got signal: %s, stopping...', os.getpid(), signal.Signals(signum).name)
exit(0)
def main(args):
"""
:param args:
:type args: argparse.Namespace
"""
signal.signal(signal.SIGTERM, handle_sig)
log = logging.getLogger("fake-dns.main")
port = args.port
resolve_dir = Path(args.resolve_dir)
@@ -204,7 +200,20 @@ def main(args):
servers = [udp_server, tcp_server]
if args.socket_path:
socket_path = Path(args.socket_path)
servers.append(UnixSocketServer(socket_path, UnixSocketHandler))
socket_path.parent.mkdir(parents=True, exist_ok=True)
log.info("Creating unix socket to %s", socket_path)
servers.append(UnixSocketServer(str(socket_path), UnixSocketHandler))
def stop_servers():
for _server in servers:
_server.stop()
def handle_sig(signum, frame):
logger.info('pid=%d, got signal: %s, stopping...', os.getpid(), signal.Signals(signum).name)
stop_servers()
exit(0)
signal.signal(signal.SIGTERM | signal.SIGINT, handle_sig)
logger.info('starting DNS server on port %d', port)
for server in servers:
@@ -215,11 +224,13 @@ def main(args):
sleep(1)
except KeyboardInterrupt:
pass
for server in servers:
server.stop()
finally:
stop_servers()
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
parser = argparse.ArgumentParser(
description="A DNS server that returns fake IPs for requests"
)