commit 1087ebf6dadad2cc3ee81ad5ba8dc35e327cb665
Author: Damian Johnson <[email protected]>
Date: Thu Sep 10 18:20:04 2020 -0700
Allow control connection to IPv6 addresses
Controller.from_port() improperly rejects IPv6 addresses as invalid...
https://github.com/torproject/stem/issues/74
This expands a few other methods to allow IPv6 addresses as well.
---
docs/change_log.rst | 1 +
stem/connection.py | 4 ++--
stem/control.py | 8 ++++----
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/docs/change_log.rst b/docs/change_log.rst
index bbd13ef5..5a9a8928 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -61,6 +61,7 @@ The following are only available within Stem's `git repository
* Socket based control connections often raised BrokenPipeError when closed
* Added :func:`~stem.control.Controller.add_hidden_service_auth`,
:func:`~stem.control.Controller.remove_hidden_service_auth`, and
:func:`~stem.control.Controller.list_hidden_service_auth` to the
:class:`~stem.control.Controller`
* Incorrect filesystem encoding broke latin-1 cookie path (:ticket:`57`)
+ * Allow control connection to IPv6 addresses (:ticket:`74`)
* **Descriptors**
diff --git a/stem/connection.py b/stem/connection.py
index f5f92464..68cfda45 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -357,8 +357,8 @@ async def connect_async(control_port: Tuple[str, Union[str,
int]] = ('127.0.0.1'
elif control_port:
if len(control_port) != 2:
raise ValueError('The control_port argument for connect() should be an
(address, port) tuple.')
- elif not stem.util.connection.is_valid_ipv4_address(control_port[0]):
- raise ValueError("'%s' isn't a vaid IPv4 address" % control_port[0])
+ elif not stem.util.connection.is_valid_ipv4_address(control_port[0]) and
not stem.util.connection.is_valid_ipv6_address(control_port[0]):
+ raise ValueError("'%s' isn't a vaid address" % control_port[0])
elif control_port[1] != 'default' and not
stem.util.connection.is_valid_port(control_port[1]):
raise ValueError("'%s' isn't a valid port" % control_port[1])
diff --git a/stem/control.py b/stem/control.py
index a232f4db..9a387f55 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -1072,7 +1072,7 @@ class Controller(BaseController):
import stem.connection
- if not stem.util.connection.is_valid_ipv4_address(address):
+ if not stem.util.connection.is_valid_ipv4_address(address) and not
stem.util.connection.is_valid_ipv6_address(address):
raise ValueError('Invalid IP address: %s' % address)
elif port != 'default' and not stem.util.connection.is_valid_port(port):
raise ValueError('Invalid port: %s' % port)
@@ -2611,7 +2611,7 @@ class Controller(BaseController):
if not stem.util.connection.is_valid_port(port):
raise stem.ProtocolError('GETCONF provided an invalid
HiddenServicePort port (%s): %s' % (port, content))
- elif not stem.util.connection.is_valid_ipv4_address(target_address):
+ elif not stem.util.connection.is_valid_ipv4_address(target_address)
and not stem.util.connection.is_valid_ipv6_address(target_address):
raise stem.ProtocolError('GETCONF provided an invalid
HiddenServicePort target address (%s): %s' % (target_address, content))
elif not stem.util.connection.is_valid_port(target_port):
raise stem.ProtocolError('GETCONF provided an invalid
HiddenServicePort target port (%s): %s' % (target_port, content))
@@ -2722,8 +2722,8 @@ class Controller(BaseController):
if not stem.util.connection.is_valid_port(port):
raise ValueError("%s isn't a valid port number" % port)
- elif target_address and not
stem.util.connection.is_valid_ipv4_address(target_address):
- raise ValueError("%s isn't a valid IPv4 address" % target_address)
+ elif target_address and not
stem.util.connection.is_valid_ipv4_address(target_address) and not
stem.util.connection.is_valid_ipv6_address(target_address):
+ raise ValueError("%s isn't a valid IP address" % target_address)
elif target_port is not None and not
stem.util.connection.is_valid_port(target_port):
raise ValueError("%s isn't a valid port number" % target_port)
elif auth_type not in (None, 'basic', 'stealth'):
_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits