diff --git a/src/Tor/TorManager.py b/src/Tor/TorManager.py index b9726683..eedbee41 100644 --- a/src/Tor/TorManager.py +++ b/src/Tor/TorManager.py @@ -39,10 +39,10 @@ class TorManager(object): if config.tor == "disable": self.enabled = False self.start_onions = False - self.status = "Disabled" + self.setStatus("Disabled") else: self.enabled = True - self.status = "Waiting" + self.setStatus("Waiting") if fileserver_port: self.fileserver_port = fileserver_port @@ -73,6 +73,11 @@ class TorManager(object): else: # Not downloaded yet: Async mode gevent.spawn(self.startTor) + def setStatus(self, status): + self.status = status + if "ui_server" in dir(sys.modules["main"]): + sys.modules["main"].ui_server.updateWebsocket() + def startTor(self): if sys.platform.startswith("win"): try: @@ -183,11 +188,11 @@ class TorManager(object): version = re.search('version=([0-9\.]+)', res_version).group(1) assert float(version.replace(".", "0", 2)) >= 207.5, "Tor version >=0.2.7.5 required, found: %s" % version - self.status = u"Connected (%s)" % res_auth + self.setStatus(u"Connected (%s)" % res_auth) self.conn = conn except Exception, err: self.conn = None - self.status = u"Error (%s)" % err + self.setStatus(u"Error (%s)" % err) self.log.error("Tor controller connect error: %s" % Debug.formatException(err)) self.enabled = False return self.conn @@ -205,7 +210,7 @@ class TorManager(object): def resetCircuits(self): res = self.request("SIGNAL NEWNYM") if "250 OK" not in res: - self.status = u"Reset circuits error (%s)" % res + self.setStatus(u"Reset circuits error (%s)" % res) self.log.error("Tor reset circuits error: %s" % res) def addOnion(self): @@ -216,7 +221,7 @@ class TorManager(object): if result: onion_address, onion_privatekey = result self.privatekeys[onion_address] = onion_privatekey - self.status = u"OK (%s onions running)" % len(self.privatekeys) + self.setStatus(u"OK (%s onions running)" % len(self.privatekeys)) SiteManager.peer_blacklist.append((onion_address + ".onion", self.fileserver_port)) return onion_address else: @@ -229,7 +234,7 @@ class TorManager(object): onion_address, onion_privatekey = match.groups() return (onion_address, onion_privatekey) else: - self.status = u"AddOnion error (%s)" % res + self.setStatus(u"AddOnion error (%s)" % res) self.log.error("Tor addOnion error: %s" % res) return False @@ -238,10 +243,10 @@ class TorManager(object): res = self.request("DEL_ONION %s" % address) if "250 OK" in res: del self.privatekeys[address] - self.status = "OK (%s onion running)" % len(self.privatekeys) + self.setStatus("OK (%s onion running)" % len(self.privatekeys)) return True else: - self.status = u"DelOnion error (%s)" % res + self.setStatus(u"DelOnion error (%s)" % res) self.log.error("Tor delOnion error: %s" % res) self.disconnect() return False