From acb2c10a5bd99bac12f07f476e3f016b4277dbbf Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Sun, 14 Nov 2004 09:05:28 +0000 Subject: [PATCH] add another contributed tor start/stop script plus ship both our start/stop scripts in the tarball svn:r2845 --- contrib/Makefile.am | 2 +- contrib/torctl.in | 169 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 contrib/torctl.in diff --git a/contrib/Makefile.am b/contrib/Makefile.am index c318ad2253..5b073557a6 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,6 +1,6 @@ confdir = $(sysconfdir)/tor -EXTRA_DIST = tor-tsocks.conf torify.1 tor-control.py tor.nsi +EXTRA_DIST = tor-tsocks.conf torify.1 tor-control.py tor.nsi tor.sh torctl conf_DATA = tor-tsocks.conf 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 <