#!/bin/bash
# 2006.02.11 tor-0.1.1.13.alpha
# 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
. /etc/sysconfig/rc
. $rc_functions
# -------------------- --------------------
# user and group we run
TORUSER=tor
TORGROUP=tor
#
# Name of the executable
EXEC="tor"
#
# the path to your binary, including options if necessary
TORBIN="/usr/local/bin/$EXEC"
#
# the path to the configuration file
TORCONF="/usr/local/etc/tor/torrc"
#
# PID
PID=""
#
# PIDFILE
PIDFILE="/var/run/tor.pid"
#
# The path to the log file
LOGFILE="/var/log/tor/tor.log"
#
# The path to the datadirectory
TORDATA="/var/lib/tor"
#
#TORARGS="--pidfile $PIDFILE --log \"debug file $LOGFILE\" --runasdaemon 1"
TORARGS="--pidfile $PIDFILE --log \"debug file $LOGFILE\" --runasdaemon 0"
TORARGS="$TORARGS --datadirectory $TORDATA"
TORARGS="$TORARGS --user $TORUSER"
TORARGS="$TORARGS --group $TORGROUP"
STARTTOR="$TORBIN -f $TORCONF $TORARGS > /dev/null &"
# some checks for us
if [ ! -x $TORBIN ] ; then exit 0 ;fi
if [ ! -f $TORCONF ] ; then exit 0 ;fi
status() {
local PID=`/sbin/pidof -s ${TORBIN}`
if [ ! -z "${PID}" ]; then
echo "${TORBIN} running, PID ${PID}"
else
echo "${TORBIN} not running."
fi
}
start () {
# start daemon
local PID=`/sbin/pidof -s ${TORBIN}`
if [ -z "${PID}" ]; then
echo "Starting ${TORBIN}"
eval ${STARTTOR}
evaluate_retval
else
echo "$TORBIN running, PID ${PID}"
fi
}
stop () {
# stop daemon
local PID=`/sbin/pidof -s ${TORBIN}`
if [ ! -z "${PID}" ]; then
echo "Stopping ${TORBIN}"
kill -TERM ${PID}
evaluate_retval
else
echo "${TORBIN} not running."
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac