#!/bin/bash red() { IFS= ; while read -r line; do echo -e '\e[31m'$line'\e[0m'; done; } green() { IFS= ; while read -r line; do echo -e '\e[32m'$line'\e[0m'; done; } yellow() { IFS= ; while read -r line; do echo -e '\e[33m'$line'\e[0m'; done; } blue() { IFS= ; while read -r line; do echo -e '\e[34m'$line'\e[0m'; done; } purple() { IFS= ; while read -r line; do echo -e '\e[35m'$line'\e[0m'; done; } cyan() { IFS= ; while read -r line; do echo -e '\e[36m'$line'\e[0m'; done; } SOCK_PORT=$((9000+$1)) CONTROL_PORT=$((9100+$1)) LOCAL_PORT=$((9200+$1)) DONAR_PORT=$((7000+$1*12)) while true; do touch /tmp/empty /usr/bin/tor \ -f /tmp/empty --defaults-torrc /tmp/empty \ --hush \ --UseEntryGuards 0 \ --SocksPort 0 \ --ControlPort $CONTROL_PORT \ --HiddenServiceNonAnonymousMode 1 \ --HiddenServiceSingleHopMode 1 \ --DataDirectory /tmp/tor$CONTROL_PORT | red & sleep 1 /usr/bin/tor \ -f /tmp/empty --defaults-torrc /tmp/empty \ --hush \ --UseEntryGuards 0 \ --SocksPort "127.0.0.1:$SOCK_PORT IsolateDestPort IsolateDestAddr IsolateClientAddr" \ --DataDirectory /tmp/tor$SOCK_PORT | green & sleep 1 rm -rf state_$LOCAL_PORT/ mkdir state_$LOCAL_PORT/ pushd . cd state_$LOCAL_PORT/ /usr/local/bin/donar \ -s \ -a dup2 \ -q $CONTROL_PORT \ -k $DONAR_PORT \ -l 2 \ -n \ -b \ -e $LOCAL_PORT 2>&1 | yellow & sleep 1 /usr/local/bin/donar \ -c \ -a dup2 \ -q $SOCK_PORT \ -k $DONAR_PORT \ -o ./onion_services.pub \ -l 2 \ -b \ -r $LOCAL_PORT 2>&1 | blue & sleep 1 popd /usr/local/bin/measlat \ -l \ -t udp \ -h 127.0.0.1 \ -p $LOCAL_PORT \ -c 135000 \ -i 40 \ -m torfonena \ -s 172 2>&1 | cyan & sleep 1 /usr/local/bin/measlat \ -t udp \ -h 127.13.3.7 \ -p $LOCAL_PORT \ -b \ -c 1 \ -i 5000 \ -m torfonena \ -s 172 2>&1 | purple /usr/local/bin/measlat \ -t udp \ -h 127.13.3.7 \ -p $LOCAL_PORT \ -c 135000 \ -i 40 \ -m torfonena \ -s 172 2>&1 | purple kill -9 $(jobs -p) sleep 5 done