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>