Exemple #1
0
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
Exemple #2
0
    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
Exemple #3
0
"""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)