#!/bin/bash # -*- mode: sh; fill-column: 75; tab-width: 8; coding: utf-8-unix -*- PROG=exclude_badExits.py SOCKS_PORT=9050 SOCKS_HOST=127.0.0.1 CAFILE=/etc/ssl/certs/ca-certificates.crt # you may have a special python for installed packages EXE=`which python3.sh` MOD=exclude_badExits if [ ! -f exclude_badExits.hlp ] || \ [ exclude_badExits.hlp -nt src/exclude_badExits/exclude_badExits.py ] ; then PYTHONPATH=$PWD/src \ $EXE src/${MOD}/exclude_badExits.py --help > exclude_badExits.hlp fi if [ ! -f README.md ] || \ [ README.md -nt src/exclude_badExits/exclude_badExits.py ] ; then PYTHONPATH=$PWD/src \ $EXE -c 'from exclude_badExits.exclude_badExits import __doc__; print(__doc__)' \ > README.md fi # an example of running exclude_badExits with full debugging # expected to 20 minutes or so declare -a LARGS LARGS=( # --saved_only # --strict_nodes 1 --points_timeout 150 --log_level 10 --https_cafile $CAFILE ) [ -z "$socks_proxy" ] || \ LARGS+=( --proxy-host $SOCKS_HOST --proxy-port $SOCKS_PORT ) if [ -f /var/lib/tor/.SelekTOR/3xx/cache/9050/notice.log ] ; then LARGS+=(--notice_log /var/lib/tor/.SelekTOR/3xx/cache/9050/notice.log) fi if [ -d /var/lib/tor/hs ] ; then LARGS+=( --hs_dir /var/lib/tor/hs ) fi if [ -f '/run/tor/control' ] ; then LARGS+=(--proxy-ctl '/run/tor/control' ) else LARGS+=(--proxy-ctl 9051 ) fi ddg=duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad # for example, whitelist the introduction points to DuckDuckGo LARGS+=( --white_onions $ddg ) # you may need to be the tor user to read /run/tor/control grep -q ^debian-tor /etc/group && TORU=debian-tor || { grep -q ^tor /etc/group && TORU=tor } # --saved_only sudo -u $TORU $EXE src/exclude_badExits/exclude_badExits.py "${LARGS[@]}" "$@" \ 2>&1|tee exclude_badExits6.log # The DEBUG statements contain the detail of why the relay was considered bad.