diff options
author | Roger Dingledine <arma@torproject.org> | 2009-09-20 23:11:46 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2009-09-20 23:11:46 -0400 |
commit | 61e814af7a4e257523be9d9b29f029358241bb14 (patch) | |
tree | 11cc3f1b0013fe442e189262fda470b93addc7c2 /contrib | |
parent | 93b33e15abc32998dd94cac2590b05bd48c5f34a (diff) | |
parent | 5149ae57f1ed5084e8dbde2b227f0bb498292cf4 (diff) | |
download | tor-61e814af7a4e257523be9d9b29f029358241bb14.tar tor-61e814af7a4e257523be9d9b29f029358241bb14.tar.gz |
Merge commit 'sebastian/weasel_torify'
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/torify.in | 77 |
1 files changed, 36 insertions, 41 deletions
diff --git a/contrib/torify.in b/contrib/torify.in index 5bf7d4dbc..d9aac1d66 100755 --- a/contrib/torify.in +++ b/contrib/torify.in @@ -3,57 +3,52 @@ # 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 +# Copyright (c) 2004, 2006, 2009 Peter Palfrader # Modified by Jacob Appelbaum <jacob@appelbaum.net> 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 +# taken from Debian's Developer's Reference, 6.4 +pathfind() { + OLDIFS="$IFS" + IFS=: + for p in $PATH; do + if [ -x "$p/$*" ]; then + IFS="$OLDIFS" + return 0 + fi + done + IFS="$OLDIFS" + return 1 +} # Check for any argument list -if [ "$#" = 0 ] -then +if [ "$#" = 0 ]; then echo "Usage: $0 [-hv] <command> [<options>...]" >&2 exit 1 fi -if [ "$#" = 1 ] && ( [ "$1" = "-h" ] || [ "$1" = "--help" ] ) -then + +if [ "$#" = 1 ] && ( [ "$1" = "-h" ] || [ "$1" = "--help" ] ); then echo "Usage: $0 [-hv] <command> [<options>...]" 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." +if [ "$1" = "-v" ] || [ "$1" = "--verbose" ]; then + verbose=1 shift 1 +else + verbose=0 fi -if [ "$PROG" = "$TSOCKS" ] -then +if pathfind torsocks; then + ! [ "$verbose" -ge 1 ] || echo "Using torsocks as socksifier." >&2 + + exec torsocks "$@" + echo "$0: Failed to exec torsocks $@" >&2 + exit 1 + +elif pathfind tsocks; then + ! [ "$verbose" -ge 1 ] || echo "Using tsocks as socksifier." >&2 + # Define our tsocks config file TSOCKS_CONF_FILE="/etc/tor/tor-tsocks.conf" export TSOCKS_CONF_FILE @@ -61,7 +56,7 @@ then # 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 + echo "WARNING: tsocks is known to leak DNS and UDP data. If you had torsocks we would use that." >&2 exec tsocks "$@" echo "$0: Failed to exec tsocks $@" >&2 exit 1 @@ -69,8 +64,8 @@ then echo "$0: Missing tsocks configuration file \"$TSOCKS_CONF_FILE\"." >&2 exit 1 fi -fi -if [ "$PROG" = "$TORSOCKS" ] -then - exec torsocks "$@" + +else + echo "$0: Can't find neither tsocks nor torsocks in your PATH. Perhaps you haven't installed either?" >&2 + exit 1 fi |