|
@@ -1,195 +0,0 @@
|
|
|
-#!/bin/sh
|
|
|
-#
|
|
|
-# TOR control script designed to allow an easy command line interface
|
|
|
-# to controlling The Onion Router
|
|
|
-#
|
|
|
-# The exit codes returned are:
|
|
|
-# 0 - operation completed successfully. For "status", tor running.
|
|
|
-# 1 - For "status", tor not running.
|
|
|
-# 2 - Command not supported
|
|
|
-# 3 - Could not be started or reloaded
|
|
|
-# 4 - Could not be stopped
|
|
|
-# 5 -
|
|
|
-# 6 -
|
|
|
-# 7 -
|
|
|
-# 8 -
|
|
|
-#
|
|
|
-# When multiple arguments are given, only the error from the _last_
|
|
|
-# one is reported.
|
|
|
-#
|
|
|
-#
|
|
|
-# |||||||||||||||||||| START CONFIGURATION SECTION ||||||||||||||||||||
|
|
|
-# -------------------- --------------------
|
|
|
-# Name of the executable
|
|
|
-EXEC=tor
|
|
|
-#
|
|
|
-# the path to your binary, including options if necessary
|
|
|
-TORBIN="@BINDIR@/$EXEC"
|
|
|
-#
|
|
|
-# the path to the configuration file
|
|
|
-TORCONF="@CONFDIR@/torrc"
|
|
|
-#
|
|
|
-# the path to your PID file
|
|
|
-PIDFILE="@LOCALSTATEDIR@/run/tor/tor.pid"
|
|
|
-#
|
|
|
-# The path to the log file
|
|
|
-LOGFILE="@LOCALSTATEDIR@/log/tor/tor.log"
|
|
|
-#
|
|
|
-# The path to the datadirectory
|
|
|
-TORDATA="@LOCALSTATEDIR@/lib/tor"
|
|
|
-#
|
|
|
-TORARGS="--pidfile $PIDFILE --log \"notice file $LOGFILE\" --runasdaemon 1"
|
|
|
-TORARGS="$TORARGS --datadirectory $TORDATA"
|
|
|
-
|
|
|
-# If user name is set in the environment, then use it;
|
|
|
-# otherwise run as the invoking user (or whatever user the config
|
|
|
-# file says)... unless the invoking user is root. The idea here is to
|
|
|
-# let an unprivileged user run tor for her own use using this script,
|
|
|
-# while still providing for it to be used as a system daemon.
|
|
|
-if [ "x`id -u`" = "x0" ]; then
|
|
|
- TORUSER=@TORUSER@
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "x$TORUSER" != "x" ]; then
|
|
|
- TORARGS="$TORARGS --user $TORUSER"
|
|
|
-fi
|
|
|
-
|
|
|
-# We no longer wrap the Tor daemon startup in an su when running as
|
|
|
-# root, because it's too painful to make the use of su portable.
|
|
|
-# Just let the daemon set the UID and GID.
|
|
|
-START="$TORBIN -f $TORCONF $TORARGS"
|
|
|
-
|
|
|
-#
|
|
|
-# -------------------- --------------------
|
|
|
-# |||||||||||||||||||| END CONFIGURATION SECTION ||||||||||||||||||||
|
|
|
-
|
|
|
-ERROR=0
|
|
|
-ARGV="$@"
|
|
|
-if [ "x$ARGV" = "x" ] ; then
|
|
|
- ARGS="help"
|
|
|
-fi
|
|
|
-
|
|
|
-checkIfRunning ( ) {
|
|
|
- # check for pidfile
|
|
|
- PID=unknown
|
|
|
- if [ -f $PIDFILE ] ; then
|
|
|
- PID=`/bin/cat $PIDFILE`
|
|
|
- if [ "x$PID" != "x" ] ; then
|
|
|
- if kill -0 $PID 2>/dev/null ; then
|
|
|
- STATUS="$EXEC (pid $PID) running"
|
|
|
- RUNNING=1
|
|
|
- else
|
|
|
- STATUS="PID file ($PIDFILE) present, but $EXEC ($PID) not running"
|
|
|
- RUNNING=0
|
|
|
- fi
|
|
|
- else
|
|
|
- STATUS="$EXEC (pid $PID?) not running"
|
|
|
- RUNNING=0
|
|
|
- fi
|
|
|
- else
|
|
|
- STATUS="$EXEC apparently not running (no pid file)"
|
|
|
- RUNNING=0
|
|
|
- fi
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-for ARG in $@ $ARGS
|
|
|
-do
|
|
|
- checkIfRunning
|
|
|
-
|
|
|
- case $ARG in
|
|
|
- start)
|
|
|
- if [ $RUNNING -eq 1 ]; then
|
|
|
- echo "$0 $ARG: $EXEC (pid $PID) already running"
|
|
|
- continue
|
|
|
- fi
|
|
|
- if eval "$START" ; then
|
|
|
- echo "$0 $ARG: $EXEC started"
|
|
|
- # Make sure it stayed up!
|
|
|
- /bin/sleep 1
|
|
|
- checkIfRunning
|
|
|
- if [ $RUNNING -eq 0 ]; then
|
|
|
- echo "$0 $ARG: $EXEC (pid $PID) quit unexpectedly"
|
|
|
- fi
|
|
|
- else
|
|
|
- echo "$0 $ARG: $EXEC could not be started"
|
|
|
- ERROR=3
|
|
|
- fi
|
|
|
- ;;
|
|
|
- stop)
|
|
|
- if [ $RUNNING -eq 0 ]; then
|
|
|
- echo "$0 $ARG: $STATUS"
|
|
|
- continue
|
|
|
- fi
|
|
|
- if kill -15 $PID ; then
|
|
|
- echo "$0 $ARG: $EXEC stopped"
|
|
|
- else
|
|
|
- /bin/sleep 1
|
|
|
- if kill -9 $PID ; then
|
|
|
- echo "$0 $ARG: $EXEC stopped"
|
|
|
- else
|
|
|
- echo "$0 $ARG: $EXEC could not be stopped"
|
|
|
- ERROR=4
|
|
|
- fi
|
|
|
- fi
|
|
|
- # Make sure it really died!
|
|
|
- /bin/sleep 1
|
|
|
- checkIfRunning
|
|
|
- if [ $RUNNING -eq 1 ]; then
|
|
|
- echo "$0 $ARG: $EXEC (pid $PID) unexpectedly still running"
|
|
|
- ERROR=4
|
|
|
- fi
|
|
|
- ;;
|
|
|
- restart)
|
|
|
- $0 stop start
|
|
|
- ;;
|
|
|
- reload)
|
|
|
- if [ $RUNNING -eq 0 ]; then
|
|
|
- echo "$0 $ARG: $STATUS"
|
|
|
- continue
|
|
|
- fi
|
|
|
- if kill -1 $PID; then
|
|
|
- /bin/sleep 1
|
|
|
- echo "$EXEC (PID $PID) reloaded"
|
|
|
- else
|
|
|
- echo "Can't reload $EXEC"
|
|
|
- ERROR=3
|
|
|
- fi
|
|
|
- ;;
|
|
|
- status)
|
|
|
- echo $STATUS
|
|
|
- if [ $RUNNING -eq 1 ]; then
|
|
|
- ERROR=0
|
|
|
- else
|
|
|
- ERROR=1
|
|
|
- fi
|
|
|
- ;;
|
|
|
- log)
|
|
|
- cat $LOGFILE
|
|
|
- ;;
|
|
|
- help)
|
|
|
- echo "usage: $0 (start|stop|restart|status|help)"
|
|
|
- /bin/cat <<EOF
|
|
|
-
|
|
|
-start - start $EXEC
|
|
|
-stop - stop $EXEC
|
|
|
-restart - stop and restart $EXEC if running or start if not running
|
|
|
-reload - cause the running process to reinitialize itself
|
|
|
-status - tell whether $EXEC is running or not
|
|
|
-log - display the contents of the log file
|
|
|
-help - this text
|
|
|
-
|
|
|
-EOF
|
|
|
- ERROR=0
|
|
|
- ;;
|
|
|
- *)
|
|
|
- $0 help
|
|
|
- ERROR=2
|
|
|
- ;;
|
|
|
-
|
|
|
- esac
|
|
|
-
|
|
|
-done
|
|
|
-
|
|
|
-exit $ERROR
|
|
|
-
|