diff options
author | Roger Dingledine <arma@torproject.org> | 2004-11-14 09:05:28 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2004-11-14 09:05:28 +0000 |
commit | acb2c10a5bd99bac12f07f476e3f016b4277dbbf (patch) | |
tree | 534d5aec53565e371bae2821fb7b189572ecc198 /contrib/torctl.in | |
parent | 3f5c1138156de232dd27c0cd6da9eb3143d7168e (diff) | |
download | tor-acb2c10a5bd99bac12f07f476e3f016b4277dbbf.tar.gz tor-acb2c10a5bd99bac12f07f476e3f016b4277dbbf.zip |
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.in | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/contrib/torctl.in b/contrib/torctl.in new file mode 100644 index 0000000000..c557eee920 --- /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 + |