upgrade
This commit is contained in:
parent
e41515a8a7
commit
dbe62ffbd7
16
Makefile
16
Makefile
@ -1,5 +1,10 @@
|
|||||||
LOCAL_DOCTEST=/usr/local/bin/toxcore_run_doctest3.bash
|
LOCAL_DOCTEST=/usr/local/bin/toxcore_run_doctest3.bash
|
||||||
DOCTEST=${LOCAL_DOCTEST}
|
DOCTEST=${LOCAL_DOCTEST}
|
||||||
|
MOD=stem_examples
|
||||||
|
|
||||||
|
|
||||||
|
check::
|
||||||
|
sh python3.sh -c "import ${MOD}"
|
||||||
|
|
||||||
lint::
|
lint::
|
||||||
sh .pylint.sh
|
sh .pylint.sh
|
||||||
@ -7,6 +12,15 @@ lint::
|
|||||||
rsync::
|
rsync::
|
||||||
bash .rsync.sh
|
bash .rsync.sh
|
||||||
|
|
||||||
|
pyi::
|
||||||
|
echo FixMe
|
||||||
|
|
||||||
doctest:
|
doctest:
|
||||||
export PYTHONPATH=${PWD}
|
export PYTHONPATH=${PWD}
|
||||||
${DOCTEST} stem_examples.txt
|
${DOCTEST} ${MOD].txt
|
||||||
|
|
||||||
|
veryclean:: clean
|
||||||
|
rm -rf build dist __pycache__ .pylint.err .pylint.out
|
||||||
|
|
||||||
|
clean::
|
||||||
|
find . -name \*~ -delete
|
||||||
|
92
README.md
92
README.md
@ -1,6 +1,90 @@
|
|||||||
# stem_examples
|
## stem_examples
|
||||||
|
|
||||||
|
Examples of using the Python stem library to query the state of a running tor.
|
||||||
|
|
||||||
|
You can set TOR_CONTROLLER_PASSWORD in the environment if your tor control port
|
||||||
|
requires a password.
|
||||||
|
|
||||||
|
* check_digests
|
||||||
|
* compare_flags
|
||||||
|
* exit_used
|
||||||
|
* introduction_points
|
||||||
|
* list_circuits
|
||||||
|
* mappaddress
|
||||||
|
* outdated_relays
|
||||||
|
* relay_connections
|
||||||
|
* tor_bootstrap_check
|
||||||
|
|
||||||
|
### check_digests
|
||||||
|
|
||||||
|
### compare_flags Comparing Directory Authority Flags
|
||||||
|
|
||||||
|
Compares the votes of two directory authorities, in this case moria1
|
||||||
|
and maatuska, with a special interest in the 'Running' flag.
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/examples/compare_flags.html
|
||||||
|
|
||||||
|
### exit_used Exit Used
|
||||||
|
|
||||||
|
Determine The Exit You're Using
|
||||||
|
|
||||||
stem examples
|
|
||||||
https://stem.torproject.org/tutorials/examples/exit_used.html
|
https://stem.torproject.org/tutorials/examples/exit_used.html
|
||||||
http://vt5hknv6sblkgf22.onion/tutorials/examples/list_circuits.html
|
|
||||||
http://vt5hknv6sblkgf22.onion/tutorials/examples/relay_connections.html
|
### introduction_points Introduction Points
|
||||||
|
|
||||||
|
This script tests if you can reach a hidden service, passed as an onion address
|
||||||
|
as an argument. If no argument is given, 3 common onion sites are tested:
|
||||||
|
Facebook, DuckDuckGo, and .
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/over_the_river.html
|
||||||
|
|
||||||
|
### list_circuits List Circuits
|
||||||
|
|
||||||
|
Tor creates new circuits and tears down old ones on your behalf, so
|
||||||
|
how can you get information about circuits Tor currently has available?
|
||||||
|
https://stem.torproject.org/tutorials/examples/list_circuits.html
|
||||||
|
|
||||||
|
### mappaddress
|
||||||
|
|
||||||
|
### outdated_relays List Outdated Relays
|
||||||
|
|
||||||
|
Time marches on. Tor makes new releases, and at some point needs to
|
||||||
|
drop support for old ones. Below is the script we used on ticket 9476
|
||||||
|
to reach out to relay operators that needed to upgrade.
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/examples/outdated_relays.html
|
||||||
|
|
||||||
|
### relay_connections Connection Summary
|
||||||
|
|
||||||
|
The following provides a summary of your relay's inbound and outbound connections.
|
||||||
|
|
||||||
|
To use this you must set DisableDebuggerAttachment 0 in your
|
||||||
|
torrc. Otherwise connection information will be unavailable.
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/examples/relay_connections.html
|
||||||
|
|
||||||
|
### Download Tor Descriptors
|
||||||
|
|
||||||
|
Tor relays provide a mirror for the tor relay descriptors it has
|
||||||
|
cached. These are available from its ORPort using Tor's wire protocol,
|
||||||
|
and optionally with http as well from a DirPort.
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/examples/download_descriptor.html
|
||||||
|
|
||||||
|
### Votes by Bandwidth Authorities
|
||||||
|
|
||||||
|
Tor takes into account a relay's throughput when picking a route through the Tor network for its circuits. That is to say large, fast relays receive more traffic than small ones since they can better service the load.
|
||||||
|
|
||||||
|
To determine a relay's throughput special authorities, called bandwidth authorities,
|
||||||
|
take periodic measurements using them. The lifecycle of new Tor relays
|
||||||
|
is a bit more complicated than that, butthat's the general idea.
|
||||||
|
|
||||||
|
Bandwidth authorities include their measurements in their votes. The following
|
||||||
|
gets their current votes then prints how many relays it had a measurement for.
|
||||||
|
|
||||||
|
https://stem.torproject.org/tutorials/examples/votes_by_bandwidth_authorities.html
|
||||||
|
|
||||||
|
## tor_bootstrap_check
|
||||||
|
|
||||||
|
A script by adrelanos@riseup.net to check what percentage of boostrapping
|
||||||
|
tor is at.
|
||||||
|
24
src/stem_examples/Makefile
Normal file
24
src/stem_examples/Makefile
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
PYTHON_EXE_MSYS=/usr/local/bin/python3.sh
|
||||||
|
PYLINT_EXE_MSYS=/usr/local/bin/toxcore_pylint3.bash
|
||||||
|
|
||||||
|
lint.phantompy::
|
||||||
|
${PYLINT_EXE_MSYS} lookupdns.py qasync_phantompy.py phantompy.py support_phantompy.py
|
||||||
|
|
||||||
|
lint.badexits::
|
||||||
|
${PYLINT_EXE_MSYS} exclude_badExits.py \
|
||||||
|
support_onions.py trustor_poc.py
|
||||||
|
isort -c -diff exclude_badExits.py \
|
||||||
|
support_onions.py trustor_poc.py
|
||||||
|
|
||||||
|
lint::
|
||||||
|
sh .pylint.sh
|
||||||
|
|
||||||
|
refresh:: ../../exclude_badExits.md
|
||||||
|
|
||||||
|
../../exclude_badExits.md::
|
||||||
|
${PYTHON_EXE_MSYS} -c \
|
||||||
|
'import exclude_badExits; print(exclude_badExits.__doc__)' > $@
|
||||||
|
echo "\n## Usage \n\`\`\`\n" >> $@
|
||||||
|
${PYTHON_EXE_MSYS} exclude_badExits.py --help \
|
||||||
|
| sed -e '/^[^uo ]/d' >> $@
|
||||||
|
echo "\n\`\`\`\n" >> $@
|
38
src/stem_examples/exit_used.py.dst
Executable file
38
src/stem_examples/exit_used.py.dst
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
# -*-mode: python; py-indent-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
|
||||||
|
|
||||||
|
#http://vt5hknv6sblkgf22.onion/tutorials/examples/exit_used.html
|
||||||
|
import functools
|
||||||
|
|
||||||
|
from stem import StreamStatus
|
||||||
|
from stem.control import EventType, Controller
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Tracking requests for tor exits. Press 'enter' to end.")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
with Controller.from_port() as controller:
|
||||||
|
controller.authenticate()
|
||||||
|
|
||||||
|
stream_listener = functools.partial(stream_event, controller)
|
||||||
|
controller.add_event_listener(stream_listener, EventType.STREAM)
|
||||||
|
|
||||||
|
raw_input() # wait for user to press enter
|
||||||
|
|
||||||
|
|
||||||
|
def stream_event(controller, event):
|
||||||
|
if event.status == StreamStatus.SUCCEEDED and event.circ_id:
|
||||||
|
circ = controller.get_circuit(event.circ_id)
|
||||||
|
|
||||||
|
exit_fingerprint = circ.path[-1][0]
|
||||||
|
exit_relay = controller.get_network_status(exit_fingerprint)
|
||||||
|
|
||||||
|
print("Exit relay for our connection to %s" % (event.target))
|
||||||
|
print(" address: %s:%i" % (exit_relay.address, exit_relay.or_port))
|
||||||
|
print(" fingerprint: %s" % exit_relay.fingerprint)
|
||||||
|
print(" nickname: %s" % exit_relay.nickname)
|
||||||
|
print(" locale: %s" % controller.get_info("ip-to-country/%s" % exit_relay.address, 'unknown'))
|
||||||
|
print("")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
11
src/stem_examples/introduction_points.py.dst
Normal file
11
src/stem_examples/introduction_points.py.dst
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from stem.control import Controller
|
||||||
|
|
||||||
|
with Controller.from_port(port = 9051) as controller:
|
||||||
|
controller.authenticate()
|
||||||
|
desc = controller.get_hidden_service_descriptor('3g2upl4pq6kufc4m')
|
||||||
|
|
||||||
|
print("DuckDuckGo's introduction points are...\n")
|
||||||
|
|
||||||
|
for introduction_point in desc.introduction_points():
|
||||||
|
print(' %s:%s => %s' % (introduction_point.address, introduction_point.port, introduction_point.identifier))
|
||||||
|
# http://vt5hknv6sblkgf22.onion/tutorials/over_the_river.html
|
25
src/stem_examples/list_circuits.py.dst
Executable file
25
src/stem_examples/list_circuits.py.dst
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
# -*-mode: python; py-indent-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
|
||||||
|
|
||||||
|
# http://vt5hknv6sblkgf22.onion/tutorials/examples/list_circuits.html
|
||||||
|
from stem import CircStatus
|
||||||
|
from stem.control import Controller
|
||||||
|
|
||||||
|
# port(port = 9051)
|
||||||
|
with Controller.from_socket_file(path='/var/run/tor/control') as controller:
|
||||||
|
controller.authenticate()
|
||||||
|
|
||||||
|
for circ in sorted(controller.get_circuits()):
|
||||||
|
if circ.status != CircStatus.BUILT:
|
||||||
|
continue
|
||||||
|
|
||||||
|
print("")
|
||||||
|
print("Circuit %s (%s)" % (circ.id, circ.purpose))
|
||||||
|
|
||||||
|
for i, entry in enumerate(circ.path):
|
||||||
|
div = '+' if (i == len(circ.path) - 1) else '|'
|
||||||
|
fingerprint, nickname = entry
|
||||||
|
|
||||||
|
desc = controller.get_network_status(fingerprint, None)
|
||||||
|
address = desc.address if desc else 'unknown'
|
||||||
|
|
||||||
|
print(" %s- %s (%s, %s)" % (div, fingerprint, nickname, address))
|
@ -1,3 +1,4 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
from stem.descriptor.remote import DescriptorDownloader
|
from stem.descriptor.remote import DescriptorDownloader
|
||||||
from stem.version import Version
|
from stem.version import Version
|
||||||
|
Loading…
Reference in New Issue
Block a user