fix --tor
* twisted/transcribe: call correct tor_manager method * tor_manager: remove now-unused web agent endpoint factory
This commit is contained in:
parent
f3e310acbc
commit
1b16127cad
|
@ -1,44 +1,12 @@
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import time
|
import time
|
||||||
from zope.interface import implementer
|
|
||||||
from twisted.web import error as web_error
|
|
||||||
from twisted.internet.defer import inlineCallbacks, returnValue
|
from twisted.internet.defer import inlineCallbacks, returnValue
|
||||||
from twisted.python.compat import nativeString
|
|
||||||
from twisted.internet.error import ConnectError
|
from twisted.internet.error import ConnectError
|
||||||
from twisted.web import iweb
|
|
||||||
import txtorcon
|
import txtorcon
|
||||||
import ipaddr
|
import ipaddr
|
||||||
from ..timing import DebugTiming
|
from ..timing import DebugTiming
|
||||||
from .transit import allocate_tcp_port
|
from .transit import allocate_tcp_port
|
||||||
|
|
||||||
# based on twisted.web.client._StandardEndpointFactory
|
|
||||||
@implementer(iweb.IAgentEndpointFactory)
|
|
||||||
class TorWebAgentEndpointFactory(object):
|
|
||||||
def __init__(self, reactor, socks_port):
|
|
||||||
self._reactor = reactor
|
|
||||||
self._socks_port = socks_port
|
|
||||||
|
|
||||||
def endpointForURI(self, uri):
|
|
||||||
try:
|
|
||||||
host = nativeString(uri.host)
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
raise ValueError(("The host of the provided URI ({uri.host!r}) "
|
|
||||||
"contains non-ASCII octets, it should be ASCII "
|
|
||||||
"decodable.").format(uri=uri))
|
|
||||||
|
|
||||||
if uri.scheme == b'http' or uri.scheme == b'ws':
|
|
||||||
print("building URI endpoint with tor for %s" % uri.toBytes())
|
|
||||||
return txtorcon.TorClientEndpoint(#self._reactor,
|
|
||||||
host, uri.port,
|
|
||||||
socks_hostname="127.0.0.1", socks_port=self._socks_port)
|
|
||||||
elif uri.scheme == b'https':
|
|
||||||
raise NotImplementedError
|
|
||||||
# find some twisted thing that wraps a normal
|
|
||||||
# IStreamClientEndpoint in a TLS-ifying layer, and wrap it around
|
|
||||||
# a TorClientEndpoint. Maybe t.i.endpoints.wrapClientTLS
|
|
||||||
else:
|
|
||||||
raise web_error.SchemeNotSupported("Unsupported scheme: %r" % (uri.scheme,))
|
|
||||||
|
|
||||||
class TorManager:
|
class TorManager:
|
||||||
def __init__(self, reactor, tor_socks_port=None, tor_control_port=9051,
|
def __init__(self, reactor, tor_socks_port=None, tor_control_port=9051,
|
||||||
timing=None):
|
timing=None):
|
||||||
|
@ -143,9 +111,6 @@ class TorManager:
|
||||||
self._timing.finish_event(_start_launch)
|
self._timing.finish_event(_start_launch)
|
||||||
returnValue(True)
|
returnValue(True)
|
||||||
|
|
||||||
def get_web_agent_endpoint_factory(self):
|
|
||||||
return TorWebAgentEndpointFactory(self._reactor, self._tor_socks_port)
|
|
||||||
|
|
||||||
def is_non_public_numeric_address(self, host):
|
def is_non_public_numeric_address(self, host):
|
||||||
# for numeric hostnames, skip RFC1918 addresses, since no Tor exit
|
# for numeric hostnames, skip RFC1918 addresses, since no Tor exit
|
||||||
# node will be able to reach those. Likewise ignore IPv6 addresses.
|
# node will be able to reach those. Likewise ignore IPv6 addresses.
|
||||||
|
|
|
@ -114,8 +114,9 @@ class Wormhole:
|
||||||
|
|
||||||
def _make_endpoint(self, hostname, port):
|
def _make_endpoint(self, hostname, port):
|
||||||
if self._tor_manager:
|
if self._tor_manager:
|
||||||
return self._tor_manager.endpointForURI()
|
return self._tor_manager.get_endpoint_for(hostname, port)
|
||||||
return endpoints.HostnameEndpoint(self._reactor, hostname, port) # 30s
|
# note: HostnameEndpoints have a default 30s timeout
|
||||||
|
return endpoints.HostnameEndpoint(self._reactor, hostname, port)
|
||||||
|
|
||||||
@inlineCallbacks
|
@inlineCallbacks
|
||||||
def _get_websocket(self):
|
def _get_websocket(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user