From 1194bda2ad70feda93283d673d87db1f89a4e0a6 Mon Sep 17 00:00:00 2001 From: Ramin Gharib Date: Mon, 12 Apr 2021 15:09:33 +0200 Subject: [PATCH] Add generic node script to examples (#96) * add generic node script to examples * Update examples/node.py Co-authored-by: Brian Muller * Update examples/node.py Co-authored-by: Brian Muller * remove server.set function Co-authored-by: Brian Muller --- examples/first_node.py | 26 ------------------- examples/node.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 26 deletions(-) delete mode 100644 examples/first_node.py create mode 100644 examples/node.py diff --git a/examples/first_node.py b/examples/first_node.py deleted file mode 100644 index 3f99b67..0000000 --- a/examples/first_node.py +++ /dev/null @@ -1,26 +0,0 @@ -import logging -import asyncio - -from kademlia.network import Server - -handler = logging.StreamHandler() -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') -handler.setFormatter(formatter) -log = logging.getLogger('kademlia') -log.addHandler(handler) -log.setLevel(logging.DEBUG) - - -loop = asyncio.get_event_loop() -loop.set_debug(True) - -server = Server() -loop.run_until_complete(server.listen(8468)) - -try: - loop.run_forever() -except KeyboardInterrupt: - pass -finally: - server.stop() - loop.close() diff --git a/examples/node.py b/examples/node.py new file mode 100644 index 0000000..b59e18f --- /dev/null +++ b/examples/node.py @@ -0,0 +1,58 @@ +import argparse +import logging +import asyncio + +from kademlia.network import Server + +handler = logging.StreamHandler() +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +handler.setFormatter(formatter) +log = logging.getLogger('kademlia') +log.addHandler(handler) +log.setLevel(logging.DEBUG) + +server = Server() + + +def parse_arguments(): + parser = argparse.ArgumentParser() + + # Optional arguments + parser.add_argument("-i", "--ip", help="IP address of existing node", type=str, default=None) + parser.add_argument("-p", "--port", help="port number of existing node", type=int, default=None) + + return parser.parse_args() + + +async def connect_to_bootstrap_node(args): + await server.listen(8469) + bootstrap_node = (args.ip, int(args.port)) + await server.bootstrap([bootstrap_node]) + + +def create_bootstrap_node(): + loop = asyncio.get_event_loop() + loop.set_debug(True) + + loop.run_until_complete(server.listen(8468)) + + try: + loop.run_forever() + except KeyboardInterrupt: + pass + finally: + server.stop() + loop.close() + + +def main(): + args = parse_arguments() + + if args.ip and args.port: + asyncio.run(connect_to_bootstrap_node(args)) + else: + create_bootstrap_node() + + +if __name__ == "__main__": + main()