commit a87bd9a0e2e9fdcd1ddf211e7deefd9a08dd5b48 Author: Damian Johnson atagar@torproject.org Date: Tue Sep 8 15:06:26 2020 -0700
Check ONION_CLIENT_AUTH_ADD version
Methods for new tor features (and their associated tests) should check tor's version. Caught thanks to asn. --- stem/control.py | 3 +++ stem/version.py | 16 +++++++++------- test/integ/control/controller.py | 2 ++ 3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/stem/control.py b/stem/control.py index 5ee9782e..a232f4db 100644 --- a/stem/control.py +++ b/stem/control.py @@ -3115,6 +3115,9 @@ class Controller(BaseController): :raises: :class:`stem.ControllerError` if the call fails """
+ if await self.get_version() < stem.version.Requirement.ONION_CLIENT_AUTH_ADD: + raise ValueError('ONION_CLIENT_AUTH_ADD requires tor %s or higher' % stem.version.Requirement.ONION_CLIENT_AUTH_ADD) + request = 'ONION_CLIENT_AUTH_ADD %s %s:%s' % (service_id, key_type, private_key)
if client_name: diff --git a/stem/version.py b/stem/version.py index cd2c3c39..6edf93ae 100644 --- a/stem/version.py +++ b/stem/version.py @@ -26,13 +26,14 @@ easily parsed and compared, for instance...
Enumerations for the version requirements of features.
- ===================== =========== - Requirement Description - ===================== =========== - **DORMANT_MODE** **DORMANT** and **ACTIVE** :data:`~stem.Signal` - **DROPTIMEOUTS** **DROPTIMEOUTS** controller command - **HSFETCH_V3** HSFETCH for version 3 hidden services - ===================== =========== + =========================== =========== + Requirement Description + =========================== =========== + **DORMANT_MODE** **DORMANT** and **ACTIVE** :data:`~stem.Signal` + **DROPTIMEOUTS** **DROPTIMEOUTS** controller command + **HSFETCH_V3** HSFETCH for version 3 hidden services + **ONION_CLIENT_AUTH_ADD** **ONION_CLIENT_AUTH_ADD** controller command + =========================== =========== """
import functools @@ -221,4 +222,5 @@ Requirement = stem.util.enum.Enum( ('DORMANT_MODE', Version('0.4.0.1-alpha')), ('DROPTIMEOUTS', Version('0.4.5.0-alpha')), ('HSFETCH_V3', Version('0.4.1.1-alpha')), + ('ONION_CLIENT_AUTH_ADD', Version('0.4.3.1-alpha')), ) diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py index 6f5da0c4..553b1a4e 100644 --- a/test/integ/control/controller.py +++ b/test/integ/control/controller.py @@ -1627,6 +1627,7 @@ class TestController(unittest.TestCase): await controller.set_conf('OrPort', str(test.runner.ORPORT))
@test.require.controller + @test.require.version(stem.version.Requirement.ONION_CLIENT_AUTH_ADD) @async_test async def test_hidden_service_auth(self): """ @@ -1665,6 +1666,7 @@ class TestController(unittest.TestCase): # https://gitlab.torproject.org/tpo/core/tor/-/issues/40090
@test.require.controller + @test.require.version(stem.version.Requirement.ONION_CLIENT_AUTH_ADD) @async_test async def test_hidden_service_auth_invalid(self): """
tor-commits@lists.torproject.org