aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2009-09-09 21:33:32 +0200
committerSebastian Hahn <sebastian@torproject.org>2009-09-09 21:37:19 +0200
commit5149ae57f1ed5084e8dbde2b227f0bb498292cf4 (patch)
tree26029c121ba94132d7a41972c1c5a857ece2e7e5 /contrib
parent3de5ac9baa7dc12f5bc441d75a8be48995e0f3a8 (diff)
downloadtor-5149ae57f1ed5084e8dbde2b227f0bb498292cf4.tar
tor-5149ae57f1ed5084e8dbde2b227f0bb498292cf4.tar.gz
Fix torify: Do not complain if we cannot find all socksifiers
No longer complain if we cannot find both torify and tsocks. As long as we have one we are happy. Do not rely on which, it's not POSIX. Catch error if torsocks fails and print an error message.
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/torify.in77
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