[tor-commits] [torsocks/master] Add torsocks and usewithtor scripts from old source

dgoulet at torproject.org dgoulet at torproject.org
Fri Apr 4 22:40:25 UTC 2014


commit 94faab889c8c0a0e422dd6a506eceaa69b9d1ec6
Author: David Goulet <dgoulet at ev0ke.net>
Date:   Sun Jun 2 13:03:34 2013 -0400

    Add torsocks and usewithtor scripts from old source
    
    Signed-off-by: David Goulet <dgoulet at ev0ke.net>
---
 src/lib/torsocks.in   |  167 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/lib/usewithtor.in |  113 +++++++++++++++++++++++++++++++++
 2 files changed, 280 insertions(+)

diff --git a/src/lib/torsocks.in b/src/lib/torsocks.in
new file mode 100644
index 0000000..4eaed8f
--- /dev/null
+++ b/src/lib/torsocks.in
@@ -0,0 +1,167 @@
+#!/bin/sh
+# ***************************************************************************
+# *                                                                         *
+# *                                                                         *
+# *   Copyright (C) 2008 by Robert Hogan                                    *
+# *   robert at roberthogan.net                                                *
+# *   Copyright (C) 2012 by Jacob Appelbaum <jacob at torproject.org>          *
+# *                                                                         *
+# *   This program is free software; you can redistribute it and/or modify  *
+# *   it under the terms of the GNU General Public License as published by  *
+# *   the Free Software Foundation; either version 2 of the License, or     *
+# *   (at your option) any later version.                                   *
+# *                                                                         *
+# *   This program is distributed in the hope that it will be useful,       *
+# *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+# *   GNU General Public License for more details.                          *
+# *                                                                         *
+# *   You should have received a copy of the GNU General Public License     *
+# *   along with this program; if not, write to the                         *
+# *   Free Software Foundation, Inc.,                                       *
+#*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+# ***************************************************************************
+# *                                                                         *
+# *   This is a modified version of a source file from the Tor project.     *
+# *   Original copyright information follows:                               *
+# ***************************************************************************
+# Wrapper script for use of the torsocks(8) transparent socksification library
+#
+# There are three forms of usage for this script:
+#
+# @prefix@/bin/torsocks program [program arguments...]
+#
+# This form sets the users @LDPRELOAD@ environment variable so that torsocks(8)
+# will be loaded to socksify the application then executes the specified 
+# program (with the provided arguments). The following simple example might 
+# be used to telnet to www.foo.org via a torsocks.conf(5) configured socks server:
+#
+# @prefix@/bin/torsocks telnet www.foo.org
+#
+# The second form allows for torsocks(8) to be switched on and off for a
+# session (that is, it adds and removes torsocks from the @LDPRELOAD@ environment
+# variable). This form must be _sourced_ into the user's existing session
+# (and will only work with bourne shell users):
+#
+# . @prefix@/bin/torsocks on
+# telnet www.foo.org 
+# . @prefix@/bin/torsocks off
+# 
+# Or
+# 
+# source @prefix@/bin/torsocks on
+# telnet www.foo.org
+# source @prefix@/bin/torsocks off
+#
+# The third form creates a new shell with @LDPRELOAD@ set and is achieved
+# simply by running the script with no arguments 
+# 
+# @prefix@/bin/torsocks
+#
+# When finished the user can simply terminate the shell with 'exit'
+# 
+# This script is originally from the debian torsocks package by
+# Tamas Szerb <toma at rulez.org>
+# Modified by Robert Hogan <robert at roberthogan.net> April 16th 2006
+
+not_found () {
+    echo "ERROR: $1 cannot be found in PATH." >&2
+    exit 1
+}
+
+set_id () {
+    echo "ERROR: $1 is set${2}id. torsocks will not work on a set${2}id executable." >&2
+    exit 1
+}
+
+if [ $# = 0 ] ; then
+   echo "$0: insufficient arguments"
+   exit
+fi
+
+LIBDIR="@prefix@/lib/torsocks"
+LIB_NAME="libtorsocks"
+SHLIB_EXT="@SHLIB_EXT@"
+SHLIB="${LIBDIR}/${LIB_NAME}.${SHLIB_EXT}"
+
+# Check for libtorsocks and if set the 64bit variant
+if [ ! -f $SHLIB ]; then
+   LIBDIR="@prefix@/lib64/torsocks"
+   SHLIB="${LIBDIR}/${LIB_NAME}.${SHLIB_EXT}"
+fi
+
+# Ensure libtorsocks exists,
+if [ ! -f $SHLIB ]; then
+   echo "$0: $SHLIB does not exist! Try re-installing torsocks."
+   exit
+fi
+
+case "$1" in
+  on)
+    if [ -z "$@LDPRELOAD@" ]
+      then
+        export @LDPRELOAD@="${SHLIB}"
+      else
+        echo $@LDPRELOAD@ | grep -q "${SHLIB}" || \
+        export @LDPRELOAD@="${SHLIB} $@LDPRELOAD@"
+    fi
+    # FIXME: This env variable is only meaningful on Mac OSX, so it would be better
+    #        not to set it at all on other platforms.
+    export DYLD_FORCE_FLAT_NAMESPACE=1
+  ;;
+  off)
+    #replace '/' with '\/' in @prefix@
+    # escprefix=`echo '@prefix@' |sed 's/\\//\\\\\//g'`
+    # export @LDPRELOAD@=`echo -n $@LDPRELOAD@ | sed "s/$escprefix\/lib\/torsocks\/libtorsocks.so \?//"`
+    export @LDPRELOAD@=`echo -n $@LDPRELOAD@ | sed "s#@prefix@/lib/torsocks/libtorsocks\. at SHLIB_EXT@ *##"`
+    if [ -z "$@LDPRELOAD@" ]
+      then
+        unset @LDPRELOAD@
+        # FIXME: This env variable is only meaningful on Mac OSX, so it would be better
+        #        not to set it at all on other platforms.
+        unset DYLD_FORCE_FLAT_NAMESPACE=1
+    fi
+  ;;
+  show|sh)
+    echo "@LDPRELOAD@=\"$@LDPRELOAD@\""
+  ;;
+  -h|-?)
+      echo "$0: Please see torsocks(1) or read comment at top of $0"
+   ;;
+  --shell)
+    if [ -z "$@LDPRELOAD@" ]
+    then
+      export @LDPRELOAD@="${SHLIB}"
+    else
+      echo $@LDPRELOAD@ | grep -q "${SHLIB}" || \
+      export @LDPRELOAD@="${SHLIB} $@LDPRELOAD@"
+    fi
+    export DYLD_FORCE_FLAT_NAMESPACE=1
+    echo "torsocks: new torified shell coming right up..."
+    ${SHELL:-/bin/sh}
+  ;;
+  *)
+    if [ -z "$@LDPRELOAD@" ]
+    then
+      export @LDPRELOAD@="${SHLIB}"
+    else
+      echo $@LDPRELOAD@ | grep -q "${SHLIB}" || \
+      export @LDPRELOAD@="${SHLIB} $@LDPRELOAD@"
+    fi
+    export DYLD_FORCE_FLAT_NAMESPACE=1
+
+    if [ $# -gt 0 ]
+    then
+      if ! which "$1" >/dev/null 2>&1; then
+          not_found $1
+      elif [ -u `which "$1"` ]; then
+          set_id $1 u
+      elif [ -g `which "$1"` ]; then
+          set_id $1 g
+      fi
+      exec "$@"
+    fi
+  ;;
+esac
+
+#EOF
diff --git a/src/lib/usewithtor.in b/src/lib/usewithtor.in
new file mode 100644
index 0000000..e606760
--- /dev/null
+++ b/src/lib/usewithtor.in
@@ -0,0 +1,113 @@
+#! /bin/sh
+# ***************************************************************************
+# *                                                                         *
+# *   Copyright (C) 2008-2011 Robert Hogan <robert at roberthogan.net>         *
+# *                                                                         *
+# *   This program is free software; you can redistribute it and/or modify  *
+# *   it under the terms of the GNU General Public License as published by  *
+# *   the Free Software Foundation; either version 2 of the License, or     *
+# *   (at your option) any later version.                                   *
+# *                                                                         *
+# *   This program is distributed in the hope that it will be useful,       *
+# *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+# *   GNU General Public License for more details.                          *
+# *                                                                         *
+# *   You should have received a copy of the GNU General Public License     *
+# *   along with this program; if not, write to the                         *
+# *   Free Software Foundation, Inc.,                                       *
+#*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+# ***************************************************************************
+# *                                                                         *
+# *   This is a modified version of a source file from the Tor project.     *
+# *   Original copyright notice from tsocks source file follows:            *
+# ***************************************************************************
+
+# 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 <jacob at appelbaum.net> April 16th 2006
+# Modified by Marcus Griep <marcus at griep.us> June 16 2009
+# 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`"
+PROG=
+VERBOSE=
+
+usage () {
+	echo "Usage: $0 [-hv] <command> [<options>...]"
+}
+
+not_found () {
+	echo "ERROR: $1 cannot be found in PATH." >&2
+	exit 1
+}
+
+set_id () {
+	echo "ERROR: $1 is set${2}id. usewithtor will not work on a set${2}id executable." >&2
+	exit 1
+}
+
+# Check for any argument list
+if [ "$#" = 0 ]; then
+	usage >&2
+	exit 1
+fi
+
+while [ "$1" ]; do
+	case "$1" in
+		-h|--h*)
+			usage
+			exit 0
+			;;
+		-v|--v*)
+			VERBOSE=YesPlease
+			shift
+			;;
+		*)
+			break;
+	esac
+done
+
+if ! which "$1" >/dev/null 2>&1; then
+	not_found $1
+elif [ -u `which "$1"` ]; then
+	set_id $1 u
+elif [ -g `which "$1"` ]; then
+	set_id $1 g
+fi
+
+if [ -x "$TORSOCKS" ]; then
+	PROG=torsocks
+else
+	echo "$0: Unable to find torsocks in PATH." >&2
+	echo "    Perhaps you haven't installed it?" >&2
+	exit 1
+fi
+
+if [ "$VERBOSE" ]; then
+	echo "We're armed with the following torsocks: $TORSOCKS"
+	echo "We're attempting to use $PROG for all tor action."
+fi
+
+if [ "$PROG" = "torsocks" ]; then
+	# Define our torsocks config file
+	TORSOCKS_CONF_FILE="@CONFDIR@/torsocks.conf"
+	export TORSOCKS_CONF_FILE
+
+	# Check that we've got a torsocks config file
+	if [ -r "$TORSOCKS_CONF_FILE" ]; 	then
+		exec torsocks "$@"
+	else
+		echo "$0: Missing torsocks configuration file \"$TORSOCKS_CONF_FILE\" - torsocks will use defaults sensible for Tor." >&2
+		exec torsocks "$@"
+	fi
+fi
+
+# We should have hit an exec. If we get here, we didn't exec
+echo "$0: failed to exec $PROG $@" >&2
+exit 1





More information about the tor-commits mailing list