summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-09-20 23:11:46 -0400
committerRoger Dingledine <arma@torproject.org>2009-09-20 23:11:46 -0400
commit61e814af7a4e257523be9d9b29f029358241bb14 (patch)
tree11cc3f1b0013fe442e189262fda470b93addc7c2
parent93b33e15abc32998dd94cac2590b05bd48c5f34a (diff)
parent5149ae57f1ed5084e8dbde2b227f0bb498292cf4 (diff)
downloadtor-61e814af7a4e257523be9d9b29f029358241bb14.tar.gz
tor-61e814af7a4e257523be9d9b29f029358241bb14.zip
Merge commit 'sebastian/weasel_torify'
-rwxr-xr-xcontrib/torify.in77
1 files changed, 36 insertions, 41 deletions
diff --git a/contrib/torify.in b/contrib/torify.in
index 5bf7d4dbcf..d9aac1d66e 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