Ejemplo n.º 1
0
def main():

    now = datetime.datetime.now()
    timestamp_str = now.strftime("%Y%m%d-%H%M%S")

    results_path = timestamp_str + '_tag'
    os.mkdir(results_path)

    shutil.copy('infohashes.dat', results_path)
    shutil.copy('conductor.py', results_path)
    shutil.copy('conductor_spy.py', results_path)
    shutil.copy('parser.py', results_path)
    shutil.copy('plotter.py', results_path)
    shutil.copytree('parsers', os.path.join(results_path, 'parsers'))
    shutil.copytree('plotters', os.path.join(results_path, 'plotters'))

    captures_path = os.path.abspath(
        os.path.join(results_path, timestamp_str + '.pcap'))
    print 'Now, you need to start capturing netwok traffic'
    print 'Windows:\nWinDump.exe -C 500 -s 0 -w %s udp' % (captures_path)
    print 'Linux:\nsudo tcpdump -C 500 -s 0 -w %s udp' % (captures_path)
    print '-' * 70
    print 'Press ENTER to continue'
    sys.stdout.flush()
    #sys.stdin.readline()
    time.sleep(60)

    nodes = []
    for mod, addr, node_name, r_mod, l_mod, node_id in _randompopper(CONFIG):
        # Create infohash generator

        print 'Starting %s %r, %r %r %r...' % (node_name, addr, r_mod.__file__,
                                               l_mod.__file__, node_id),
        sys.stdout.flush()
        node_path = os.path.join(results_path, node_name)
        os.mkdir(node_path)
        node = mod.Pymdht(addr, node_path, r_mod, l_mod, None, logs_level,
                          node_id)
        nodes.append((node_name, node))
        print 'DONE'
        time.sleep(STARTUP_DELAY)

    #Leave them some time to bootstrap
    time.sleep(BOOTSTRAP_DELAY)

    running = True
    try:
        while 1:
            time.sleep(10000)
    except KeyboardInterrupt:
        pass

    for node_name, node in nodes:
        node.stop()
        print 'Stopping %s ...' % node_name,
        sys.stdout.flush()
        time.sleep(STOPPING_DELAY)
        print 'DONE'
    print '-' * 70
    print 'Now, stop the network capturing with Ctr-C'
def main(options, args):
    port = int(options.port)
    my_addr = (options.ip, port)
    if not os.path.isdir(options.path):
        if os.path.exists(options.path):
            print 'FATAL:', options.path, 'must be a directory'
            return
        print options.path, 'does not exist. Creating directory...'
        os.mkdir(options.path)
    logs_path = options.path
    logs_level = options.logs_level or default_logs_level
    logging_conf.setup(logs_path, logs_level)
    print 'Using the following plug-ins:'
    print '*', options.routing_m_file
    print '*', options.lookup_m_file
    print 'Path:', options.path
    print 'Private DHT name:', options.private_dht_name
    routing_m_name = '.'.join(os.path.split(options.routing_m_file))[:-3]
    routing_m_mod = __import__(routing_m_name, fromlist=[''])
    lookup_m_name = '.'.join(os.path.split(options.lookup_m_file))[:-3]
    lookup_m_mod = __import__(lookup_m_name, fromlist=[''])
    exp_m_name = '.'.join(os.path.split(options.exp_m_file))[:-3]
    exp_m_mod = __import__(exp_m_name, fromlist=[''])

    global dht
    dht = pymdht.Pymdht(my_addr, logs_path,
                        routing_m_mod,
                        lookup_m_mod,
                        exp_m_mod,
                        options.private_dht_name,
                        logs_level)

    random_lookup_delay = options.random_lookup_delay
    while random_lookup_delay > 0:
        time.sleep(float(random_lookup_delay))
        target = identifier.RandomId()
        dht.get_peers(None, target, None, 0)

    
    global geo_score
    if options.geoip_mode:
        try:
            import geo
            geo_score = geo.Geo(local_ip)
        except:
            print "---------------------------------------"
            print "Geo module FAILED: you cannot use --geo"
            print "---------------------------------------"
            raise
    else:
        geo_score = None
    
    global server
    server = SocketServer.TCPServer(('', port), SessionHandler)
    while not stop_server:
        server.handle_request()
Ejemplo n.º 3
0
def main(options, args):
    id_str, ip, port_str = args
    port = int(port_str)
    node_to_extract = Node((ip, port), Id(id_str))
    table_extractor = TableExtractor(node_to_extract)

    logs_path = os.path.join(os.path.expanduser("~"), ".pymdht")
    logging_conf.setup(logs_path, logging.DEBUG)
    reactor = minitwisted.ThreadedReactor(table_extractor.main_loop, 7000, table_extractor.on_datagram_received)
    reactor.start()
    time.sleep(30)
Ejemplo n.º 4
0
def main(options, args):
    id_str, ip, port_str = args
    port = int(port_str)
    node_to_extract = Node((ip, port), Id(id_str))
    table_extractor = TableExtractor(node_to_extract)

    logs_path = os.path.join(os.path.expanduser('~'), '.pymdht')
    logging_conf.setup(logs_path, logging.DEBUG)
    reactor = minitwisted.ThreadedReactor(table_extractor.main_loop, 7000,
                                          table_extractor.on_datagram_received)
    reactor.start()
    time.sleep(30)
Ejemplo n.º 5
0
def main(options, args):
    ip, port_str = args
    port = int(port_str)
    bootstrap_node = Node((ip, port), RandomId())
    mcrawler = MultiCrawler(bootstrap_node)

    logs_path = '.'# os.path.join(os.path.expanduser('~'), '.pymdht')
    logging_conf.setup(logs_path, logging.DEBUG)
    reactor = minitwisted.ThreadedReactor(
        mcrawler.main_loop, 7005, 
        mcrawler.on_datagram_received,
        task_interval=.005)
    reactor.start()
    try:
        time.sleep(20000)
    except:
        pass
Ejemplo n.º 6
0
def main(options, args):
    if not os.path.isdir(options.path):
        if os.path.exists(options.path):
            print >> sys.stderr, "FATAL:", options.path, "must be a directory"
            return
        print >> sys.stderr, options.path, "does not exist. Creating directory..."
        os.mkdir(options.path)
    logs_path = options.path
    if options.lookup_delay and not options.daemon:
        print >> sys.stderr, "Switching to DAEMON mode (no user interface)"
    if options.lookup_delay or options.daemon:
        # redirect output
        stdout_file = os.path.join(options.path, "pymdht.stdout")
        stderr_file = os.path.join(options.path, "pymdht.stderr")
        print >> sys.stderr, "Redirecting output to %s and %s" % (stdout_file, stderr_file)
        sys.stdout = open(stdout_file, "w")
        sys.stderr = open(stderr_file, "w")

    my_addr = (options.ip, int(options.port))
    my_id = None
    if options.node_id:
        base_id = identifier.Id(options.node_id)
        my_id = base_id.generate_close_id(options.log_distance)
    my_node = node.Node(my_addr, my_id, version=pymdht.VERSION_LABEL)

    if options.debug:
        logs_level = logging.DEBUG  # This generates HUGE (and useful) logs
    else:
        # logs_level = logging.INFO # This generates some (useful) logs
        logs_level = logging.WARNING  # This generates warning and error logs

    print "Using the following plug-ins:"
    print "*", options.routing_m_file
    print "*", options.lookup_m_file
    print "*", options.experimental_m_file
    print "Path:", options.path
    print "Private DHT name:", options.private_dht_name
    print "debug mode:", options.debug
    print "auto_bootstrap:", options.auto_bootstrap
    print "bootstrap mode:", options.bootstrap_mode
    print "Swift tracker port:", options.swift_port
    routing_m_name = ".".join(os.path.split(options.routing_m_file))[:-3]
    routing_m_mod = __import__(routing_m_name, fromlist=[""])
    lookup_m_name = ".".join(os.path.split(options.lookup_m_file))[:-3]
    lookup_m_mod = __import__(lookup_m_name, fromlist=[""])
    experimental_m_name = ".".join(os.path.split(options.experimental_m_file))[:-3]
    experimental_m_mod = __import__(experimental_m_name, fromlist=[""])

    dht = pymdht.Pymdht(
        my_node,
        logs_path,
        routing_m_mod,
        lookup_m_mod,
        experimental_m_mod,
        options.private_dht_name,
        logs_level,
        auto_bootstrap=options.auto_bootstrap,
        bootstrap_mode=options.bootstrap_mode,
        swift_port=options.swift_port,
    )
    if options.lookup_delay:
        loop_forever = not options.num_lookups
        remaining_lookups = options.num_lookups
        while loop_forever or remaining_lookups:
            time.sleep(options.lookup_delay)
            if options.lookup_target:
                target = identifier.Id(options.lookup_target)
            else:
                target = identifier.RandomId()
            print "lookup", target
            dht.get_peers(None, target, None, options.announce_port)
            remaining_lookups = remaining_lookups - 1
        time.sleep(options.stop_delay)
        dht.stop()
    elif options.ttl:
        stop_timestamp = time.time() + int(options.ttl)
        while time.time() < stop_timestamp:
            time.sleep(1)
        dht.stop()
    elif options.daemon:
        # Just loop for ever
        while 1:
            time.sleep(10)
    elif options.gui:
        import wx
        import ui.gui

        app = wx.PySimpleApp()
        frame = ui.gui.Interactive_GUI(None, "Interactive Look@MDHT", None, (1440, 900), dht, logs_path)
        frame.Show(True)
        app.MainLoop()
    elif options.telnet_port:
        import ui.telnet

        telnet_ui = ui.telnet.Telnet(dht, options.telnet_port)
        telnet_ui.start()
    elif options.cli:
        import ui.cli

        ui.cli.command_user_interface(dht)
Ejemplo n.º 7
0
    def __init__(self, filename):
        self._lock = threading.Lock()
        self._is_done = False
        self._pinged_ips = set()
        self._pinged_addrs = set()
        self._ok_addrs = set()
        self._file = open(filename)
        self.reactor = ThreadedReactor(
            self._main_loop,
            PORT, self._on_datagram_received)
        self.reactor.start()

    def is_done(self):
        with self._lock:
            done = self._is_done
        return done

    def stop_and_get_result(self):
        self.reactor.stop()
        return sorted(list(self._ok_addrs))

if __name__ == '__main__':
    logging_conf.setup('.', logging.DEBUG)
    bc = BootstrapChecker(sys.argv[1])
    while not bc.is_done():
        time.sleep(1)
    time.sleep(3)
    result = bc.stop_and_get_result()
    for addr in result:
        print addr[0], addr[1]
Ejemplo n.º 8
0
def main(options, args):
    if not os.path.isdir(options.path):
        if os.path.exists(options.path):
            print >>sys.stderr, 'FATAL:', options.path, 'must be a directory'
            return
        print >>sys.stderr, options.path, 'does not exist. Creating directory...'
        os.mkdir(options.path)
    logs_path = options.path
    if options.lookup_delay and not options.daemon:
        print >>sys.stderr, 'Switching to DAEMON mode (no user interface)'
    if options.lookup_delay or options.daemon:
        # redirect output
        stdout_file = os.path.join(options.path, 'pymdht.stdout')
        stderr_file = os.path.join(options.path, 'pymdht.stderr')
        print >>sys.stderr, 'Redirecting output to %s and %s' % (
                    stdout_file, stderr_file)
        sys.stdout = open(stdout_file, 'w')
        sys.stderr = open(stderr_file, 'w')

    my_addr = (options.ip, int(options.port))
    my_id = None
    if options.node_id:
        base_id = identifier.Id(options.node_id)
        my_id = base_id.generate_close_id(options.log_distance)
    my_node = node.Node(my_addr, my_id)

    if options.debug:
        logs_level = logging.DEBUG # This generates HUGE (and useful) logs
    else:
        #logs_level = logging.INFO # This generates some (useful) logs
        logs_level = logging.WARNING # This generates warning and error logs

        
    
    print 'Using the following plug-ins:'
    print '*', options.routing_m_file
    print '*', options.lookup_m_file
    print '*', options.experimental_m_file
    print 'Path:', options.path
    print 'Private DHT name:', options.private_dht_name
    print 'debug mode:', options.debug
    routing_m_name = '.'.join(os.path.split(options.routing_m_file))[:-3]
    routing_m_mod = __import__(routing_m_name, fromlist=[''])
    lookup_m_name = '.'.join(os.path.split(options.lookup_m_file))[:-3]
    lookup_m_mod = __import__(lookup_m_name, fromlist=[''])
    experimental_m_name = '.'.join(os.path.split(options.experimental_m_file))[:-3]
    experimental_m_mod = __import__(experimental_m_name, fromlist=[''])
    

    dht = pymdht.Pymdht(my_node, logs_path,
                        routing_m_mod,
                        lookup_m_mod,
                        experimental_m_mod,
                        options.private_dht_name,
                        logs_level)
    if options.lookup_delay:
        loop_forever = not options.num_lookups
        remaining_lookups = options.num_lookups
        while loop_forever or remaining_lookups:
            time.sleep(options.lookup_delay)
            if options.lookup_target:
                target = identifier.Id(options.lookup_target)
            else:
                target = identifier.RandomId()
            print 'lookup', target
            dht.get_peers(None, target, None, options.announce_port)
            remaining_lookups = remaining_lookups - 1
        time.sleep(options.stop_delay)
        dht.stop()
    elif options.ttl:
        stop_timestamp = time.time() + int(options.ttl)
        while time.time() < stop_timestamp:
            time.sleep(1)
        dht.stop()
    elif options.daemon:
        # Just loop for ever
        while 1:
            time.sleep(10)
    elif options.gui:
        import wx
        import ui.gui
        app = wx.PySimpleApp()
        frame = ui.gui.Interactive_GUI(
            None, "Interactive DHT . . .", None,(1440,900),
            dht, logs_path)
        frame.Show(True)
        app.MainLoop()
    elif options.cli:
        import ui.cli
        ui.cli.command_user_interface(dht)
Ejemplo n.º 9
0
def main():

    now = datetime.datetime.now()
    timestamp_str = now.strftime("%Y%m%d-%H%M%S")

    results_path = timestamp_str + '_tag'
    os.mkdir(results_path)

    shutil.copy('infohashes.dat', results_path)
    shutil.copy('conductor.py', results_path)
    shutil.copy('conductor_spy.py', results_path)
    shutil.copy('parser.py', results_path)
    shutil.copy('plotter.py', results_path)
    shutil.copytree('parsers', os.path.join(results_path, 'parsers'))
    shutil.copytree('plotters', os.path.join(results_path, 'plotters'))


    captures_path = os.path.abspath(os.path.join(results_path, timestamp_str + '.pcap'))
    print 'Now, you need to start capturing netwok traffic'
    print 'Windows:\nWinDump.exe -C 500 -s 0 -w %s udp' % (captures_path)
    print 'Linux:\nsudo tcpdump -C 500 -s 0 -w %s udp' % (captures_path)
    print '-' * 70
    print 'Press ENTER to continue'
    sys.stdout.flush()
    #sys.stdin.readline()
    time.sleep(60)
    
    nodes = []
    for mod, addr, node_name, r_mod, l_mod, node_id in _randompopper(CONFIG):
        # Create infohash generator
        
        print 'Starting %s %r, %r %r %r...' % (node_name, addr,
                                               r_mod.__file__,
                                               l_mod.__file__,
                                               node_id),
        sys.stdout.flush ()
        node_path = os.path.join(results_path, node_name)
        os.mkdir(node_path)
        node = mod.Pymdht(addr, node_path, r_mod, l_mod, None,
                          logs_level, node_id)
        nodes.append((node_name, node))
        print 'DONE'
        time.sleep(STARTUP_DELAY)

    #Leave them some time to bootstrap
    time.sleep(BOOTSTRAP_DELAY)

    running = True
    try:
        while 1:
            time.sleep(10000)
    except KeyboardInterrupt:
        pass

    for node_name, node in nodes:
        node.stop()
        print 'Stopping %s ...' % node_name,
        sys.stdout.flush()
        time.sleep(STOPPING_DELAY)
        print 'DONE'
    print '-' * 70
    print 'Now, stop the network capturing with Ctr-C'
Ejemplo n.º 10
0
def main(options, args):
    if not os.path.isdir(options.path):
        if os.path.exists(options.path):
            print >> sys.stderr, 'FATAL:', options.path, 'must be a directory'
            return
        print >> sys.stderr, options.path, 'does not exist. Creating directory...'
        os.mkdir(options.path)
    logs_path = options.path
    if options.lookup_delay and not options.daemon:
        print >> sys.stderr, 'Switching to DAEMON mode (no user interface)'
    if options.lookup_delay or options.daemon:
        # redirect output
        stdout_file = os.path.join(options.path, 'pymdht.stdout')
        stderr_file = os.path.join(options.path, 'pymdht.stderr')
        print >> sys.stderr, 'Redirecting output to %s and %s' % (stdout_file,
                                                                  stderr_file)
        sys.stdout = open(stdout_file, 'w')
        sys.stderr = open(stderr_file, 'w')

    my_addr = (options.ip, int(options.port))
    my_id = None
    if options.node_id:
        base_id = identifier.Id(options.node_id)
        my_id = base_id.generate_close_id(options.log_distance)
    my_node = node.Node(my_addr, my_id, version=pymdht.VERSION_LABEL)

    if options.debug:
        logs_level = logging.DEBUG  # This generates HUGE (and useful) logs
    else:
        # logs_level = logging.INFO # This generates some (useful) logs
        logs_level = logging.WARNING  # This generates warning and error logs

    print 'Using the following plug-ins:'
    print '*', options.routing_m_file
    print '*', options.lookup_m_file
    print '*', options.experimental_m_file
    print 'Path:', options.path
    print 'Private DHT name:', options.private_dht_name
    print 'debug mode:', options.debug
    print 'bootstrap mode:', options.bootstrap_mode
    print 'Swift tracker port:', options.swift_port
    routing_m_name = '.'.join(os.path.split(options.routing_m_file))[:-3]
    routing_m_mod = __import__(routing_m_name, fromlist=[''])
    lookup_m_name = '.'.join(os.path.split(options.lookup_m_file))[:-3]
    lookup_m_mod = __import__(lookup_m_name, fromlist=[''])
    experimental_m_name = '.'.join(os.path.split(
        options.experimental_m_file))[:-3]
    experimental_m_mod = __import__(experimental_m_name, fromlist=[''])

    dht = pymdht.Pymdht(my_node, logs_path, routing_m_mod, lookup_m_mod,
                        experimental_m_mod, options.private_dht_name,
                        logs_level, options.bootstrap_mode, options.swift_port)
    if options.lookup_delay:
        loop_forever = not options.num_lookups
        remaining_lookups = options.num_lookups
        while loop_forever or remaining_lookups:
            time.sleep(options.lookup_delay)
            if options.lookup_target:
                target = identifier.Id(options.lookup_target)
            else:
                target = identifier.RandomId()
            print 'lookup', target
            dht.get_peers(None, target, None, options.announce_port)
            remaining_lookups = remaining_lookups - 1
        time.sleep(options.stop_delay)
        dht.stop()
    elif options.ttl:
        stop_timestamp = time.time() + int(options.ttl)
        while time.time() < stop_timestamp:
            time.sleep(1)
        dht.stop()
    elif options.daemon:
        # Just loop for ever
        while True:
            time.sleep(10)
    elif options.gui:
        import wx
        import ui.gui
        app = wx.PySimpleApp()
        frame = ui.gui.Interactive_GUI(None, "Interactive Look@MDHT", None,
                                       (1440, 900), dht, logs_path)
        frame.Show(True)
        app.MainLoop()
    elif options.telnet_port:
        import ui.telnet
        telnet_ui = ui.telnet.Telnet(dht, options.telnet_port)
        telnet_ui.start()
    elif options.cli:
        import ui.cli
        ui.cli.command_user_interface(dht)
Ejemplo n.º 11
0
def main():

    now = datetime.datetime.now()
    timestamp_str = now.strftime("%Y%m%d-%H%M%S")

    results_path = timestamp_str + '_tag'
    os.mkdir(results_path)

    shutil.copy('infohashes.dat', results_path)
    shutil.copy('conductor.py', results_path)
    shutil.copy('parser.py', results_path)
    shutil.copy('plotter.py', results_path)
    shutil.copytree('parsers', os.path.join(results_path, 'parsers'))
    shutil.copytree('plotters', os.path.join(results_path, 'plotters'))

    captures_path = os.path.abspath(
        os.path.join(results_path, timestamp_str + '.pcap'))
    print 'Now, you need to start capturing netwok traffic'
    print 'Windows:\nWinDump.exe -C 500 -s 0 -w %s udp' % (captures_path)
    print 'Linux:\nsudo tcpdump -C 500 -s 0 -w %s udp' % (captures_path)
    print '-' * 70
    print 'Press ENTER to continue'
    sys.stdin.readline()

    nodes = []
    for mod, addr, node_name, r_mod, l_mod in _randompopper(CONFIG):
        # Create infohash generator
        infohash_gen = _randompopper(INFOHASHES)

        print 'Starting %s %r, %r %r...' % (node_name, addr, r_mod.__file__,
                                            l_mod.__file__),
        sys.stdout.flush()
        node_path = os.path.join(results_path, node_name)
        os.mkdir(node_path)
        node = mod.Pymdht(addr, node_path, r_mod, l_mod, None, logs_level)
        nodes.append((node_name, node, infohash_gen))
        print 'DONE'
        time.sleep(STARTUP_DELAY)

    #Leave them some time to bootstrap
    time.sleep(BOOTSTRAP_DELAY)

    running = True
    for round_number in xrange(len(INFOHASHES)):
        # In every round, DHT nodes are randomly ordered
        for node_name, node, infohash_gen in _randompopper(nodes):
            # Every DHT node performs a lookup
            infohash = identifier.Id(infohash_gen.next())
            print '%d  %s getting peers for info_hash %r' % (
                round_number, node_name, infohash)
            node.get_peers((node_name, time.time()), infohash, _on_peers_found,
                           0)
            time.sleep(REMOVE_TORRENT_DELAY)
            try:
                remove_torrent_f = node.remove_torrent
            except:
                pass
            else:
                remove_torrent_f(infohash)
            time.sleep(LOOKUP_DELAY - REMOVE_TORRENT_DELAY)
        time.sleep(ROUND_DELAY)

    for node_name, node, _ in nodes:
        node.stop()
        print 'Stopping %s ...' % node_name,
        sys.stdout.flush()
        time.sleep(STOPPING_DELAY)
        print 'DONE'
    print '-' * 70
    print 'Now, stop the network capturing with Ctr-C'
Ejemplo n.º 12
0
def main():

    now = datetime.datetime.now()
    timestamp_str = now.strftime("%Y%m%d-%H%M%S")

    results_path = timestamp_str + '_tag'
    os.mkdir(results_path)

    shutil.copy('infohashes.dat', results_path)
    shutil.copy('conductor.py', results_path)
    shutil.copy('parser.py', results_path)
    shutil.copy('plotter.py', results_path)
    shutil.copytree('parsers', os.path.join(results_path, 'parsers'))
    shutil.copytree('plotters', os.path.join(results_path, 'plotters'))


    captures_path = os.path.abspath(os.path.join(results_path, timestamp_str + '.pcap'))
    print 'Now, you need to start capturing netwok traffic'
    print 'Windows:\nWinDump.exe -C 500 -s 0 -w %s udp' % (captures_path)
    print 'Linux:\nsudo tcpdump -C 500 -s 0 -w %s udp' % (captures_path)
    print '-' * 70
    print 'Press ENTER to continue'
    sys.stdin.readline()

    
    nodes = []
    for mod, addr, node_name, r_mod, l_mod in _randompopper(CONFIG):
        # Create infohash generator
        infohash_gen = _randompopper(INFOHASHES)

        print 'Starting %s %r, %r %r...' % (node_name, addr,
                                            r_mod.__file__, l_mod.__file__),
        sys.stdout.flush ()
        node_path = os.path.join(results_path, node_name)
        os.mkdir(node_path)
        node = mod.Pymdht(addr, node_path, r_mod, l_mod, None, logs_level)
        nodes.append((node_name, node, infohash_gen))
        print 'DONE'
        time.sleep(STARTUP_DELAY)

    #Leave them some time to bootstrap
    time.sleep(BOOTSTRAP_DELAY)

    running = True
    for round_number in xrange(len(INFOHASHES)):
        # In every round, DHT nodes are randomly ordered
        for node_name, node, infohash_gen in _randompopper(nodes):
            # Every DHT node performs a lookup
            infohash = identifier.Id(infohash_gen.next())
            print  '%d  %s getting peers for info_hash %r' % (
                round_number, node_name, infohash)
            node.get_peers((node_name, time.time()),
                           infohash, _on_peers_found, 0)
            time.sleep(REMOVE_TORRENT_DELAY)
            try:
                remove_torrent_f = node.remove_torrent
            except:
                pass
            else:
                remove_torrent_f(infohash)
            time.sleep(LOOKUP_DELAY - REMOVE_TORRENT_DELAY)
        time.sleep(ROUND_DELAY)
        
    for node_name, node, _ in nodes:
        node.stop()
        print 'Stopping %s ...' % node_name,
        sys.stdout.flush()
        time.sleep(STOPPING_DELAY)
        print 'DONE'
    print '-' * 70
    print 'Now, stop the network capturing with Ctr-C'
Ejemplo n.º 13
0
        if addr in self._pinged_addrs:
            self._pinged_addrs.remove(addr)
            self._ok_addrs.add(addr)
        return TIMEOUT, []

    def is_done(self):
        with self._lock:
            done = self._is_done
        return done

    def stop_and_get_result(self):
        self.reactor.stop()
        return sorted(list(self._ok_addrs))


if __name__ == '__main__':
    logging_conf.setup('.', logging.DEBUG)
    if len(sys.argv) > 1:
        input_filename = sys.argv[1]
    else:
        input_filename = INPUT_FILE
    output_filename = 'bootstrap.backup.release-%d.%d.%d' % (PYMDHT_VERSION)
    bc = BootstrapChecker(input_filename)
    while not bc.is_done():
        time.sleep(1)
    time.sleep(3)
    result = bc.stop_and_get_result()
    output_file = open(output_filename, 'w')
    for addr in result:
        print >> output_file, addr[0], addr[1]