commit:     e050f5d9affe5ca9d36a01a455a52460631dda4c
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 20 19:57:22 2017 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Sep 20 20:02:43 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e050f5d9

net-misc/crossbar: Version bumps, Add python_test() to 17.6.1_p3-r1

Package-Manager: Portage-2.3.6, Repoman-2.3.3

 net-misc/crossbar/Manifest                         |   2 +
 net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild     |   6 +
 ...-17.6.1_p3-r1.ebuild => crossbar-17.8.1.ebuild} |  79 +++---
 ...-17.6.1_p3-r1.ebuild => crossbar-17.9.1.ebuild} |  77 +++---
 .../files/crossbar-17.8.1-Revert-Torservices.patch | 246 +++++++++++++++++++
 .../files/crossbar-17.9.1-Revert-Torservices.patch | 270 +++++++++++++++++++++
 net-misc/crossbar/metadata.xml                     |   9 +-
 7 files changed, 623 insertions(+), 66 deletions(-)

diff --git a/net-misc/crossbar/Manifest b/net-misc/crossbar/Manifest
index 37f6c5d045f..76d1b502b9d 100644
--- a/net-misc/crossbar/Manifest
+++ b/net-misc/crossbar/Manifest
@@ -1 +1,3 @@
 DIST crossbar-17.6.1.post3.tar.gz 725054 SHA256 
8d023af0a772404f4e57add5888583fc0068d62a7a2249bea4539a6d7b70fbd9 SHA512 
c3efac2c7f7a41e6544eb98057afb249908453d6ddfb81c514f0705ed967374d50f844fe1a80395652b81a7c23abc90a03a0d6c88287f10cbfe99e64cb70919d
 WHIRLPOOL 
08555f6cecbc57ab447569864cec75993fb8aea485ce7c85aefb1530b950b5913371e73d384e15ce539445f759c4f74a35457ef4ef2fc8791c0802325cebdc7b
+DIST crossbar-17.9.1.tar.gz 730753 SHA256 
717cdd2177e77eb85e615de2b857ac3dfc0079a10e7a349027aa3a556abb2611 SHA512 
fee96e1c900c756536dc9bf6088c512a50accbae0e8010b7e058de8ed2ebb2f366e5d5051ab2f07517dd642f4d65c65e9b701b00d7bca1b9352c58f38f892563
 WHIRLPOOL 
e9f6192aecb9c34e715686b1f7543d4a395bdb06aa48fd914115f32bfb2170830549e418ca256d85e7806550504ab3e35a208bde1e64bfee7ee7393378bd0f7b
+DIST v17.8.1.tar.gz 1545668 SHA256 
ba970b12c7b57c993739088248cf36d74aab12dda87cc906e25da96101344580 SHA512 
21ed2031ddebe93fcd4fcd01243b2aa8979444e833386db83b10d032cfc3c3f9d47cf638d4cf26eb2801e91892c85115fec91e0a6f071a619f014132663f6c32
 WHIRLPOOL 
fae59dc7ed9a2baddc203fad8109344d67925ef6c6e4d3751a2389f38b0dc058109f556074e8c25fb528107793e79a4380c121e451f2cb35c48c26d1aef64f58

diff --git a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild 
b/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
index 14bd07de2fd..d320ae17908 100644
--- a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
+++ b/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
@@ -84,6 +84,12 @@ pkg_setup() {
        enewuser crossbar
 }
 
+python_test() {
+       pushd "${TEST_DIR}" > /dev/null || die
+       /usr/bin/trial crossbar || die "Tests failed with ${EPYTHON}"
+       popd > /dev/null || die
+}
+
 python_install_all() {
        distutils-r1_python_install_all
 

diff --git a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild 
b/net-misc/crossbar/crossbar-17.8.1.ebuild
similarity index 84%
copy from net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
copy to net-misc/crossbar/crossbar-17.8.1.ebuild
index 14bd07de2fd..330fd4ac579 100644
--- a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
+++ b/net-misc/crossbar/crossbar-17.8.1.ebuild
@@ -2,67 +2,67 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
-# Not quite ready for py3, unconditionally deps on too many backported
-# pkgs installed in newer pythons that shouldn't need them.
-PYTHON_COMPAT=( python2_7 )
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
 
 inherit  user systemd distutils-r1
 
-MY_PV="17.6.1.post3"
+MY_PV="${PV}"
 MY_P="${PN}-${MY_PV}"
 
 DESCRIPTION="Crossbar.io - The Unified Application Router for the twisted 
framework"
 HOMEPAGE="http://crossbar.io/ https://github.com/crossbario/crossbar 
https://pypi.python.org/pypi/crossbar";
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+#SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+SRC_URI="https://github.com/crossbario/crossbar/archive/v17.8.1.tar.gz";
 
 LICENSE="AGPL-3"
 SLOT="0"
 KEYWORDS="~amd64"
-IUSE="test"
+IUSE="test tor"
 
 RDEPEND="
-       >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
-       >=dev-python/twisted-17.1.0[${PYTHON_USEDEP}]
-       $(python_gen_cond_dep '>=dev-python/enum34-1.1.6[${PYTHON_USEDEP}]' 
python2_7)
-       >=dev-python/txaio-2.8.0[${PYTHON_USEDEP}]
-       >=dev-python/pyasn1-0.2.3[${PYTHON_USEDEP}]
-       >=dev-python/pyasn1-modules-0.0.9[${PYTHON_USEDEP}]
-       >=dev-python/incremental-17.5.0[${PYTHON_USEDEP}]
-       >=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
-       <dev-python/hyper-h2-3.0.0[${PYTHON_USEDEP}]
-       >=dev-python/priority-1.3.0[${PYTHON_USEDEP}]
-       >=dev-python/service_identity-17.0.0[${PYTHON_USEDEP}]
-       >=dev-python/pyopenssl-17.1.0[${PYTHON_USEDEP}]
-       >=dev-python/cryptography-1.9.0[${PYTHON_USEDEP}]
-       >=dev-python/autobahn-17.6.2[${PYTHON_USEDEP}]
-       >=dev-python/jinja-2.9.6[${PYTHON_USEDEP}]
-       >=dev-python/treq-17.3.1[${PYTHON_USEDEP}]
-       >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
-       >=dev-python/click-6.7[${PYTHON_USEDEP}]
        >=dev-python/attrs-17.2.0[${PYTHON_USEDEP}]
+       >=dev-python/autobahn-17.7.1[${PYTHON_USEDEP}]
+       >=dev-python/bitstring-3.1.5[${PYTHON_USEDEP}]
+       >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
+       >=dev-python/click-6.7[${PYTHON_USEDEP}]
        >=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
+       >=dev-python/cryptography-1.9.0[${PYTHON_USEDEP}]
+       $(python_gen_cond_dep '>=dev-python/enum34-1.1.6[${PYTHON_USEDEP}]' 
python2_7)
+       >=dev-python/hyper-h2-3.0.1[${PYTHON_USEDEP}]
+       >=dev-python/incremental-17.5.0[${PYTHON_USEDEP}]
        $(python_gen_cond_dep '>=dev-python/ipaddress-1.0.18[${PYTHON_USEDEP}]' 
python2_7)
-       >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
-       >=dev-python/bitstring-3.1.5[${PYTHON_USEDEP}]
+       >=dev-python/jinja-2.9.6[${PYTHON_USEDEP}]
+       >=dev-python/lmdb-0.92[${PYTHON_USEDEP}]
+       >=dev-python/mistune-0.7.4[${PYTHON_USEDEP}]
+       >=dev-python/netaddr-0.7.19[${PYTHON_USEDEP}]
+       >=dev-python/priority-1.3.0[${PYTHON_USEDEP}]
+       >=dev-python/psutil-5.2.2[${PYTHON_USEDEP}]
+       >=dev-python/pyasn1-0.2.3[${PYTHON_USEDEP}]
+       >=dev-python/pyasn1-modules-0.0.9[${PYTHON_USEDEP}]
        >=dev-python/pygments-2.2.0[${PYTHON_USEDEP}]
+       >=dev-python/pyopenssl-17.1.0[${PYTHON_USEDEP}]
        >=dev-python/pytrie-0.3[${PYTHON_USEDEP}]
-       >=dev-python/psutil-5.2.2[${PYTHON_USEDEP}]
        >=dev-python/py-ubjson-0.9.0[${PYTHON_USEDEP}]
        >=dev-python/pynacl-1.1.2[${PYTHON_USEDEP}]
        >=dev-python/pyqrcode-1.2.1[${PYTHON_USEDEP}]
-       >=dev-python/lmdb-0.92[${PYTHON_USEDEP}]
-       >=dev-python/mistune-0.7.4[${PYTHON_USEDEP}]
-       >=dev-python/netaddr-0.7.19[${PYTHON_USEDEP}]
-       >=dev-python/setproctitle-1.1.10[${PYTHON_USEDEP}]
+       >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
        >=dev-python/sdnotify-0.3.1[${PYTHON_USEDEP}]
+       >=dev-python/service_identity-17.0.0[${PYTHON_USEDEP}]
+       >=dev-python/setproctitle-1.1.10[${PYTHON_USEDEP}]
+       >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
        >=dev-python/shutilwhich-1.1.0[${PYTHON_USEDEP}]
+       >=dev-python/treq-17.3.1[${PYTHON_USEDEP}]
+       >=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
+       >=dev-python/txaio-2.8.1[${PYTHON_USEDEP}]
        >=dev-python/u-msgpack-2.4.1[${PYTHON_USEDEP}]
        >=dev-python/watchdog-0.8.3[${PYTHON_USEDEP}]
+       >=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
+       tor? ( >=dev-python/txtorcon-0.19.3[${PYTHON_USEDEP}] )
 "
 DEPEND="
        !dev-python/crossbar
        >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
-       >=dev-python/twisted-17.1.0[${PYTHON_USEDEP}]
+       >=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
        test? (
                dev-python/mock[${PYTHON_USEDEP}]
        )
@@ -77,6 +77,15 @@ python_prepare_all() {
        # don't install the copyright, license... let dodoc do it
        sed -e "s/^    data_files=.*//" -i setup.py || die
 
+       if ! use tor; then
+               eapply "${FILESDIR}/${PN}-17.8.1-Revert-Torservices.patch"
+               sed -e "s/^txtorcon.*//" -i requirements-min.txt || die
+       fi
+       # remove these py2 deps from setuptools install_requires
+       # it is not filtered out for >=py3.4 and results in test fails
+       sed -e "s/^ipaddress.*//" -i requirements-min.txt || die
+       sed -e "s/^enum34.*//" -i requirements-min.txt || die
+
        distutils-r1_python_prepare_all
 }
 
@@ -84,6 +93,12 @@ pkg_setup() {
        enewuser crossbar
 }
 
+python_test() {
+       pushd "${TEST_DIR}" > /dev/null || die
+       /usr/bin/trial crossbar || die "Tests failed with ${EPYTHON}"
+       popd > /dev/null || die
+}
+
 python_install_all() {
        distutils-r1_python_install_all
 

diff --git a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild 
b/net-misc/crossbar/crossbar-17.9.1.ebuild
similarity index 85%
copy from net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
copy to net-misc/crossbar/crossbar-17.9.1.ebuild
index 14bd07de2fd..5597bd6ef26 100644
--- a/net-misc/crossbar/crossbar-17.6.1_p3-r1.ebuild
+++ b/net-misc/crossbar/crossbar-17.9.1.ebuild
@@ -2,13 +2,11 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
-# Not quite ready for py3, unconditionally deps on too many backported
-# pkgs installed in newer pythons that shouldn't need them.
-PYTHON_COMPAT=( python2_7 )
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
 
 inherit  user systemd distutils-r1
 
-MY_PV="17.6.1.post3"
+MY_PV="${PV}"
 MY_P="${PN}-${MY_PV}"
 
 DESCRIPTION="Crossbar.io - The Unified Application Router for the twisted 
framework"
@@ -18,51 +16,53 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
 LICENSE="AGPL-3"
 SLOT="0"
 KEYWORDS="~amd64"
-IUSE="test"
+IUSE="test tor"
 
 RDEPEND="
-       >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
-       >=dev-python/twisted-17.1.0[${PYTHON_USEDEP}]
-       $(python_gen_cond_dep '>=dev-python/enum34-1.1.6[${PYTHON_USEDEP}]' 
python2_7)
-       >=dev-python/txaio-2.8.0[${PYTHON_USEDEP}]
-       >=dev-python/pyasn1-0.2.3[${PYTHON_USEDEP}]
-       >=dev-python/pyasn1-modules-0.0.9[${PYTHON_USEDEP}]
-       >=dev-python/incremental-17.5.0[${PYTHON_USEDEP}]
-       >=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
-       <dev-python/hyper-h2-3.0.0[${PYTHON_USEDEP}]
-       >=dev-python/priority-1.3.0[${PYTHON_USEDEP}]
-       >=dev-python/service_identity-17.0.0[${PYTHON_USEDEP}]
-       >=dev-python/pyopenssl-17.1.0[${PYTHON_USEDEP}]
-       >=dev-python/cryptography-1.9.0[${PYTHON_USEDEP}]
-       >=dev-python/autobahn-17.6.2[${PYTHON_USEDEP}]
-       >=dev-python/jinja-2.9.6[${PYTHON_USEDEP}]
-       >=dev-python/treq-17.3.1[${PYTHON_USEDEP}]
-       >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
-       >=dev-python/click-6.7[${PYTHON_USEDEP}]
        >=dev-python/attrs-17.2.0[${PYTHON_USEDEP}]
+       ~dev-python/autobahn-${PV}[${PYTHON_USEDEP}]
+       >=dev-python/bitstring-3.1.5[${PYTHON_USEDEP}]
+       >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
+       >=dev-python/click-6.7[${PYTHON_USEDEP}]
        >=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
+       >=dev-python/cryptography-1.9.0[${PYTHON_USEDEP}]
+       $(python_gen_cond_dep '>=dev-python/enum34-1.1.6[${PYTHON_USEDEP}]' 
python2_7)
+       >=dev-python/hyper-h2-3.0.1[${PYTHON_USEDEP}]
+       =dev-python/idna-2.5[${PYTHON_USEDEP}]
+       >=dev-python/incremental-17.5.0[${PYTHON_USEDEP}]
        $(python_gen_cond_dep '>=dev-python/ipaddress-1.0.18[${PYTHON_USEDEP}]' 
python2_7)
-       >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
-       >=dev-python/bitstring-3.1.5[${PYTHON_USEDEP}]
+       >=dev-python/jinja-2.9.6[${PYTHON_USEDEP}]
+       >=dev-python/lmdb-0.92[${PYTHON_USEDEP}]
+       >=dev-python/mistune-0.7.4[${PYTHON_USEDEP}]
+       >=dev-python/netaddr-0.7.19[${PYTHON_USEDEP}]
+       >=dev-python/priority-1.3.0[${PYTHON_USEDEP}]
+       >=dev-python/psutil-5.2.2[${PYTHON_USEDEP}]
+       >=dev-python/pyasn1-0.2.3[${PYTHON_USEDEP}]
+       >=dev-python/pyasn1-modules-0.0.9[${PYTHON_USEDEP}]
        >=dev-python/pygments-2.2.0[${PYTHON_USEDEP}]
+       >=dev-python/pyopenssl-17.1.0[${PYTHON_USEDEP}]
        >=dev-python/pytrie-0.3[${PYTHON_USEDEP}]
-       >=dev-python/psutil-5.2.2[${PYTHON_USEDEP}]
        >=dev-python/py-ubjson-0.9.0[${PYTHON_USEDEP}]
        >=dev-python/pynacl-1.1.2[${PYTHON_USEDEP}]
        >=dev-python/pyqrcode-1.2.1[${PYTHON_USEDEP}]
-       >=dev-python/lmdb-0.92[${PYTHON_USEDEP}]
-       >=dev-python/mistune-0.7.4[${PYTHON_USEDEP}]
-       >=dev-python/netaddr-0.7.19[${PYTHON_USEDEP}]
-       >=dev-python/setproctitle-1.1.10[${PYTHON_USEDEP}]
+       >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
        >=dev-python/sdnotify-0.3.1[${PYTHON_USEDEP}]
+       >=dev-python/service_identity-17.0.0[${PYTHON_USEDEP}]
+       >=dev-python/setproctitle-1.1.10[${PYTHON_USEDEP}]
+       >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
        >=dev-python/shutilwhich-1.1.0[${PYTHON_USEDEP}]
+       >=dev-python/treq-17.3.1[${PYTHON_USEDEP}]
+       >=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
+       >=dev-python/txaio-2.8.2[${PYTHON_USEDEP}]
        >=dev-python/u-msgpack-2.4.1[${PYTHON_USEDEP}]
        >=dev-python/watchdog-0.8.3[${PYTHON_USEDEP}]
+       >=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
+       tor? ( >=dev-python/txtorcon-0.19.3[${PYTHON_USEDEP}] )
 "
 DEPEND="
        !dev-python/crossbar
        >=dev-python/setuptools-36.0.1[${PYTHON_USEDEP}]
-       >=dev-python/twisted-17.1.0[${PYTHON_USEDEP}]
+       >=dev-python/twisted-17.5.0[${PYTHON_USEDEP}]
        test? (
                dev-python/mock[${PYTHON_USEDEP}]
        )
@@ -77,6 +77,15 @@ python_prepare_all() {
        # don't install the copyright, license... let dodoc do it
        sed -e "s/^    data_files=.*//" -i setup.py || die
 
+       if ! use tor; then
+               eapply "${FILESDIR}/${PN}-17.9.1-Revert-Torservices.patch"
+               sed -e "s/^txtorcon.*//" -i requirements-min.txt || die
+       fi
+       # remove these py2 deps from setuptools install_requires
+       # it is not filtered out for >=py3.4 and results in test fails
+       sed -e "s/^ipaddress.*//" -i requirements-min.txt || die
+       sed -e "s/^enum34.*//" -i requirements-min.txt || die
+
        distutils-r1_python_prepare_all
 }
 
@@ -84,6 +93,12 @@ pkg_setup() {
        enewuser crossbar
 }
 
+python_test() {
+       pushd "${TEST_DIR}" > /dev/null || die
+       /usr/bin/trial crossbar || die "Tests failed with ${EPYTHON}"
+       popd > /dev/null || die
+}
+
 python_install_all() {
        distutils-r1_python_install_all
 

diff --git a/net-misc/crossbar/files/crossbar-17.8.1-Revert-Torservices.patch 
b/net-misc/crossbar/files/crossbar-17.8.1-Revert-Torservices.patch
new file mode 100644
index 00000000000..3a83bdf8fc6
--- /dev/null
+++ b/net-misc/crossbar/files/crossbar-17.8.1-Revert-Torservices.patch
@@ -0,0 +1,246 @@
+From 97a2d923dff32397c9df5adb95ecb84bcd95d83d Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dol...@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, [int, long]),
+-            u"private_key_file": (True, [six.text_type]),
+-            u"tor_control_endpoint": (True, [Mapping])
+-        },
+-        endpoint,
+-        "onion endpoint config",
+-    )
+-
+-    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']))
+ 
+-- 
+2.14.1
+

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 00000000000..dd4b2b58e45
--- /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 <dol...@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
+

diff --git a/net-misc/crossbar/metadata.xml b/net-misc/crossbar/metadata.xml
index 254c332dbb0..54a0a68272d 100644
--- a/net-misc/crossbar/metadata.xml
+++ b/net-misc/crossbar/metadata.xml
@@ -13,10 +13,13 @@
                <remote-id type="github">crossbariocrossbar</remote-id>
        </upstream>
        <longdescription>
-               Crossbar.io is an open source networking platform 
+               Crossbar.io is an open source networking platform
                for distributed and microservice applications. It implements the
-               open Web Application Messaging Protocol (WAMP), is feature 
rich, 
-               scalable, robust and secure. Let Crossbar.io take care of the 
+               open Web Application Messaging Protocol (WAMP), is feature rich,
+               scalable, robust and secure. Let Crossbar.io take care of the
                hard parts of messaging so you can focus on your app's features.
        </longdescription>
+       <use>
+               <flag name="tor">include tor services connections support</flag>
+       </use>
 </pkgmetadata>

Reply via email to