Beispiel #1
0
 def __init__(self,
              network=None,
              domain_id=None,
              workingdir=".",
              loglevel="all",
              logname=None):
     if network is not None:
         self.network = network
         self.core = network.core
         self.stats = network.core.stats
         self.data_handler = network.domains[domain_id]['data']
     else:
         self.stats = BBcStats()
     self.repair_log = os.path.join(workingdir, domain_id.hex(),
                                    "repair_log.json")
     self.logger = logger.get_logger(key="repair_manager",
                                     level=loglevel,
                                     logname=logname)
     self.domain_id = domain_id
     self.queue = queue.Queue()
     self.requesting_list = dict()
     self.loop_flag = True
     th_nw_loop = threading.Thread(target=self._manager_loop)
     th_nw_loop.setDaemon(True)
     th_nw_loop.start()
Beispiel #2
0
 def __init__(self,
              domain_id,
              namespace_id=default_namespace_id,
              port=DEFAULT_CORE_PORT,
              logname="-",
              loglevel="none"):
     self.logger = logger.get_logger(
         key="id_lib", level=loglevel,
         logname=logname)  # FIXME: use the logger
     self.domain_id = domain_id
     self.namespace_id = namespace_id
     self.__app = bbc_app.BBcAppClient(port=DEFAULT_CORE_PORT,
                                       loglevel=loglevel)
     self.__app.set_user_id(id_publickey_map_user_id)
     self.__app.set_domain_id(domain_id)
     self.__app.set_callback(bbc_app.Callback())
     ret = self.__app.register_to_core()
     assert ret
     self.__db = app_support_lib.Database()
     self.__db.setup_db(domain_id, NAME_OF_DB)
     self.__db.create_table_in_db(domain_id,
                                  NAME_OF_DB,
                                  'id_pubkey_table',
                                  id_pubkey_table_definition,
                                  indices=[0, 1])
Beispiel #3
0
 def __init__(self, config, core=None, p2p_port=None, external_ip4addr=None, external_ip6addr=None,
              loglevel="all", logname=None):
     self.core = core
     self.stats = core.stats
     self.logger = logger.get_logger(key="bbc_network", level=loglevel, logname=logname)
     self.logname = logname
     self.loglevel = loglevel
     self.config = config
     self.domain0manager = None
     conf = self.config.get_config()
     self.domains = dict()
     self.ip_address, self.ip6_address = _check_my_IPaddresses()
     if external_ip4addr is not None:
         self.external_ip4addr = external_ip4addr
     else:
         self.external_ip4addr = self.ip_address
     if external_ip6addr is not None:
         self.external_ip6addr = external_ip6addr
     else:
         self.external_ip6addr = self.ip6_address
     if p2p_port is not None:
         conf['network']['p2p_port'] = p2p_port
         self.config.update_config()
     self.port = conf['network']['p2p_port']
     self.socket_udp = None
     self.socket_udp6 = None
     if not self.setup_udp_socket():
         self.logger.error("** Fail to setup UDP socket **")
         return
     self.listen_socket = None
     self.listen_socket6 = None
     self.max_connections = conf['network']['max_connections']
     if not self.setup_tcp_server():
         self.logger.error("** Fail to setup TCP server **")
         return
Beispiel #4
0
 def __init__(self,
              networking=None,
              config=None,
              workingdir=None,
              domain_id=None,
              loglevel="all",
              logname=None):
     self.networking = networking
     self.core = networking.core
     self.stats = networking.core.stats
     self.logger = logger.get_logger(key="data_handler",
                                     level=loglevel,
                                     logname=logname)
     self.domain_id = domain_id
     self.domain_id_str = bbclib.convert_id_to_string(domain_id)
     self.config = config
     self.working_dir = workingdir
     self.storage_root = os.path.join(self.working_dir, self.domain_id_str)
     if not os.path.exists(self.storage_root):
         os.makedirs(self.storage_root, exist_ok=True)
     self.use_external_storage = self._storage_setup()
     self.replication_strategy = DataHandler.REPLICATION_ALL
     self.upgraded_from = DB_VERSION
     self.db_adaptors = list()
     self._db_setup()
Beispiel #5
0
    def __init__(self,
                 domain_id,
                 mint_id,
                 user_id,
                 idPublickeyMap,
                 port=DEFAULT_CORE_PORT,
                 logname="-",
                 loglevel="none"):
        self.logger = logger.get_logger(key="token_lib",
                                        level=loglevel,
                                        logname=logname)  # FIXME: use logger
        self.condition = 0
        self.domain_id = domain_id
        self.mint_id = mint_id
        self.user_id = user_id
        self.idPublickeyMap = idPublickeyMap
        self.app = bbc_app.BBcAppClient(port=DEFAULT_CORE_PORT,
                                        loglevel=loglevel)
        self.app.set_user_id(user_id)
        self.app.set_domain_id(domain_id)
        self.app.set_callback(MintCallback(logger, self))
        ret = self.app.register_to_core()
        assert ret

        self.store = Store(self.domain_id, self.mint_id, self.app)
        self.app.request_insert_completion_notification(self.mint_id)
 def __init__(self, dbtype="sqlite", loglevel="all", logname=None):
     self.logger = logger.get_logger(key="app_support_db",
                                     level=loglevel,
                                     logname=logname)
     self.dbtype = dbtype
     self.db_name = dict()
     self.db = dict()
     self.db_cur = dict()
Beispiel #7
0
    def __init__(self,
                 config,
                 networking=None,
                 domain_id=None,
                 enabled=False,
                 loglevel="all",
                 logname=None):
        """Constructs a ledger subsystem. Currently just supports sqlite3.

        Args:
            config (BBcConfig): The configuration object
            networking: The networking (need access to ledger manager)
            domain_id (bytes): The domain ID.
            enabled (bool): If communication with the subsystem is enabled.
            loglevel (str): The loggging level.
            logname (str): The name of the log.

        """

        self.networking = networking
        self.domain_id = domain_id
        if domain_id is None:
            return
        self.data_handler = self.networking.domains[domain_id]['data']
        self.logger = logger.get_logger(key="ledger_subsystem",
                                        level=loglevel,
                                        logname=logname)
        self.queue = Queue()
        self.enabled = enabled
        self.config = config.get_domain_config(self.domain_id)
        if 'ethereum' in self.config:
            self.eth_config = self.config['ethereum']
        else:
            conf = config.get_config()
            self.eth_config = \
                    None if 'ethereum' not in conf else conf['ethereum']
        self.eth = None
        if 'ledger_subsystem' not in self.config:
            self.config['ledger_subsystem'] = {
                'subsystem': DEFAULT_SUBSYSTEM,
                'max_transactions': DEFAULT_CAPACITY,
                'max_seconds': DEFAULT_INTERVAL,
            }
        self.capacity = self.config['ledger_subsystem']['max_transactions']
        self.interval = self.config['ledger_subsystem']['max_seconds']
        self.timer = None
        self.temp_file_dic = os.path.join(self.data_handler.storage_root,
                                          'ledger_subsystem.json')

        if self.enabled:
            self.enable()
        thread_loop = threading.Thread(target=self.subsystem_loop)
        thread_loop.setDaemon(True)
        thread_loop.start()
Beispiel #8
0
 def __init__(self, networking, domain_id, loglevel="all", logname=None):
     self.networking = networking
     self.stats = networking.core.stats
     self.domain_id = domain_id
     self.logger = logger.get_logger(key="user_message_routing",
                                     level=loglevel,
                                     logname=logname)
     self.aes_name_list = dict()
     self.cross_ref_list = list()
     self.registered_users = dict()
     self.forwarding_entries = dict()
     self.on_going_timers = set()
Beispiel #9
0
 def __init__(self, domain_id_str=None, config=None, workingdir=None):
     self.logger = logger.get_logger("dummy")
     self.config = config
     self.working_dir = workingdir
     self.storage_root = os.path.join(self.working_dir, domain_id_str)
     if not os.path.exists(self.storage_root):
         os.makedirs(self.storage_root, exist_ok=True)
     self.stats = bbc_stats.BBcStats()  # dummy
     self.upgraded_from = data_handler.DB_VERSION
     self.db_adaptors = list()
     self.dbs = list()
     self._db_setup()
Beispiel #10
0
 def __init__(self,
              handler=None,
              db_name=None,
              db_num=0,
              loglevel="all",
              logname=None):
     self.handler = handler
     self.db = None
     self.db_cur = None
     self.db_name = db_name
     self.db_num = db_num
     self.placeholder = ""
     self.logger = logger.get_logger(key="db_adaptor",
                                     level=loglevel,
                                     logname=logname)
Beispiel #11
0
 def __init__(self, networking=None, node_id=None, loglevel="all", logname=None):
     self.networking = networking
     self.stats = networking.core.stats
     self.my_node_id = node_id
     self.logger = logger.get_logger(key="domain0", level=loglevel, logname=logname)
     self.domains_belong_to = set()
     self.domain_list = dict()        # {domain_id: list(node_id,,,)}
     self.node_domain_list = dict()   # {node_id: {domain_id: expiration_time}}
     self.domain_accept_margin = dict()
     self.requested_cross_refs = dict()
     self.remove_lock = threading.Lock()
     self.advertise_timer_entry = None
     self._update_advertise_timer_entry()
     self.cross_ref_timer_entry = None
     self._update_cross_ref_timer_entry()
Beispiel #12
0
    def __init__(self, dbtype="sqlite", loglevel="all", logname=None):
        """Initializes the object.

        Args:
            dbtype (str): The type of database. "sqlite" by default.
            loglevel (str): The logging level. "all" by default.
            logname (str): The logger name. None by default.

        """
        self.logger = logger.get_logger(key="app_support_db",
                                        level=loglevel,
                                        logname=logname)
        self.dbtype = dbtype
        self.db_name = dict()
        self.db = dict()
        self.db_cur = dict()
Beispiel #13
0
 def __init__(self,
              network=None,
              config=None,
              domain_id=None,
              node_id=None,
              loglevel="all",
              logname=None):
     self.network = network
     self.stats = network.core.stats
     self.neighbors = network.domains[domain_id]['neighbor']
     self.config = config
     self.domain_id = domain_id
     self.logger = logger.get_logger(
         key="topology_manager:%s" %
         binascii.b2a_hex(domain_id[:4]).decode(),
         level=loglevel,
         logname=logname)
     self.my_node_id = node_id
     self.advertise_wait_entry = None
     self.neighbor_refresh_timer_entry = None
     self.update_refresh_timer_entry()
Beispiel #14
0
    def __init__(self,
                 domain_id,
                 namespace_id=default_namespace_id,
                 port=DEFAULT_CORE_PORT,
                 logname="-",
                 loglevel="none",
                 default_key_type=bbclib.DEFAULT_CURVETYPE):
        """Initializes the object.

        Args:
            domain_id (bytes): The application domain.
            namespace_id (bytes): The name space. default_namespace_id exists.
            port (int): The port to the core. DEFAULT_CORE_PORT by default.
            logname (str): The name of the log.
            loglevel (str): The logging level. "none" by default.
            default_key_type (int): Default public key type.

        """
        self.logger = logger.get_logger(
            key="id_lib", level=loglevel,
            logname=logname)  # FIXME: use the logger
        self.domain_id = domain_id
        self.namespace_id = namespace_id
        self.default_key_type = default_key_type
        self.__app = bbc_app.BBcAppClient(port=DEFAULT_CORE_PORT,
                                          loglevel=loglevel)
        self.__app.set_user_id(id_publickey_map_user_id)
        self.__app.set_domain_id(domain_id)
        self.__app.set_callback(bbc_app.Callback())
        ret = self.__app.register_to_core()
        assert ret
        self.__db = app_support_lib.Database()
        self.__db.setup_db(domain_id, NAME_OF_DB)
        self.__db.create_table_in_db(domain_id,
                                     NAME_OF_DB,
                                     'id_pubkey_table',
                                     id_pubkey_table_definition,
                                     indices=[IDX_USER_ID, IDX_PUBLIC_KEY])
Beispiel #15
0
 def __init__(self,
              host='127.0.0.1',
              port=DEFAULT_CORE_PORT,
              multiq=True,
              logname="-",
              loglevel="none"):
     self.logger = logger.get_logger(key="bbc_app",
                                     level=loglevel,
                                     logname=logname)
     self.connection = socket.create_connection((host, port))
     self.callback = Callback(log=self.logger)
     self.callback.set_client(self)
     self.keypair = None
     self.node_keypair = None
     self.use_query_id_based_message_wait = multiq
     self.user_id = None
     self.domain_id = None
     self.query_id = (0).to_bytes(2, 'little')
     self.privatekey_for_ecdh = None
     self.aes_key_name = None
     self.is_secure_connection = False
     self.cross_ref_list = list()
     self.start_receiver_loop()