def do_build_transport(self):
if len(self.tor_control_unix_socket) == 0:
assert len(self.onion_tcp_interface_ip) != 0
tor_controller_endpoint_desc = "tcp:%s:%s" % (self.tor_control_tcp_host, self.tor_control_tcp_port)
else:
tor_controller_endpoint_desc = "unix:%s" % self.tor_control_unix_socket
tor_controller_endpoint = endpoints.clientFromString(self.reactor, tor_controller_endpoint_desc)
tor = yield txtorcon.connect(self.reactor, control_endpoint=tor_controller_endpoint)
onion_tcp_port = 0
if len(self.onion_unix_socket) == 0:
onion_tcp_port = yield txtorcon.util.available_tcp_port(self.reactor)
hs = txtorcon.EphemeralHiddenService(["%s %s:%s" % (self.onion_service_port, self.onion_tcp_interface_ip, onion_tcp_port)])
else:
hs = txtorcon.EphemeralHiddenService(["%s unix:%s" % (self.onion_service_port, self.onion_unix_socket)])
yield hs.add_to_tor(tor.protocol)
transport = OnionTransport(self.reactor,
tor,
onion_host=hs.hostname.encode('utf-8'),
onion_port=self.onion_service_port,
onion_key=hs.private_key.encode('utf-8'),
onion_tcp_interface_ip=self.onion_tcp_interface_ip,
onion_tcp_port=onion_tcp_port)
yield hs.remove_from_tor(tor.protocol)
defer.returnValue(transport)
评论列表
文章目录