#! /bin/sh # Wrapper script for use of the tsocks(8) transparent socksification library # See the tsocks(1) and torify(1) manpages. # Copyright (c) 2004, 2006 Peter Palfrader # Modified by Jacob Appelbaum April 16th 2006 # May be distributed under the same terms as Tor itself # Define and ensure we have tsocks # XXX: what if we don't have which? TORSOCKS="`which torsocks`" TSOCKS="`which tsocks`" PROG="" if [ ! -x "$TSOCKS" ] then echo "$0: Can't find tsocks in PATH. Perhaps you haven't installed it?" >&2 else PROG=$TSOCKS fi if [ ! -x "$TORSOCKS" ] then echo "$0: Can't find torsocks in PATH. Perhaps you haven't installed it?" >&2 else PROG=$TORSOCKS fi if [ ! -x "$PROG" ] then echo "$0: Can't find the required tor helpers in our PATH. Perhaps you haven't installed them?" >&2 exit 1; fi # Check for any argument list if [ "$#" = 0 ] then echo "Usage: $0 [-hv] [...]" >&2 exit 1 fi if [ "$#" = 1 ] && ( [ "$1" = "-h" ] || [ "$1" = "--help" ] ) then echo "Usage: $0 [-hv] [...]" exit 0 fi if [ "$1" = "-v" ] || [ "$1" = "--verbose" ] then echo "We're armed with the following tsocks: $TSOCKS" echo "We're armed with the following torsocks: $TORSOCKS" echo "We're attempting to use $PROG for all tor action." shift 1 fi if [ "$PROG" == "$TSOCKS" ] then # Define our tsocks config file TSOCKS_CONF_FILE="/etc/tor/tor-tsocks.conf" export TSOCKS_CONF_FILE # Check that we've got a tsocks config file if [ -r "$TSOCKS_CONF_FILE" ] then echo "WARNING: tsocks is known to leak DNS and UDP data." >&2 exec tsocks "$@" echo "$0: Failed to exec tsocks $@" >&2 exit 1 else echo "$0: Missing tsocks configuration file \"$TSOCKS_CONF_FILE\"." >&2 exit 1 fi fi if [ "$PROG" == "$TORSOCKS" ] then exec torsocks "$@" fi