|
@@ -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
|