Skip to content

Commit

Permalink
Adds v3 onion service support
Browse files Browse the repository at this point in the history
  • Loading branch information
Ana Custura authored and irl committed Feb 19, 2019
1 parent cea5002 commit c8b0fc2
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions onionperf/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ def __init__(self, tor_bin_path, tgen_bin_path, datadir_path, nickname):
self.threads = None
self.done_event = None
self.hs_service_id = None
self.hs_v3_service_id = None
self.www_docroot = "{0}/htdocs".format(self.datadir_path)

def run(self, do_onion=True, do_inet=True, client_tgen_listen_port=58888, client_tgen_connect_ip='0.0.0.0', client_tgen_connect_port=8080, client_tor_ctl_port=59050, client_tor_socks_port=59000,
Expand Down Expand Up @@ -219,8 +220,9 @@ def run(self, do_onion=True, do_inet=True, client_tgen_listen_port=58888, client
general_writables.append(tor_writable)

server_urls = []
if do_onion and self.hs_service_id is not None:
if do_onion and self.hs_service_id is not None and self.hs_v3_service_id is not None:
server_urls.append("{0}.onion:{1}".format(self.hs_service_id, client_tgen_connect_port))
server_urls.append("{0}.onion:{1}".format(self.hs_v3_service_id, client_tgen_connect_port))
if do_inet:
connect_ip = client_tgen_connect_ip if client_tgen_connect_ip != '0.0.0.0' else util.get_ip_address()
server_urls.append("{0}:{1}".format(connect_ip, client_tgen_connect_port))
Expand Down Expand Up @@ -264,6 +266,14 @@ def run(self, do_onion=True, do_inet=True, client_tgen_listen_port=58888, client
torctl.remove_ephemeral_hidden_service(self.hs_service_id)
except: pass # this fails to authenticate if tor proc is dead

if self.hs_v3_service_id is not None:
try:
with Controller.from_port(port=self.hs_v3_control_port) as torctl:
torctl.authenticate()
torctl.remove_ephemeral_hidden_service(self.hs_v3_service_id)
except: pass # this fails to authenticate if tor proc is dead


# logging.disable(logging.INFO)
self.done_event.set()
for t in self.threads:
Expand Down Expand Up @@ -364,14 +374,21 @@ def __start_tor(self, name, control_port, socks_port, hs_port_mapping=None):
self.threads.append(torctl_helper)

if hs_port_mapping is not None:
logging.info("Creating ephemeral hidden service...")
logging.info("Creating ephemeral hidden service with v2 onions...")
with Controller.from_port(port=control_port) as torctl:
torctl.authenticate()
response = torctl.create_ephemeral_hidden_service(hs_port_mapping, detached=True, await_publication=True)
self.hs_service_id = response.service_id
self.hs_control_port = control_port
logging.info("Ephemeral hidden service is available at {0}.onion".format(response.service_id))

logging.info("Creating ephemeral hidden service with v3 onions...")
with Controller.from_port(port=control_port) as torctl:
torctl.authenticate()
response = torctl.create_ephemeral_hidden_service(hs_port_mapping, detached=True, await_publication=True, key_content='ED25519-V3')
self.hs_v3_service_id = response.service_id
self.hs_v3_control_port = control_port
logging.info("Ephemeral hidden service is available at {0}.onion".format(response.service_id))
return tor_writable, torctl_writable

def __get_download_count(self, tgen_logpath):
Expand Down

0 comments on commit c8b0fc2

Please sign in to comment.