Send serverChanged event on Tor status change
This commit is contained in:
parent
7962baa2da
commit
3b7750c24e
1 changed files with 14 additions and 9 deletions
|
@ -39,10 +39,10 @@ class TorManager(object):
|
||||||
if config.tor == "disable":
|
if config.tor == "disable":
|
||||||
self.enabled = False
|
self.enabled = False
|
||||||
self.start_onions = False
|
self.start_onions = False
|
||||||
self.status = "Disabled"
|
self.setStatus("Disabled")
|
||||||
else:
|
else:
|
||||||
self.enabled = True
|
self.enabled = True
|
||||||
self.status = "Waiting"
|
self.setStatus("Waiting")
|
||||||
|
|
||||||
if fileserver_port:
|
if fileserver_port:
|
||||||
self.fileserver_port = fileserver_port
|
self.fileserver_port = fileserver_port
|
||||||
|
@ -73,6 +73,11 @@ class TorManager(object):
|
||||||
else: # Not downloaded yet: Async mode
|
else: # Not downloaded yet: Async mode
|
||||||
gevent.spawn(self.startTor)
|
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):
|
def startTor(self):
|
||||||
if sys.platform.startswith("win"):
|
if sys.platform.startswith("win"):
|
||||||
try:
|
try:
|
||||||
|
@ -183,11 +188,11 @@ class TorManager(object):
|
||||||
version = re.search('version=([0-9\.]+)', res_version).group(1)
|
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
|
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
|
self.conn = conn
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
self.conn = None
|
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.log.error("Tor controller connect error: %s" % Debug.formatException(err))
|
||||||
self.enabled = False
|
self.enabled = False
|
||||||
return self.conn
|
return self.conn
|
||||||
|
@ -205,7 +210,7 @@ class TorManager(object):
|
||||||
def resetCircuits(self):
|
def resetCircuits(self):
|
||||||
res = self.request("SIGNAL NEWNYM")
|
res = self.request("SIGNAL NEWNYM")
|
||||||
if "250 OK" not in res:
|
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)
|
self.log.error("Tor reset circuits error: %s" % res)
|
||||||
|
|
||||||
def addOnion(self):
|
def addOnion(self):
|
||||||
|
@ -216,7 +221,7 @@ class TorManager(object):
|
||||||
if result:
|
if result:
|
||||||
onion_address, onion_privatekey = result
|
onion_address, onion_privatekey = result
|
||||||
self.privatekeys[onion_address] = onion_privatekey
|
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))
|
SiteManager.peer_blacklist.append((onion_address + ".onion", self.fileserver_port))
|
||||||
return onion_address
|
return onion_address
|
||||||
else:
|
else:
|
||||||
|
@ -229,7 +234,7 @@ class TorManager(object):
|
||||||
onion_address, onion_privatekey = match.groups()
|
onion_address, onion_privatekey = match.groups()
|
||||||
return (onion_address, onion_privatekey)
|
return (onion_address, onion_privatekey)
|
||||||
else:
|
else:
|
||||||
self.status = u"AddOnion error (%s)" % res
|
self.setStatus(u"AddOnion error (%s)" % res)
|
||||||
self.log.error("Tor addOnion error: %s" % res)
|
self.log.error("Tor addOnion error: %s" % res)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -238,10 +243,10 @@ class TorManager(object):
|
||||||
res = self.request("DEL_ONION %s" % address)
|
res = self.request("DEL_ONION %s" % address)
|
||||||
if "250 OK" in res:
|
if "250 OK" in res:
|
||||||
del self.privatekeys[address]
|
del self.privatekeys[address]
|
||||||
self.status = "OK (%s onion running)" % len(self.privatekeys)
|
self.setStatus("OK (%s onion running)" % len(self.privatekeys))
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
self.status = u"DelOnion error (%s)" % res
|
self.setStatus(u"DelOnion error (%s)" % res)
|
||||||
self.log.error("Tor delOnion error: %s" % res)
|
self.log.error("Tor delOnion error: %s" % res)
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in a new issue