aboutsummaryrefslogtreecommitdiff
path: root/contrib/torctl.in
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-11-14 09:05:28 +0000
committerRoger Dingledine <arma@torproject.org>2004-11-14 09:05:28 +0000
commitacb2c10a5bd99bac12f07f476e3f016b4277dbbf (patch)
tree534d5aec53565e371bae2821fb7b189572ecc198 /contrib/torctl.in
parent3f5c1138156de232dd27c0cd6da9eb3143d7168e (diff)
downloadtor-acb2c10a5bd99bac12f07f476e3f016b4277dbbf.tar
tor-acb2c10a5bd99bac12f07f476e3f016b4277dbbf.tar.gz
add another contributed tor start/stop script
plus ship both our start/stop scripts in the tarball svn:r2845
Diffstat (limited to 'contrib/torctl.in')
-rw-r--r--contrib/torctl.in169
1 files changed, 169 insertions, 0 deletions
diff --git a/contrib/torctl.in b/contrib/torctl.in
new file mode 100644
index 000000000..c557eee92
--- /dev/null
+++ b/contrib/torctl.in
@@ -0,0 +1,169 @@
+#!/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
+# 1 -
+# 2 - Command not supported
+# 3 - Could not be started
+# 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
+#
+# The USER and GROUP names:
+# TORUSER and TORGROUP if defined in the environment, else LOGNAME and GROUP
+# respectively.
+TORUSER=
+TORGROUP=
+
+TORARGS="--pidfile $PIDFILE --log \\"notice file $LOGFILE \\" --runasdaemon 1"
+TORARGS="$TORARGS --datadirectory $TORDATA"
+
+if [ "x$TORUSER" != "x" ]; then
+ TORARGS="$TORARGS --user $TORUSER"
+fi
+if [ "x$TORGROUP" != "x" ]; then
+ TORARGS="$TORARGS --group $TORGROUP"
+fi
+
+# the command used to start
+if [ "x$TORUSER" = "x" ]; then
+ START="$TORBIN -f $TORCONF $TORARGS"
+else
+ START="/bin/su -c \\"$TORBIN -f $TORCONF $TORARGS\\" $TORUSER"
+fi
+
+#
+# -------------------- --------------------
+# |||||||||||||||||||| 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 $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"
+ fi
+ ;;
+ restart)
+ $0 stop start
+ ;;
+ status)
+ echo $STATUS
+ ;;
+ *)
+ 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
+status - tell whether $EXEC is running or not
+help - this text
+
+EOF
+ ERROR=2
+ ;;
+
+ esac
+
+done
+
+exit $ERROR
+