103 lines
3.6 KiB
Plaintext
103 lines
3.6 KiB
Plaintext
# -*-mode: doctest; tab-width: 0; py-indent-offset: 4; coding: utf-8-unix -*-
|
|
|
|
== stem_examples tor testing ==
|
|
|
|
This is a Python doctest file that is executable documentation.
|
|
|
|
Pass the controller password if needed as an environment variable:
|
|
|
|
>>> import os
|
|
>>> assert os.environ['TOR_CONTROLLER_PASSWORD']
|
|
|
|
Add our code to the PYTHONPATH
|
|
>>> import sys
|
|
>>> sys.path.append(os.path.join(os.getcwd(), 'src', 'stem_examples'))
|
|
|
|
We'll need the settings defined in {{{/usr/local/etc/testforge/testforge.yml}}}
|
|
|
|
>>> print("yaml", file=sys.stderr)
|
|
>>> import yaml
|
|
>>> sFacts = open('/usr/local/etc/testforge/testforge.yml').read()
|
|
>>> assert sFacts
|
|
>>> dFacts = yaml.safe_load(sFacts)
|
|
|
|
FixMe: use the settings for the ports and directories below.
|
|
|
|
>>> import os
|
|
>>> os.environ['http_proxy'] = 'http://'+dFacts['HTTP_PROXYHOST']+':'+str(dFacts['HTTP_PROXYPORT'])
|
|
>>> os.environ['https_proxy'] = 'http://'+dFacts['HTTPS_PROXYHOST']+':'+str(dFacts['HTTPS_PROXYPORT'])
|
|
>>> os.environ['socks_proxy'] = 'socks5://'+dFacts['SOCKS_PROXYHOST']+':'+str(dFacts['SOCKS_PROXYPORT'])
|
|
|
|
### compare_flags Comparing Directory Authority Flags
|
|
### introduction_points Introduction Points
|
|
|
|
>>> print("introduction_points", file=sys.stderr)
|
|
>>> import introduction_points
|
|
|
|
The introduction points are the ways of connecting to hidden services.
|
|
We test 3 known hidden services: Facebook, DuckDuckGo and .
|
|
|
|
>>> lKNOWN_ONIONS = [
|
|
... 'facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd', # facebook
|
|
... 'duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad', # ddg
|
|
... 'zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad', # hks
|
|
... ]
|
|
|
|
We wil expect to get back the hidden service version, the descriptor-lifetime
|
|
and then the descriptor-signing-key-cert:
|
|
|
|
>>> introduction_points.iMain(lKNOWN_ONIONS) #doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
|
|
hs-descriptor 3
|
|
descriptor-lifetime ...
|
|
<BLANKLINE>
|
|
|
|
### exit_used Determine The Exit You're Using
|
|
|
|
Lets say you're using Tor and one day you run into something odd. Maybe a
|
|
misconfigured relay, or maybe one that's being malicious.
|
|
How can you figure out what exit you're using?
|
|
|
|
>>> print("exit_used", file=sys.stderr)
|
|
>>> import exit_used
|
|
|
|
## relay_connections Connection Summary
|
|
|
|
>>> print("relay_connections", file=sys.stderr)
|
|
>>> import relay_connections
|
|
|
|
The following provides a summary of your relay's inbound and outbound connections.
|
|
You must be root or tor to run this:
|
|
relay_connections.iMain(["--ctrlport", "9051"])
|
|
|
|
## outdated_relays
|
|
|
|
>>> print("outdated_relays", file=sys.stderr)
|
|
>>> import outdated_relays
|
|
>>> outdated_relays.iMain() #doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
|
|
Checking for outdated relays ...
|
|
<BLANKLINE>
|
|
|
|
## tor_bootstrap_check
|
|
|
|
>>> print("tor_bootstrap_check", file=sys.stderr)
|
|
>>> import tor_bootstrap_check
|
|
|
|
A script by adrelanos@riseup.net to check what percentage of boostrapping
|
|
tor is at. This fails under doctest but not from the cmdline
|
|
|
|
>> tor_bootstrap_check.iMain() #doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
|
|
NOTICE ...
|
|
<BLANKLINE>
|
|
|
|
control_port = stem.socket.ControlPort(address, port)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
File "/usr/local/lib/python3.11/site-packages/stem/socket.py", line 503, in __init__
|
|
self.connect()
|
|
File "/usr/local/lib/python3.11/site-packages/stem/socket.py", line 172, in connect
|
|
self._socket = self._make_socket()
|
|
^^^^^^^^^^^^^^^^^^^
|
|
File "/usr/local/lib/python3.11/site-packages/stem/socket.py", line 538, in _make_socket
|
|
raise stem.SocketError(exc)
|
|
stem.SocketError: Socket error: 0x01: General SOCKS server failure
|
|
|