#!/bin/sh
# A script to turn Tor SOCKS4a in Privoxy on or off.

CONFFILE=/etc/privoxy/config            # privoxy config file.
TOR_REG="forward.*localhost:9050"       # Regular expression to find Tor in privoxy
PRIVOXY="/etc/init.d/privoxy restart"   # command to reload privoxy config file.
SED="/bin/sed"                          # sed command, of course.
GREP="/bin/grep"                        # grep command.

usage () {
echo "\
privoxy-tor-toggle: Change Privoxy's configuration to use/not use Tor.
Usage:
   privoxy.tor                  <-- Switch Tor on or off.
   privoxy.tor [on|off]         <-- Set Tor on or off.
   privoxy.tor status           <-- Display Tor's current status.
   privoxy.tor [-h|--help|-?]   <-- Print usage.
"
}

# Find out the current status of tor. Set $tor_status
get_status () {
   gret=`$GREP -l -e "^$TOR_REG"  $CONFFILE`
   if [ x$gret = x ] ; then
        tor_status=off;
   else
        tor_status=on;
   fi
   return
}

# Turn tor on/off according to $1
set_tor () {
   tor_gate=$1
   get_status
   if [ $tor_status = $tor_gate ] ; then
      echo "Tor is already $1."
      return
   elif [ $tor_gate = flip ] ; then
        if [ $tor_status = on ] ; then
                tor_gate=off
        elif [ $tor_status = off ] ; then
                tor_gate=on
        fi
   fi
   echo "Turning Tor $tor_gate..."
   if [ $tor_gate = on ] ; then
        reg=s/^#\($TOR_REG\)/\\1/
        $SED -i.bak -r "$reg"  $CONFFILE
   else
        reg=s/^\($TOR_REG\)/#\\1/
        $SED -i.bak -r "$reg" $CONFFILE
   fi
   $PRIVOXY
   return 0;
}

if [ x$1 = x ] ; then
   set_tor flip
elif [ $1 = on ] ; then
   set_tor on
elif [ $1 = off ] ; then
   set_tor off
elif [ $1 = status ] ; then
   get_status
   echo "Tor is $tor_status"
elif [ $1 = --help ] || [ $1 = -h ] || [ $1 = "-?" ] ; then
   usage
   exit 0
else
   echo "Unrecognized option: \"$1\""
fi

