summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/crossbar/files/crossbar-17.9.1-Revert-Torservices.patch')
-rw-r--r--net-misc/crossbar/files/crossbar-17.9.1-Revert-Torservices.patch270
1 files changed, 270 insertions, 0 deletions
diff --git a/net-misc/crossbar/files/crossbar-17.9.1-Revert-Torservices.patch b/net-misc/crossbar/files/crossbar-17.9.1-Revert-Torservices.patch
new file mode 100644
index 000000000000..dd4b2b58e455
--- /dev/null
+++ b/net-misc/crossbar/files/crossbar-17.9.1-Revert-Torservices.patch
@@ -0,0 +1,270 @@
+From 97a2d923dff32397c9df5adb95ecb84bcd95d83d Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dolsen@gentoo.org>
+Date: Tue, 19 Sep 2017 17:44:08 -0700
+Subject: [PATCH] Revert "Add built-in Tor services and connection support"
+
+This reverts commit f75db17642845f46bebd2f6f1d6a092974b9b390.
+---
+ crossbar/common/checkconfig.py | 60 +--------------
+ crossbar/twisted/endpoint.py | 83 +--------------------
+ .../router/transport/Transport-Endpoints.md | 85 +---------------------
+ requirements-dev.txt | 1 -
+ requirements-min.txt | 1 -
+ 5 files changed, 4 insertions(+), 226 deletions(-)
+
+diff --git a/crossbar/common/checkconfig.py b/crossbar/common/checkconfig.py
+index a8e84d45..1f5d9c91 100644
+--- a/crossbar/common/checkconfig.py
++++ b/crossbar/common/checkconfig.py
+@@ -867,31 +867,6 @@ def check_listening_endpoint_twisted(endpoint):
+ # should/can we ask Twisted to parse it easily?
+
+
+-def check_listening_endpoint_onion(endpoint):
+- """
+- :param endpoint: The onion endpoint
+- :type endpoint: dict
+- """
+- for k in endpoint:
+- if k not in ['type', 'port', 'private_key_file', 'tor_control_endpoint']:
+- raise InvalidConfigException(
+- "encountered unknown attribute '{}' in onion endpoint".format(k)
+- )
+-
+- check_dict_args(
+- {
+- u"type": (True, [six.text_type]),
+- u"port": (True, six.integer_types),
+- u"private_key_file": (True, [six.text_type]),
+- u"tor_control_endpoint": (True, [Mapping])
+- },
+- endpoint,
+- "onion endpoint config",
+- )
+- check_endpoint_port(u"port")
+- check_connecting_endpoint(endpoint[u"tor_control_endpoint"])
+-
+-
+ def check_connecting_endpoint_tcp(endpoint):
+ """
+ Check a TCP connecting endpoint configuration.
+@@ -978,33 +953,6 @@ def check_connecting_endpoint_twisted(endpoint):
+ check_endpoint_timeout(endpoint['timeout'])
+
+
+-def check_connecting_endpoint_tor(endpoint):
+- """
+- :param endpoint: The Tor connecting endpoint to check.
+- :type endpoint: dict
+- """
+- for k in endpoint:
+- if k not in ['type', 'host', 'port', 'tor_socks_port', 'tls']:
+- raise InvalidConfigException(
+- "encountered unknown attribute '{}' in connecting endpoint".format(k)
+- )
+-
+- if 'host' not in endpoint:
+- raise InvalidConfigException("missing mandatory attribute 'host' in connecting endpoint item\n\n{}".format(pformat(endpoint)))
+-
+- if 'port' not in endpoint:
+- raise InvalidConfigException("missing mandatory attribute 'port' in connecting endpoint item\n\n{}".format(pformat(endpoint)))
+-
+- if 'tor_socks_port' not in endpoint:
+- raise InvalidConfigException("missing mandatory attribute 'tor_socks_port' in connecting endpoint item\n\n{}".format(pformat(endpoint)))
+-
+- check_endpoint_port(endpoint['port'])
+- check_endpoint_port(endpoint['tor_socks_port'])
+-
+- if 'tls' in endpoint:
+- check_connecting_endpoint_tls(endpoint['tls'])
+-
+-
+ def check_listening_endpoint(endpoint):
+ """
+ Check a listening endpoint configuration.
+@@ -1022,7 +970,7 @@ def check_listening_endpoint(endpoint):
+ raise InvalidConfigException("missing mandatory attribute 'type' in endpoint item\n\n{}".format(pformat(endpoint)))
+
+ etype = endpoint['type']
+- if etype not in ['tcp', 'unix', 'twisted', 'onion']:
++ if etype not in ['tcp', 'unix', 'twisted']:
+ raise InvalidConfigException("invalid attribute value '{}' for attribute 'type' in endpoint item\n\n{}".format(etype, pformat(endpoint)))
+
+ if etype == 'tcp':
+@@ -1031,8 +979,6 @@ def check_listening_endpoint(endpoint):
+ check_listening_endpoint_unix(endpoint)
+ elif etype == 'twisted':
+ check_listening_endpoint_twisted(endpoint)
+- elif etype == 'onion':
+- check_listening_endpoint_onion(endpoint)
+ else:
+ raise InvalidConfigException('logic error')
+
+@@ -1054,7 +1000,7 @@ def check_connecting_endpoint(endpoint):
+ raise InvalidConfigException("missing mandatory attribute 'type' in endpoint item\n\n{}".format(pformat(endpoint)))
+
+ etype = endpoint['type']
+- if etype not in ['tcp', 'unix', 'twisted', 'tor']:
++ if etype not in ['tcp', 'unix', 'twisted']:
+ raise InvalidConfigException("invalid attribute value '{}' for attribute 'type' in endpoint item\n\n{}".format(etype, pformat(endpoint)))
+
+ if etype == 'tcp':
+@@ -1063,8 +1009,6 @@ def check_connecting_endpoint(endpoint):
+ check_connecting_endpoint_unix(endpoint)
+ elif etype == 'twisted':
+ check_connecting_endpoint_twisted(endpoint)
+- elif etype == 'tor':
+- check_connecting_endpoint_tor(endpoint)
+ else:
+ raise InvalidConfigException('logic error')
+
+diff --git a/crossbar/twisted/endpoint.py b/crossbar/twisted/endpoint.py
+index 483e5a39..251bfa5c 100644
+--- a/crossbar/twisted/endpoint.py
++++ b/crossbar/twisted/endpoint.py
+@@ -33,7 +33,7 @@ from __future__ import absolute_import, division
+ import six
+ import os
+ from os import environ
+-from os.path import join, abspath, isabs, exists
++from os.path import join, abspath
+
+ from twisted.internet import defer
+ from twisted.internet._sslverify import OpenSSLCertificateAuthorities
+@@ -48,11 +48,7 @@ from twisted.internet.endpoints import TCP4ServerEndpoint, \
+ UNIXClientEndpoint, \
+ serverFromString, \
+ clientFromString
+-from twisted.internet.interfaces import IStreamServerEndpoint
+ from twisted.python.filepath import FilePath
+-from zope.interface import implementer
+-
+-import txtorcon
+
+ from crossbar.twisted.sharedport import SharedPort, SharedTLSPort
+
+@@ -318,12 +314,6 @@ def _create_tls_client_context(config, cbdir, log):
+ return ctx
+
+
+-def _ensure_absolute(fname, cbdir):
+- if isabs(fname):
+- return fname
+- return abspath(join(cbdir, fname))
+-
+-
+ def create_listening_endpoint_from_config(config, cbdir, reactor, log):
+ """
+ Create a Twisted stream server endpoint from a Crossbar.io transport configuration.
+@@ -431,59 +421,6 @@ def create_listening_endpoint_from_config(config, cbdir, reactor, log):
+ elif config['type'] == 'twisted':
+ endpoint = serverFromString(reactor, config['server_string'])
+
+- # tor endpoint
+- elif config['type'] == 'onion': # or "tor"? r "tor_onion"?
+- port = config['port']
+- private_key_fname = _ensure_absolute(config[u'private_key_file'], cbdir)
+- tor_control_ep = create_connecting_endpoint_from_config(
+- config[u'tor_control_endpoint'], cbdir, reactor, log
+- )
+-
+- try:
+- with open(private_key_fname, 'r') as f:
+- private_key = f.read().strip()
+- except (IOError, OSError):
+- private_key = None
+-
+- @implementer(IStreamServerEndpoint)
+- class _EphemeralOnion(object):
+-
+- @defer.inlineCallbacks
+- def listen(self, proto_factory):
+- # we don't care which local TCP port we listen on, but
+- # we do need to know it
+- local_ep = TCP4ServerEndpoint(reactor, 0, interface=u"127.0.0.1")
+- target_port = yield local_ep.listen(proto_factory)
+- tor = yield txtorcon.connect(
+- reactor,
+- tor_control_ep,
+- )
+-
+- # create and add the service
+- hs = txtorcon.EphemeralHiddenService(
+- ports=["{} 127.0.0.1:{}".format(port, target_port.getHost().port)],
+- key_blob_or_type=private_key if private_key else "NEW:BEST",
+- )
+- log.info("Uploading descriptors can take more than 30s")
+- yield hs.add_to_tor(tor.protocol)
+-
+- # if it's new, store our private key
+- # XXX better "if private_key is None"?
+- if not exists(private_key_fname):
+- with open(private_key_fname, 'w') as f:
+- f.write(hs.private_key)
+- log.info("Wrote private key to '{fname}'", fname=private_key_fname)
+-
+- addr = txtorcon.TorOnionAddress(hs.hostname, port)
+- log.info(
+- "Listening on Tor onion service {addr.onion_uri}:{addr.onion_port}"
+- " with local port {local_port}",
+- addr=addr,
+- local_port=target_port.getHost().port,
+- )
+- defer.returnValue(addr)
+- endpoint = _EphemeralOnion()
+-
+ else:
+ raise Exception("invalid endpoint type '{}'".format(config['type']))
+
+@@ -656,24 +593,6 @@ def create_connecting_endpoint_from_config(config, cbdir, reactor, log):
+ elif config['type'] == 'twisted':
+ endpoint = clientFromString(reactor, config['client_string'])
+
+- elif config['type'] == 'tor':
+- host = config['host']
+- port = config['port']
+- socks_port = config['tor_socks_port']
+- tls = config.get('tls', False)
+- if not tls and not host.endswith(u'.onion'):
+- log.warn("Non-TLS connection traversing Tor network; end-to-end encryption advised")
+-
+- socks_endpoint = TCP4ClientEndpoint(
+- reactor, "127.0.0.1", socks_port,
+- )
+- endpoint = txtorcon.TorClientEndpoint(
+- host, port,
+- socks_endpoint=socks_endpoint,
+- reactor=reactor,
+- use_tls=tls,
+- )
+-
+ else:
+ raise Exception("invalid endpoint type '{}'".format(config['type']))
+
+diff --git a/requirements-dev.txt b/requirements-dev.txt
+index fa75074a..d68d1e89 100644
+--- a/requirements-dev.txt
++++ b/requirements-dev.txt
+@@ -4,7 +4,6 @@ colorama>=0.3.3
+ mock>=1.3.0
+ wheel>=0.26.0
+ hashin>=0.4.1
+-txtorcon>=0.19.3
+
+ # docs
+ flask
+diff --git a/requirements-min.txt b/requirements-min.txt
+index 38ee5a71..83c8d802 100644
+--- a/requirements-min.txt
++++ b/requirements-min.txt
+@@ -6,7 +6,6 @@ Twisted>=17.5.0
+ h2>=3.0.1
+ priority>=1.3.0
+ txaio>=2.8.2
+-txtorcon>=0.19.3
+ autobahn>=17.9.1
+ netaddr>=0.7.19
+ PyTrie>=0.3
+--
+2.14.1
+