[tor-commits] [stem/master] Add an example of using basic hidden service auth
atagar at torproject.org
atagar at torproject.org
Wed Nov 29 20:16:28 UTC 2017
commit 3f9057b45152ab0de1600c16c4cd11bb5639c14e
Author: Damian Johnson <atagar at torproject.org>
Date: Wed Nov 29 12:15:30 2017 -0800
Add an example of using basic hidden service auth
Snippet courtesy of ZeroMux.
---
docs/tutorials/over_the_river.rst | 24 ++++++++++++++++++++++++
stem/socket.py | 8 ++++----
stem/util/system.py | 2 ++
3 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/docs/tutorials/over_the_river.rst b/docs/tutorials/over_the_river.rst
index 3f8ae0c2..dac78827 100644
--- a/docs/tutorials/over_the_river.rst
+++ b/docs/tutorials/over_the_river.rst
@@ -70,6 +70,30 @@ Now if we run this...
.. image:: /_static/hidden_service.png
+.. _hidden-service-authentication:
+
+Hidden service authentication
+-----------------------------
+
+Hidden services you create can restrict their access, requiring in essence a
+password...
+
+::
+
+ >>> from stem.control import Controller
+ >>> controller = Controller.from_port()
+ >>> controller.authenticate()
+ >>> response = controller.create_ephemeral_hidden_service({80: 8080}, await_publication=True, basic_auth={'bob': None, 'alice': None})
+ >>> response.service_id, response.client_auth
+ ('l3lnorirzn7hrjnw', {'alice': 'I6AMKiay+UkM5MfrvdnF2A', 'bob': 'VLsbrSGyrb5JYEvZmQ3tMg'})
+
+To access this service users simply provide this credential to tor via their
+torrc or SETCONF prior to visiting it...
+
+::
+
+ >>> controller.set_conf('HidServAuth', 'l3lnorirzn7hrjnw.onion I6AMKiay+UkM5MfrvdnF2A')
+
.. _ephemeral-hidden-services:
Ephemeral hidden services
diff --git a/stem/socket.py b/stem/socket.py
index ef2d77c7..b05524b5 100644
--- a/stem/socket.py
+++ b/stem/socket.py
@@ -167,11 +167,11 @@ class ControlSocket(object):
# everything down. However, there's a couple cases where this will
# cause deadlock...
#
- # * this socketClosed was *caused by* a close() call, which is joining
- # on our thread
+ # * This SocketClosed was *caused by* a close() call, which is joining
+ # on our thread.
#
- # * a send() call that's currently in flight is about to call close(),
- # also attempting to join on us
+ # * A send() call that's currently in flight is about to call close(),
+ # also attempting to join on us.
#
# To resolve this we make a non-blocking call to acquire the send lock.
# If we get it then great, we can close safely. If not then one of the
diff --git a/stem/util/system.py b/stem/util/system.py
index 8de186b1..cec095ea 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -1266,6 +1266,8 @@ def call(command, default = UNDEFINED, ignore_exit_status = False, timeout = Non
* **CallTimeoutError** if the timeout is reached without a default
"""
+ # TODO: in stem 2.x return a struct with stdout, stderr, and runtime instead
+
global SYSTEM_CALL_TIME
if isinstance(command, str):
More information about the tor-commits
mailing list