コード例 #1
0
ファイル: bwauthority_child.py プロジェクト: aagbsn/torflow
def main(argv):
  plog("DEBUG", "Child Process Spawning...")
  TorUtil.read_config(argv[1])
  (start_pct,stop_pct,nodes_per_slice,save_every,circs_per_node,out_dir,
      max_fetch_time,tor_dir,sleep_start,sleep_stop,
             min_streams,pid_file_name,db_url) = read_config(argv[1])
 
  if pid_file_name:
    pidfd = file(pid_file_name, 'w')
    pidfd.write('%d\n' % os.getpid())
    pidfd.close()

    slice_num = int(argv[2])

    try:
      (c,hdlr) = setup_handler(out_dir, tor_dir+"/control_auth_cookie")
    except Exception, e:
      traceback.print_exc()
      plog("WARN", "Can't connect to Tor: "+str(e))

    if db_url:
      hdlr.attach_sql_listener(db_url)
      sql_file = None
    else:
      plog("INFO", "db_url not found in config. Defaulting to sqlite")
      sql_file = os.getcwd()+'/'+out_dir+'/bwauthority.sqlite'
      hdlr.attach_sql_listener('sqlite:///'+sql_file)
    
    # set SOCKS proxy
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, TorUtil.tor_host, TorUtil.tor_port)
    socket.socket = socks.socksocket
    plog("INFO", "Set socks proxy to "+TorUtil.tor_host+":"+str(TorUtil.tor_port))

    hdlr.wait_for_consensus()
    pct_step = hdlr.rank_to_percent(nodes_per_slice)

    # check to see if we are done
    if (slice_num * pct_step + start_pct > stop_pct):
        plog('INFO', 'stop_pct: %s reached. Exiting with %s' % (stop_pct, STOP_PCT_REACHED))
        sys.exit(STOP_PCT_REACHED)

    plog("DEBUG", "Starting slice number %s" % slice_num)
    speedrace(hdlr, slice_num*pct_step + start_pct, (slice_num + 1)*pct_step + start_pct, circs_per_node, save_every, out_dir,
              max_fetch_time, sleep_start, sleep_stop, slice_num,
              min_streams, sql_file)

    # For debugging memory leak..
    #TorUtil.dump_class_ref_counts(referrer_depth=1)

    # TODO: Change pathlen to 3 and kill exit+ConserveExit restrictions
    # And record circ failure rates..

    #circ_measure(hdlr, pct, pct+pct_step, circs_per_node, save_every, 
    #  out_dir, max_fetch_time, sleep_start, sleep_stop, slice_num, sql_file)
    sys.exit(0)
コード例 #2
0
ファイル: socks2http.py プロジェクト: chyroc/socks-cli
def runProxyServer(config):
    try:
        # Use gevent when possible
        import gevent.monkey
        gevent.monkey.patch_all()
        print("Using gevent...")
    except ImportError:
        pass

    global SOCKS5_PROXY
    global DEBUG_MODE
    DEBUG_MODE = config.debug
    if config.socks5_server:
        SOCKS5_PROXY = (config.socks5_server.split(":") + ["1080"])[:2]
        SOCKS5_PROXY[1] = int(SOCKS5_PROXY[1])
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, *SOCKS5_PROXY)

    server_address = (config.bind, config.port)
    httpd = ThreadedHTTPServer(server_address, ProxyHTTPRequestHandler)

    def handler(signum, frame):
        # The documentation said shutdown() should be called on a
        # different thread from which called serve_forever().
        thread.start_new_thread(httpd.shutdown, ())

    signal.signal(signal.SIGINT, handler)
    signal.signal(signal.SIGTERM, handler)

    if config.foreground is not None:
        ppid = config.foreground
        if ppid == 0:
            # There is a risk that the parent process had already exited at
            # this monent.
            ppid = os.getppid()
        pid = os.getpid()

        def exitIfOrphan():
            while True:
                curr_ppid = os.getppid()
                if ppid != curr_ppid:
                    os.kill(pid, signal.SIGTERM)
                time.sleep(30)

        thread.start_new_thread(exitIfOrphan, ())

    ipport = httpd.socket.getsockname()
    if config.save_port is not None:
        with open(config.save_port, "w") as f:
            f.write(str(ipport[1]))
    print("Serving HTTP proxy on %s port %d ..." % ipport)
    httpd.serve_forever()
コード例 #3
0
ファイル: socks2http.py プロジェクト: TinySong/dotFiles
def runProxyServer(config):
    try:
        # Use gevent when possible
        import gevent.monkey
        gevent.monkey.patch_all()
        print("Using gevent...")
    except ImportError:
        pass

    global SOCKS5_PROXY
    global DEBUG_MODE
    DEBUG_MODE = config.debug
    if config.socks5_server:
        SOCKS5_PROXY = (config.socks5_server.split(":") + ["1080"])[:2]
        SOCKS5_PROXY[1] = int(SOCKS5_PROXY[1])
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, *SOCKS5_PROXY)

    server_address = (config.bind, config.port)
    httpd = ThreadedHTTPServer(server_address, ProxyHTTPRequestHandler)

    def handler(signum, frame):
        # The documentation said shutdown() should be called on a
        # different thread from which called serve_forever().
        thread.start_new_thread(httpd.shutdown, ())
    signal.signal(signal.SIGINT, handler)
    signal.signal(signal.SIGTERM, handler)

    if config.foreground is not None:
        ppid = config.foreground
        if ppid == 0:
            # There is a risk that the parent process had already exited at
            # this monent.
            ppid = os.getppid()
        pid = os.getpid()

        def exitIfOrphan():
            while True:
                curr_ppid = os.getppid()
                if ppid != curr_ppid:
                    os.kill(pid, signal.SIGTERM)
                time.sleep(30)

        thread.start_new_thread(exitIfOrphan, ())

    ipport = httpd.socket.getsockname()
    if config.save_port is not None:
        with open(config.save_port, "w") as f:
            f.write(str(ipport[1]))
    print("Serving HTTP proxy on %s port %d ..." % ipport)
    httpd.serve_forever()
コード例 #4
0
def main(argv):
    # establish a metatroller connection
    plog('INFO', 'Connecting to metatroller...')
    try:
        meta = MetatrollerConnector(meta_host, meta_port)
    except socket.error:
        plog('ERROR', 'Couldn\'t connect to metatroller. Is it on?')
        exit()

    # skip two lines of metatroller introduction
    meta.readline()
    meta.readline()

    # configure metatroller
    commands = [
        'SQLSUPPORT sqlite:///' + os.getcwd() +
        '/data/speedraces/speedracer.sqlite', 'PATHLEN 2', 'UNIFORM 1',
        'ORDEREXITS 0', 'USEALLEXITS 0', 'GUARDNODES 0'
    ]
    plog('INFO', 'Executing preliminary configuration commands')
    for c in commands:
        meta.send_command_and_check(c)

    # set SOCKS proxy
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, tor_host, tor_port)
    socket.socket = socks.socksocket

    while True:
        pct = start_pct
        plog('INFO', 'Beginning time loop')

        while pct < stop_pct:
            meta.send_command_and_check('RESETSTATS')
            meta.send_command_and_check('COMMIT')
            plog('DEBUG', 'Reset stats')

            speedrace(meta, pct, pct + pct_step)

            plog('DEBUG', 'speedroced')
            meta.send_command_and_check('CLOSEALLCIRCS')
            #          meta.send_command_and_check('SAVESTATS '+os.getcwd()+'/data/speedraces/stats-'+str(pct) + ':' + str(pct + pct_step)+"-"+str(count)+"-"+strftime("20%y-%m-%d-%H:%M:%S"))
            #          meta.send_command_and_check('SAVERATIOS '+os.getcwd()+'/data/speedraces/ratios-'+str(pct) + ':' + str(pct + pct_step)+"-"+str(count)+"-"+strftime("20%y-%m-%d-%H:%M:%S"))
            meta.send_command_and_check('SAVESQL ' + os.getcwd() +
                                        '/data/speedraces/sql-' + str(pct) +
                                        ':' + str(pct + pct_step) + "-" +
                                        str(count) + "-" +
                                        strftime("20%y-%m-%d-%H:%M:%S"))
            plog('DEBUG', 'Wrote stats')
            pct += pct_step
            meta.send_command_and_check('COMMIT')
コード例 #5
0
ファイル: speedracer.py プロジェクト: AdrienLE/torflow
def main(argv):
    # establish a metatroller connection
    plog('INFO', 'Connecting to metatroller...')
    try:
        meta = MetatrollerConnector(meta_host, meta_port)
    except socket.error:
        plog('ERROR', 'Couldn\'t connect to metatroller. Is it on?')
        exit()

    # skip two lines of metatroller introduction
    meta.readline()
    meta.readline()
        
    # configure metatroller
    commands = [
        'SQLSUPPORT sqlite:///'+os.getcwd()+'/data/speedraces/speedracer.sqlite',
        'PATHLEN 2',
        'UNIFORM 1',
        'ORDEREXITS 0',
        'USEALLEXITS 0',
        'GUARDNODES 0']
    plog('INFO', 'Executing preliminary configuration commands')
    for c in commands:
        meta.send_command_and_check(c)

    # set SOCKS proxy
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, tor_host, tor_port)
    socket.socket = socks.socksocket

    while True:
      pct = start_pct
      plog('INFO', 'Beginning time loop')
      
      while pct < stop_pct:
          meta.send_command_and_check('RESETSTATS')
          meta.send_command_and_check('COMMIT')
          plog('DEBUG', 'Reset stats')

          speedrace(meta, pct, pct + pct_step)

          plog('DEBUG', 'speedroced')
          meta.send_command_and_check('CLOSEALLCIRCS')
#          meta.send_command_and_check('SAVESTATS '+os.getcwd()+'/data/speedraces/stats-'+str(pct) + ':' + str(pct + pct_step)+"-"+str(count)+"-"+strftime("20%y-%m-%d-%H:%M:%S"))
#          meta.send_command_and_check('SAVERATIOS '+os.getcwd()+'/data/speedraces/ratios-'+str(pct) + ':' + str(pct + pct_step)+"-"+str(count)+"-"+strftime("20%y-%m-%d-%H:%M:%S"))
          meta.send_command_and_check('SAVESQL '+os.getcwd()+'/data/speedraces/sql-'+str(pct) + ':' + str(pct + pct_step)+"-"+str(count)+"-"+strftime("20%y-%m-%d-%H:%M:%S"))
          plog('DEBUG', 'Wrote stats')
          pct += pct_step
          meta.send_command_and_check('COMMIT')
コード例 #6
0
ファイル: bwauthority_child.py プロジェクト: DonnchaC/torflow
def main(argv):
  TorUtil.read_config(argv[1])
  (start_pct,stop_pct,nodes_per_slice,save_every,circs_per_node,out_dir,
      max_fetch_time,tor_dir,sleep_start,sleep_stop,
             min_streams,pid_file_name,db_url,only_unmeasured,
             min_unmeasured) = read_config(argv[1])
  plog("NOTICE", "Child Process Spawned...")

  # make sure necessary out_dir directory exists
  path = os.getcwd()+'/'+out_dir
  if not os.path.exists(path):
    os.makedirs(path)
 
  if pid_file_name:
    pidfd = file(pid_file_name, 'w')
    pidfd.write('%d\n' % os.getpid())
    pidfd.close()

    slice_num = int(argv[2])

    try:
      (c,hdlr) = setup_handler(out_dir, tor_dir+"/control_auth_cookie")
    except Exception, e:
      traceback.print_exc()
      plog("WARN", "Can't connect to Tor: "+str(e))
      sys.exit(STOP_PCT_REACHED)

    if db_url:
      hdlr.attach_sql_listener(db_url)
      sql_file = None
    else:
      plog("INFO", "db_url not found in config. Defaulting to sqlite")
      sql_file = os.getcwd()+'/'+out_dir+'/bwauthority.sqlite'
      #hdlr.attach_sql_listener('sqlite:///'+sql_file)
      hdlr.attach_sql_listener('sqlite://')

    # set SOCKS proxy
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, TorUtil.tor_host, TorUtil.tor_port)
    socket.socket = socks.socksocket
    plog("INFO", "Set socks proxy to "+TorUtil.tor_host+":"+str(TorUtil.tor_port))

    hdlr.schedule_selmgr(lambda s: setattr(s, "only_unmeasured", only_unmeasured))

    hdlr.wait_for_consensus()

    # Now that we have the consensus, we shouldn't need to listen
    # for new consensus events.
    c.set_events([TorCtl.EVENT_TYPE.STREAM,
          TorCtl.EVENT_TYPE.BW,
          TorCtl.EVENT_TYPE.CIRC,
          TorCtl.EVENT_TYPE.STREAM_BW], True)

    # We should go to sleep if there are less than 5 unmeasured nodes after
    # consensus update
    if min_unmeasured and hdlr.get_unmeasured() < min_unmeasured:
      plog("NOTICE", "Less than "+str(min_unmeasured)+" unmeasured nodes ("+str(hdlr.get_unmeasured())+"). Sleeping for a bit")
      time.sleep(3600) # Until next consensus arrives
      plog("NOTICE", "Woke up from waiting for more unmeasured nodes.  Requesting slice restart.")
      sys.exit(RESTART_SLICE)

    pct_step = hdlr.rank_to_percent(nodes_per_slice)
    plog("INFO", "Percent per slice is: "+str(pct_step))
    if pct_step > 100: pct_step = 100

    # check to see if we are done
    if (slice_num * pct_step + start_pct > stop_pct):
        plog('NOTICE', 'Child stop point %s reached. Exiting with %s' % (stop_pct, STOP_PCT_REACHED))
        sys.exit(STOP_PCT_REACHED)

    successful = speedrace(hdlr, slice_num*pct_step + start_pct, (slice_num + 1)*pct_step + start_pct, circs_per_node,
              save_every, out_dir, max_fetch_time, sleep_start, sleep_stop, slice_num,
              min_streams, sql_file, only_unmeasured)

    # For debugging memory leak..
    #TorUtil.dump_class_ref_counts(referrer_depth=1)

    # TODO: Change pathlen to 3 and kill exit+ConserveExit restrictions
    # And record circ failure rates..

    #circ_measure(hdlr, pct, pct+pct_step, circs_per_node, save_every, 
    #  out_dir, max_fetch_time, sleep_start, sleep_stop, slice_num, sql_file)

    # XXX: Hack this to return a codelen double the slice size on failure?
    plog("INFO", "Slice success count: "+str(successful))
    if successful == 0:
      plog("WARN", "Slice success count was ZERO!")

    sys.exit(0)
コード例 #7
0
def main(argv):
    TorUtil.read_config(argv[1])
    (start_pct, stop_pct, nodes_per_slice, save_every, circs_per_node, out_dir,
     max_fetch_time, tor_dir, sleep_start, sleep_stop, min_streams,
     pid_file_name, db_url, only_unmeasured,
     min_unmeasured) = read_config(argv[1])
    plog("NOTICE", "Child Process Spawned...")

    # make sure necessary out_dir directory exists
    path = os.getcwd() + '/' + out_dir
    if not os.path.exists(path):
        os.makedirs(path)

    if pid_file_name:
        pidfd = file(pid_file_name, 'w')
        pidfd.write('%d\n' % os.getpid())
        pidfd.close()

        slice_num = int(argv[2])

        try:
            (c, hdlr) = setup_handler(out_dir,
                                      tor_dir + "/control_auth_cookie")
        except Exception, e:
            traceback.print_exc()
            plog("WARN", "Can't connect to Tor: " + str(e))
            sys.exit(STOP_PCT_REACHED)

        if db_url:
            hdlr.attach_sql_listener(db_url)
            sql_file = None
        else:
            plog("INFO", "db_url not found in config. Defaulting to sqlite")
            sql_file = os.getcwd() + '/' + out_dir + '/bwauthority.sqlite'
            #hdlr.attach_sql_listener('sqlite:///'+sql_file)
            hdlr.attach_sql_listener('sqlite://')

        # set SOCKS proxy
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, TorUtil.tor_host,
                              TorUtil.tor_port)
        socket.socket = socks.socksocket
        plog(
            "INFO", "Set socks proxy to " + TorUtil.tor_host + ":" +
            str(TorUtil.tor_port))

        hdlr.schedule_selmgr(
            lambda s: setattr(s, "only_unmeasured", only_unmeasured))

        hdlr.wait_for_consensus()

        # Now that we have the consensus, we shouldn't need to listen
        # for new consensus events.
        c.set_events([
            TorCtl.EVENT_TYPE.STREAM, TorCtl.EVENT_TYPE.BW,
            TorCtl.EVENT_TYPE.CIRC, TorCtl.EVENT_TYPE.STREAM_BW
        ], True)

        # We should go to sleep if there are less than 5 unmeasured nodes after
        # consensus update
        if min_unmeasured and hdlr.get_unmeasured() < min_unmeasured:
            plog(
                "NOTICE",
                "Less than " + str(min_unmeasured) + " unmeasured nodes (" +
                str(hdlr.get_unmeasured()) + "). Sleeping for a bit")
            time.sleep(3600)  # Until next consensus arrives
            plog(
                "NOTICE",
                "Woke up from waiting for more unmeasured nodes.  Requesting slice restart."
            )
            sys.exit(RESTART_SLICE)

        pct_step = hdlr.rank_to_percent(nodes_per_slice)
        plog("INFO", "Percent per slice is: " + str(pct_step))
        if pct_step > 100: pct_step = 100

        # check to see if we are done
        if (slice_num * pct_step + start_pct > stop_pct):
            plog(
                'NOTICE', 'Child stop point %s reached. Exiting with %s' %
                (stop_pct, STOP_PCT_REACHED))
            sys.exit(STOP_PCT_REACHED)

        successful = speedrace(hdlr, slice_num * pct_step + start_pct,
                               (slice_num + 1) * pct_step + start_pct,
                               circs_per_node, save_every, out_dir,
                               max_fetch_time, sleep_start, sleep_stop,
                               slice_num, min_streams, sql_file,
                               only_unmeasured)

        # For debugging memory leak..
        #TorUtil.dump_class_ref_counts(referrer_depth=1)

        # TODO: Change pathlen to 3 and kill exit+ConserveExit restrictions
        # And record circ failure rates..

        #circ_measure(hdlr, pct, pct+pct_step, circs_per_node, save_every,
        #  out_dir, max_fetch_time, sleep_start, sleep_stop, slice_num, sql_file)

        # XXX: Hack this to return a codelen double the slice size on failure?
        plog("INFO", "Slice success count: " + str(successful))
        if successful == 0:
            plog("WARN", "Slice success count was ZERO!")

        sys.exit(0)
コード例 #8
0
ファイル: tespeed.py プロジェクト: WangZhenfei/tespeed
def set_proxy(typ=socks.PROXY_TYPE_SOCKS4, host="127.0.0.1", port=9050):
    socks.setdefaultproxy(typ, host, port)
    socket.socket = socks.socksocket
コード例 #9
0
def main(argv):
    plog("DEBUG", "Child Process Spawning...")
    TorUtil.read_config(argv[1])
    (start_pct, stop_pct, nodes_per_slice, save_every, circs_per_node, out_dir,
     max_fetch_time, tor_dir, sleep_start, sleep_stop, min_streams,
     pid_file_name, db_url) = read_config(argv[1])

    # make sure necessary out_dir directory exists
    path = os.getcwd() + '/' + out_dir
    if not os.path.exists(path):
        os.makedirs(path)

    if pid_file_name:
        pidfd = file(pid_file_name, 'w')
        pidfd.write('%d\n' % os.getpid())
        pidfd.close()

        slice_num = int(argv[2])

        try:
            (c, hdlr) = setup_handler(out_dir,
                                      tor_dir + "/control_auth_cookie")
        except Exception, e:
            traceback.print_exc()
            plog("WARN", "Can't connect to Tor: " + str(e))
            sys.exit(STOP_PCT_REACHED)

        if db_url:
            hdlr.attach_sql_listener(db_url)
            sql_file = None
        else:
            plog("INFO", "db_url not found in config. Defaulting to sqlite")
            sql_file = os.getcwd() + '/' + out_dir + '/bwauthority.sqlite'
            #hdlr.attach_sql_listener('sqlite:///'+sql_file)
            hdlr.attach_sql_listener('sqlite://')

        # set SOCKS proxy
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, TorUtil.tor_host,
                              TorUtil.tor_port)
        socket.socket = socks.socksocket
        plog(
            "INFO", "Set socks proxy to " + TorUtil.tor_host + ":" +
            str(TorUtil.tor_port))

        hdlr.wait_for_consensus()

        pct_step = hdlr.rank_to_percent(nodes_per_slice)

        # check to see if we are done
        if (slice_num * pct_step + start_pct > stop_pct):
            plog(
                'INFO', 'stop_pct: %s reached. Exiting with %s' %
                (stop_pct, STOP_PCT_REACHED))
            sys.exit(STOP_PCT_REACHED)

        plog("DEBUG", "Starting slice number %s" % slice_num)
        speedrace(hdlr, slice_num * pct_step + start_pct,
                  (slice_num + 1) * pct_step + start_pct, circs_per_node,
                  save_every, out_dir, max_fetch_time, sleep_start, sleep_stop,
                  slice_num, min_streams, sql_file)

        # For debugging memory leak..
        #TorUtil.dump_class_ref_counts(referrer_depth=1)

        # TODO: Change pathlen to 3 and kill exit+ConserveExit restrictions
        # And record circ failure rates..

        #circ_measure(hdlr, pct, pct+pct_step, circs_per_node, save_every,
        #  out_dir, max_fetch_time, sleep_start, sleep_stop, slice_num, sql_file)
        sys.exit(0)
コード例 #10
0
def set_proxy(typ=socks.PROXY_TYPE_SOCKS4, host="127.0.0.1", port=9050):
    socks.setdefaultproxy(typ, host, port)
    socket.socket = socks.socksocket
コード例 #11
0
ファイル: bwauthority.py プロジェクト: canderson/TorFlow
    if pid_file_name:
        pidfd = file(pid_file_name, "w")
        pidfd.write("%d\n" % os.getpid())
        pidfd.close()

    try:
        (c, hdlr) = setup_handler(out_dir, tor_dir + "/control_auth_cookie")
    except Exception, e:
        traceback.print_exc()
        plog("WARN", "Can't connect to Tor: " + str(e))

    sql_file = os.getcwd() + "/" + out_dir + "/bwauthority.sqlite"
    hdlr.attach_sql_listener("sqlite:///" + sql_file)

    # set SOCKS proxy
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, TorUtil.tor_host, TorUtil.tor_port)
    socket.socket = socks.socksocket
    plog("INFO", "Set socks proxy to " + TorUtil.tor_host + ":" + str(TorUtil.tor_port))

    while True:
        pct = start_pct
        plog("INFO", "Beginning time loop")
        slice_num = 0
        while pct < stop_pct:
            hdlr.wait_for_consensus()
            pct_step = hdlr.rank_to_percent(nodes_per_slice)
            hdlr.reset_stats()
            hdlr.commit()
            plog("DEBUG", "Reset stats")

            speedrace(