def initialize_dht( bootstrap_ip_port_pair_list: List[Tuple[str, int]], listen_port: int, ) -> None: """ connects to the distributed hash table if no bootstrap ip port pair list is given, it starts a new dht :param bootstrap_ip_port_pair_list: list of ip port tuples to connect to \ the dht :param listen_port: port to listen on :return: instance of server """ global _node_instance get_logger("kademlia") logger.debug("set up DHT: %s", str(bootstrap_ip_port_pair_list)) node = Server(storage=DropPeerDHTStorage()) node.listen(listen_port) loop = asyncio.get_event_loop() if len(bootstrap_ip_port_pair_list) > 0: loop.run_until_complete(node.bootstrap(bootstrap_ip_port_pair_list)) _node_instance = node
def log(self) -> logging.Logger: """ A logger for this object :return: a logger object for this class """ if self._log is None: self._log = get_logger( '.'.join([ __name__, self.__class__.__name__, crypto_util.b64encode(self.id).decode('utf-8'), ]), ) return self._log
"""Functions for initializing a new node""" import asyncio import os import shutil from pathlib import Path from typing import Optional import aiofiles # type: ignore from syncr_backend.constants import DEFAULT_INIT_DIR from syncr_backend.util import crypto_util from syncr_backend.util.log_util import get_logger logger = get_logger(__name__) def force_initialize_node(init_directory: Optional[str] = None) -> None: """ Initialize new node in .node directory and overwrite existing .node dir :param init_directory: directory where node files are stored \ init_directory of none uses ~/.{DEFAULT_INIT_DIR} """ logger.warning("forcing node initialization of %s", init_directory) full_directory = get_full_init_directory(init_directory) if os.path.exists(full_directory): shutil.rmtree(full_directory) initialize_node(full_directory)