#!/bin/sh TORLOC=/Library/StartupItems/Tor/Tor.loc if [ -f $TORLOC ]; then TORDIR=`cat /Library/StartupItems/Tor/Tor.loc` if [ "x$TORDIR" = "x" -o ! -d $TORDIR -o ! -x $TORDIR/tor ]; then TORDIR=/Library/Tor fi else TORDIR=/Library/Tor fi TORCONF=$TORDIR/torrc TORDATA=$TORDIR/var/lib/tor TORPID=/var/run/Tor.pid TORUSER=_tor TORGROUP=daemon TORCMD=$TORDIR/tor TORLOG=/var/log/tor.log ## Determine OSX Version # map version to name if [ -x /usr/bin/sw_vers ]; then # This is poor, yet functional. We don't care about the 3rd number in # the OS version OSVER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2` case "$OSVER" in "10.6") ARCH="universal";; "10.5") ARCH="universal";; "10.4") ARCH="universal";; "10.3") ARCH="ppc";; "10.2") ARCH="ppc";; "10.1") ARCH="ppc";; "10.0") ARCH="ppc";; esac else OS="unknown" fi if [ $ARCH != "universal" ]; then export EVENT_NOKQUEUE=1 fi ## # Tor Service ## . /etc/rc.common StartService () { if [ -f $TORCMD ]; then if pid=$(GetPID Tor); then return 0 else ConsoleMessage "Starting Tor Service" # Tentative # Making sure it is not running (I know it is not a best approarch) killall tor 2>/dev/null $TORCMD -f "$TORCONF" --runasdaemon 1 --pidfile "$TORPID" --datadirectory "$TORDATA" --user "$TORUSER" --group "$TORGROUP" --log "notice file $TORLOG" & fi fi } StopService () { if pid=$(GetPID Tor); then ConsoleMessage "Stopping Tor Service" kill -TERM "${pid}" # Just for sanity (sometimes necessary.) killall tor 2>/dev/null else ConsoleMessage "Tor Service not responding." # Just for sanity (sometimes necessary.) killall tor 2>/dev/null fi } RestartService () { StopService; StartService; } if [ "$#" = 0 ]; then echo "Syntax: tor {start|stop}" exit 1 fi RunService "$1"