use ephemeral_hidden_service if available

This commit is contained in:
j 2016-01-20 11:15:11 +05:30
parent 8d919e63db
commit 9fa06bbde7
1 changed files with 24 additions and 18 deletions

View File

@ -8,6 +8,7 @@ import distutils
import ox import ox
import stem import stem
from stem.control import Controller from stem.control import Controller
from Crypto.PublicKey import RSA
import settings import settings
import state import state
@ -164,24 +165,29 @@ class Tor(object):
if not self.connected: if not self.connected:
return False return False
controller = self.controller controller = self.controller
logger.debug("FIXME: dont remove/add service if already defined") if controller.get_version() >= stem.version.Requirement.ADD_ONION:
controller.remove_hidden_service(self.dir) with open(settings.ssl_key_path, 'rb') as fd:
result = controller.create_hidden_service( private_key = fd.read()
self.dir, key_content = RSA.importKey(private_key).exportKey().decode()
settings.server_defaults['node_port'], key_content = ''.join(key_content.strip().split('\n')[1:-1])
target_port=settings.server['node_port'] ports = {9851: settings.server['node_port']}
) controller.remove_ephemeral_hidden_service(settings.USER_ID)
logger.debug('published node as https://%s:%s', result.hostname, settings.server_defaults['node_port']) response = controller.create_ephemeral_hidden_service(ports,
''' key_type='RSA1024', key_content=key_content,
with open(settings.ssl_key_path) as fd: detached=True)
key_content = fd.read() if response.is_ok():
ports = {9851: settings.server['node_port']} logger.debug('published node as https://%s.onion:%s',
response = controller.create_ephemeral_hidden_service(ports, settings.USER_ID, settings.server_defaults['node_port'])
key_type='RSA1024', key_content=key_content, else:
detached=True, await_publication = True) logger.debug('failed to publish node to tor')
logger.debug('published node as https://%s.onion:%s', else:
settings.USER_ID, settings.server_defaults['node_port']) controller.remove_hidden_service(self.dir)
''' result = controller.create_hidden_service(
self.dir,
settings.server_defaults['node_port'],
target_port=settings.server['node_port']
)
logger.debug('published node as https://%s:%s', result.hostname, settings.server_defaults['node_port'])
def depublish(self): def depublish(self):
if not self.connected: if not self.connected: