def run_node(): import asyncio, zmq.asyncio, os from kademlia.discovery.ddd import Discovery from kademlia.logger import get_logger log = get_logger(__name__) class DHT(Discovery): def __init__(self): self.loop = asyncio.get_event_loop() self.ctx = zmq.asyncio.Context() self.crawler_port = os.getenv('CRAWLER_PORT', 31337) def status_update(self, status, msg, *args, **kwargs): log.debug('{} - {}'.format(status, msg)) dht = DHT() dht.listen_for_crawlers() ips = dht.loop.run_until_complete(dht.discover('neighborhood')) dht.loop.run_forever()
""" Scans ip addresses for the decentralized dynamic discover procedure """ from kademlia.discovery.ip import * from kademlia.discovery.msg import * from kademlia.logger import get_logger import os, json, uuid, resource, socket, select, asyncio, time SOCKET_LIMIT = 2500 log = get_logger(__name__) resource.setrlimit(resource.RLIMIT_NOFILE, (SOCKET_LIMIT, SOCKET_LIMIT)) class Discovery: available_ips = {} subnets = {} max_wait = 3 min_bootstrap_nodes = 3 max_tasks = 10000 def getavailable_ips(self): return self.available_ips async def discover(self, mode, return_asap=True): ips = {} if mode in ['test', 'local']: host = os.getenv('HOST_IP', '127.0.0.1') hostname = 'virtual_network' if os.getenv( 'HOST_IP') else 'localhost' ips[hostname] = [