parent
93d7e25cf9
commit
8a579fbe0b
@ -1,252 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: tor
|
|
||||||
# Required-Start: $local_fs $remote_fs $network $named $time
|
|
||||||
# Required-Stop: $local_fs $remote_fs $network $named $time
|
|
||||||
# Should-Start: $syslog
|
|
||||||
# Should-Stop: $syslog
|
|
||||||
# Default-Start: 2 3 4 5
|
|
||||||
# Default-Stop: 0 1 6
|
|
||||||
# Short-Description: Starts The Onion Router daemon processes
|
|
||||||
# Description: Start The Onion Router, a TCP overlay
|
|
||||||
# network client that provides anonymous
|
|
||||||
# transport.
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
# Load the VERBOSE setting and other rcS variables
|
|
||||||
. /lib/init/vars.sh
|
|
||||||
|
|
||||||
# Define LSB log_* functions.
|
|
||||||
. /lib/lsb/init-functions
|
|
||||||
|
|
||||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
|
||||||
DAEMON=/usr/bin/tor
|
|
||||||
NAME=tor
|
|
||||||
DESC="tor daemon"
|
|
||||||
TORLOGDIR=/var/log/tor
|
|
||||||
TORPIDDIR=/var/run/tor
|
|
||||||
TORPID=$TORPIDDIR/tor.pid
|
|
||||||
DEFAULTSFILE=/etc/default/$NAME
|
|
||||||
WAITFORDAEMON=60
|
|
||||||
DEFAULT_ARGS="--defaults-torrc /usr/share/tor/tor-service-defaults-torrc"
|
|
||||||
VERIFY_ARGS="--verify-config $DEFAULT_ARGS"
|
|
||||||
USE_AA_EXEC="yes"
|
|
||||||
ARGS=""
|
|
||||||
if [ "${VERBOSE:-}" != "yes" ]; then
|
|
||||||
ARGS="$ARGS --hush"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Let's try to figure our some sane defaults:
|
|
||||||
if [ -r /proc/sys/fs/file-max ]; then
|
|
||||||
system_max=`cat /proc/sys/fs/file-max`
|
|
||||||
if [ "$system_max" -gt "80000" ] ; then
|
|
||||||
MAX_FILEDESCRIPTORS=32768
|
|
||||||
elif [ "$system_max" -gt "40000" ] ; then
|
|
||||||
MAX_FILEDESCRIPTORS=16384
|
|
||||||
elif [ "$system_max" -gt "10000" ] ; then
|
|
||||||
MAX_FILEDESCRIPTORS=8192
|
|
||||||
else
|
|
||||||
MAX_FILEDESCRIPTORS=1024
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
Warning: Your system has very few filedescriptors available in total.
|
|
||||||
|
|
||||||
Maybe you should try raising that by adding 'fs.file-max=100000' to your
|
|
||||||
/etc/sysctl.conf file. Feel free to pick any number that you deem appropriate.
|
|
||||||
Then run 'sysctl -p'. See /proc/sys/fs/file-max for the current value, and
|
|
||||||
file-nr in the same directory for how many of those are used at the moment.
|
|
||||||
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MAX_FILEDESCRIPTORS=8192
|
|
||||||
fi
|
|
||||||
|
|
||||||
NICE=""
|
|
||||||
|
|
||||||
test -x $DAEMON || exit 0
|
|
||||||
|
|
||||||
# Include tor defaults if available
|
|
||||||
if [ -f $DEFAULTSFILE ] ; then
|
|
||||||
. $DEFAULTSFILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
wait_for_deaddaemon () {
|
|
||||||
pid=$1
|
|
||||||
sleep 1
|
|
||||||
if test -n "$pid"
|
|
||||||
then
|
|
||||||
if kill -0 $pid 2>/dev/null
|
|
||||||
then
|
|
||||||
cnt=0
|
|
||||||
while kill -0 $pid 2>/dev/null
|
|
||||||
do
|
|
||||||
cnt=`expr $cnt + 1`
|
|
||||||
if [ $cnt -gt $WAITFORDAEMON ]
|
|
||||||
then
|
|
||||||
log_action_end_msg 1 "still running"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
[ "`expr $cnt % 3`" != 2 ] || log_action_cont_msg ""
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
log_action_end_msg 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
check_torpiddir () {
|
|
||||||
if test ! -d $TORPIDDIR; then
|
|
||||||
mkdir -m 02750 "$TORPIDDIR"
|
|
||||||
chown debian-tor:debian-tor "$TORPIDDIR"
|
|
||||||
! [ -x /sbin/restorecon ] || /sbin/restorecon "$TORPIDDIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -x $TORPIDDIR; then
|
|
||||||
log_action_end_msg 1 "cannot access $TORPIDDIR directory, are you root?"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_torlogdir () {
|
|
||||||
if test ! -d $TORLOGDIR; then
|
|
||||||
mkdir -m 02750 "$TORLOGDIR"
|
|
||||||
chown debian-tor:adm "$TORLOGDIR"
|
|
||||||
! [ -x /sbin/restorecon ] || /sbin/restorecon "$TORPIDDIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
check_config () {
|
|
||||||
if ! $DAEMON $VERIFY_ARGS > /dev/null; then
|
|
||||||
log_failure_msg "Checking if $NAME configuration is valid"
|
|
||||||
$DAEMON $VERIFY_ARGS >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
if [ "$RUN_DAEMON" != "yes" ]; then
|
|
||||||
log_action_msg "Not starting $DESC (Disabled in $DEFAULTSFILE)."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$MAX_FILEDESCRIPTORS" ]; then
|
|
||||||
[ "${VERBOSE:-}" != "yes" ] || log_action_begin_msg "Raising maximum number of filedescriptors (ulimit -n) for tor to $MAX_FILEDESCRIPTORS"
|
|
||||||
if ulimit -n "$MAX_FILEDESCRIPTORS" ; then
|
|
||||||
[ "${VERBOSE:-}" != "yes" ] || log_action_end_msg 0
|
|
||||||
else
|
|
||||||
[ "${VERBOSE:-}" != "yes" ] || log_action_end_msg 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
check_torpiddir
|
|
||||||
check_torlogdir
|
|
||||||
check_config
|
|
||||||
|
|
||||||
log_action_begin_msg "Starting $DESC"
|
|
||||||
|
|
||||||
if start-stop-daemon --stop --signal 0 --quiet --pidfile $TORPID --exec $DAEMON; then
|
|
||||||
log_action_end_msg 0 "already running"
|
|
||||||
else
|
|
||||||
if [ "$USE_AA_EXEC" = "yes" ] &&
|
|
||||||
[ -x /usr/sbin/aa-status ] && \
|
|
||||||
[ -x /usr/sbin/aa-exec ] && \
|
|
||||||
[ -e /etc/apparmor.d/system_tor ] && \
|
|
||||||
/usr/sbin/aa-status --enabled ; then
|
|
||||||
AA_EXEC="--startas /usr/sbin/aa-exec"
|
|
||||||
AA_EXEC_ARGS="--profile=system_tor -- $DAEMON"
|
|
||||||
else
|
|
||||||
AA_EXEC=""
|
|
||||||
AA_EXEC_ARGS=""
|
|
||||||
fi
|
|
||||||
if start-stop-daemon --start --quiet \
|
|
||||||
--pidfile $TORPID \
|
|
||||||
$NICE \
|
|
||||||
$AA_EXEC \
|
|
||||||
--exec $DAEMON -- $AA_EXEC_ARGS $DEFAULT_ARGS $ARGS
|
|
||||||
then
|
|
||||||
log_action_end_msg 0
|
|
||||||
else
|
|
||||||
log_action_end_msg 1
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
log_action_begin_msg "Stopping $DESC"
|
|
||||||
pid=`cat $TORPID 2>/dev/null` || true
|
|
||||||
|
|
||||||
if test ! -f $TORPID -o -z "$pid"; then
|
|
||||||
log_action_end_msg 0 "not running - there is no $TORPID"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if start-stop-daemon --stop --signal INT --quiet --pidfile $TORPID --exec $DAEMON; then
|
|
||||||
wait_for_deaddaemon $pid
|
|
||||||
elif kill -0 $pid 2>/dev/null; then
|
|
||||||
log_action_end_msg 1 "Is $pid not $NAME? Is $DAEMON a different binary now?"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
log_action_end_msg 1 "$DAEMON died: process $pid not running; or permission denied"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
reload|force-reload)
|
|
||||||
check_config
|
|
||||||
|
|
||||||
log_action_begin_msg "Reloading $DESC configuration"
|
|
||||||
pid=`cat $TORPID 2>/dev/null` || true
|
|
||||||
|
|
||||||
if test ! -f $TORPID -o -z "$pid"; then
|
|
||||||
log_action_end_msg 1 "not running - there is no $TORPID"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if start-stop-daemon --stop --signal 1 --quiet --pidfile $TORPID --exec $DAEMON
|
|
||||||
then
|
|
||||||
log_action_end_msg 0
|
|
||||||
elif kill -0 $pid 2>/dev/null; then
|
|
||||||
log_action_end_msg 1 "Is $pid not $NAME? Is $DAEMON a different binary now?"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
log_action_end_msg 1 "$DAEMON died: process $pid not running; or permission denied"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
check_config
|
|
||||||
|
|
||||||
$0 stop
|
|
||||||
sleep 1
|
|
||||||
$0 start
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
if test ! -r $(dirname $TORPID); then
|
|
||||||
log_failure_msg "cannot read PID file $TORPID"
|
|
||||||
exit 4
|
|
||||||
fi
|
|
||||||
pid=`cat $TORPID 2>/dev/null` || true
|
|
||||||
if test ! -f $TORPID -o -z "$pid"; then
|
|
||||||
log_failure_msg "$NAME is not running"
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if ps "$pid" >/dev/null 2>&1; then
|
|
||||||
log_success_msg "$NAME is running"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
log_failure_msg "$NAME is not running"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
log_action_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
Loading…
Reference in new issue