MCPcopy Create free account
hub / github.com/HelloZeroNet/ZeroNet / TorManager

Class TorManager

src/Tor/TorManager.py:28–308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26
27@PluginManager.acceptPlugins
28class TorManager(object):
29 def __init__(self, fileserver_ip=None, fileserver_port=None):
30 self.privatekeys = {} # Onion: Privatekey
31 self.site_onions = {} # Site address: Onion
32 self.tor_exe = "tools/tor/tor.exe"
33 self.has_meek_bridges = os.path.isfile("tools/tor/PluggableTransports/meek-client.exe")
34 self.tor_process = None
35 self.log = logging.getLogger("TorManager")
36 self.start_onions = None
37 self.conn = None
38 self.lock = RLock()
39 self.starting = True
40 self.connecting = True
41 self.event_started = gevent.event.AsyncResult()
42
43 if config.tor == "disable":
44 self.enabled = False
45 self.start_onions = False
46 self.setStatus("Disabled")
47 else:
48 self.enabled = True
49 self.setStatus("Waiting")
50
51 if fileserver_port:
52 self.fileserver_port = fileserver_port
53 else:
54 self.fileserver_port = config.fileserver_port
55
56 self.ip, self.port = config.tor_controller.rsplit(":", 1)
57 self.port = int(self.port)
58
59 self.proxy_ip, self.proxy_port = config.tor_proxy.rsplit(":", 1)
60 self.proxy_port = int(self.proxy_port)
61
62 def start(self):
63 self.log.debug("Starting (Tor: %s)" % config.tor)
64 self.starting = True
65 try:
66 if not self.connect():
67 raise Exception("No connection")
68 self.log.debug("Tor proxy port %s check ok" % config.tor_proxy)
69 except Exception as err:
70 if sys.platform.startswith("win") and os.path.isfile(self.tor_exe):
71 self.log.info("Starting self-bundled Tor, due to Tor proxy port %s check error: %s" % (config.tor_proxy, err))
72 # Change to self-bundled Tor ports
73 self.port = 49051
74 self.proxy_port = 49050
75 if config.tor == "always":
76 socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", self.proxy_port)
77 self.enabled = True
78 if not self.connect():
79 self.startTor()
80 else:
81 self.log.info("Disabling Tor, because error while accessing Tor proxy at port %s: %s" % (config.tor_proxy, err))
82 self.enabled = False
83
84 def setStatus(self, status):
85 self.status = status

Callers 2

__init__Method · 0.90
tor_managerFunction · 0.90

Calls

no outgoing calls

Tested by 1

tor_managerFunction · 0.72