Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 4
0
 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
Esempio n. 5
0
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
Esempio n. 6
0
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()
Esempio n. 7
0
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)
Esempio n. 8
0
 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