def parseCommandLine(): oparser = optparse.OptionParser() oparser.add_option("-p", "--udpport", dest="udpport", type="int", help="specify UDP port for DHT network") oparser.set_default('udpport', settings.DefaultDHTPort()) oparser.add_option("-d", "--dhtdb", dest="dhtdb", help="specify DHT database file location") oparser.set_default('dhtdb', settings.DHTDBFile()) oparser.add_option("-s", "--seeds", dest="seeds", help="specify list of DHT seed nodes") oparser.set_default('seeds', '') oparser.add_option("-w", "--wait", dest="delayed", type="int", help="wait N seconds before join the network") oparser.set_default('delayed', 0) (options, args) = oparser.parse_args() return options, args
def init(udp_port, db_file_path=None): global _MyNode if _MyNode is not None: if _Debug: lg.out(_DebugLevel, 'dht_service.init SKIP, DHTNode already exist') return if db_file_path is None: db_file_path = settings.DHTDBFile() dbPath = bpio.portablePath(db_file_path) try: dataStore = SQLiteExpiredDataStore(dbFile=dbPath) # dataStore.setItem('not_exist_key', 'not_exist_value', time.time(), time.time(), None, 60) # del dataStore['not_exist_key'] except: lg.warn( 'failed reading DHT records, removing %s and starting clean DB' % dbPath) lg.exc() os.remove(dbPath) dataStore = SQLiteExpiredDataStore(dbFile=dbPath) networkProtocol = KademliaProtocolConveyor _MyNode = DHTNode(udp_port, dataStore, networkProtocol=networkProtocol) if _Debug: lg.out( _DebugLevel, 'dht_service.init UDP port is %d, DB file path: %s' % (udp_port, dbPath))
def start(self): from dht import dht_service from main import settings from main.config import conf dht_service.init(settings.getDHTPort(), settings.DHTDBFile()) d = dht_service.connect() conf().addCallback('services/entangled-dht/udp-port', self._on_udp_port_modified) return d
def start(self): from dht import dht_service from dht import known_nodes from main import settings from main.config import conf conf().addCallback('services/entangled-dht/udp-port', self._on_udp_port_modified) dht_service.init(udp_port=settings.getDHTPort(), db_file_path=settings.DHTDBFile()) known_seeds = known_nodes.default_nodes() d = dht_service.connect(seed_nodes=known_seeds) d.addCallback(self._on_connected) d.addErrback(self._on_connect_failed) return d
def parseCommandLine(): oparser = optparse.OptionParser() oparser.add_option("-p", "--udpport", dest="udpport", type="int", help="specify UDP port for DHT network") oparser.set_default('udpport', settings.DefaultDHTPort()) oparser.add_option("-d", "--dhtdb", dest="dhtdb", help="specify DHT database file location") oparser.set_default('dhtdb', settings.DHTDBFile()) (options, args) = oparser.parse_args() return options, args
def main(): settings.init() lg.set_debug_level(12) dht_service.init(udp_port=14441, db_file_path=settings.DHTDBFile()) seeds = [] for seed_env in (os.environ.get('DHT_SEED_1'), os.environ.get('DHT_SEED_2')): seed = seed_env.split(':') seeds.append((seed[0], int(seed[1]))) dht_service.connect(seeds).addBoth(run) reactor.run()
def init(udp_port, db_file_path=None): global _MyNode if _MyNode is not None: if _Debug: lg.out(_DebugLevel, 'dht_service.init SKIP, already created a DHTNode') return if _Debug: lg.out(_DebugLevel, 'dht_service.init UDP port is %d' % udp_port) if db_file_path is None: db_file_path = settings.DHTDBFile() dbPath = bpio.portablePath(db_file_path) lg.out( 4, 'dht_service.init UDP port is %d, DB file path: %s' % (udp_port, dbPath)) dataStore = SQLiteDataStore(dbFile=dbPath) networkProtocol = KademliaProtocolConveyor # None, encoding.Bencode(), msgformat.DefaultFormat()) _MyNode = DHTNode(udp_port, dataStore, networkProtocol=networkProtocol)
def start(self): from logs import lg from dht import dht_service from dht import known_nodes from main import settings from main.config import conf from userid import my_id conf().addCallback('services/entangled-dht/udp-port', self._on_udp_port_modified) dht_service.init(udp_port=settings.getDHTPort(), db_file_path=settings.DHTDBFile()) known_seeds = known_nodes.nodes() lg.info('known seed nodes are : %r' % known_seeds) d = dht_service.connect(seed_nodes=known_seeds) d.addCallback(self._on_connected) d.addErrback(self._on_connect_failed) if my_id.getLocalID(): dht_service.set_node_data('idurl', my_id.getLocalID()) return d