| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | #! /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 INFOset -ePATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/torNAME=torDESC="tor daemon"TORPIDDIR=/var/run/torTORPID=$TORPIDDIR/tor.pidDEFAULTSFILE=/etc/default/$NAMEWAITFORDAEMON=60ARGS=""MAX_FILEDESCRIPTORS=8192NICE=""test -x $DAEMON || exit 0# Include tor defaults if availableif [ -f $DEFAULTSFILE ] ; then	. $DEFAULTSFILEfiwait_for_deaddaemon () {	pid=$1	sleep 1	if test -n "$pid"	then		if kill -0 $pid 2>/dev/null		then			echo -n "."			cnt=0			while kill -0 $pid 2>/dev/null			do				cnt=`expr $cnt + 1`				if [ $cnt -gt $WAITFORDAEMON ]				then					echo " FAILED."					return 1				fi				sleep 1				echo -n "."			done		fi	fi	return 0}check_torpiddir () {	if test ! -d $TORPIDDIR; then		echo "There is no $TORPIDDIR directory.  Creating one for you."		mkdir -m 02700 "$TORPIDDIR"		chown debian-tor:debian-tor "$TORPIDDIR"	fi	if test ! -x $TORPIDDIR; then		echo "Cannot access $TORPIDDIR directory, are you root?" >&2		exit 1	fi}case "$1" in  start)	if [ "$RUN_DAEMON" != "yes" ]; then		echo "Not starting $DESC (Disabled in $DEFAULTSFILE)."		exit 0	fi	if [ -n "$MAX_FILEDESCRIPTORS" ]; then		echo -n "Raising maximum number of filedescriptors (ulimit -n) to $MAX_FILEDESCRIPTORS"		if ulimit -n "$MAX_FILEDESCRIPTORS" ; then			echo "."		else			echo ": FAILED."		fi	fi	check_torpiddir	echo "Starting $DESC: $NAME..."	if ! su -s /bin/sh -c "$DAEMON --verify-config" debian-tor > /dev/null; then		echo "ABORTED: Tor configuration invalid:" >&2		su -s /bin/sh -c "$DAEMON --verify-config" debian-tor >&2		exit 1	fi	start-stop-daemon --start --quiet --oknodo \		--chuid debian-tor:debian-tor \		--pidfile $TORPID \		$NICE \		--exec $DAEMON -- $ARGS	echo "done."	;;  stop)	echo -n "Stopping $DESC: "	pid=`cat $TORPID 2>/dev/null` || true	if test ! -f $TORPID -o -z "$pid"; then		echo "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		echo "$NAME."	elif kill -0 $pid 2>/dev/null	then		echo "FAILED (Is $pid not $NAME?  Is $DAEMON a different binary now?)."	else		echo "FAILED ($DAEMON died: process $pid not running; or permission denied)."	fi	;;  reload|force-reload)	echo -n "Reloading $DESC configuration: "	pid=`cat $TORPID 2>/dev/null` || true	if test ! -f $TORPID -o -z "$pid"; then		echo "not running (there is no $TORPID)."		exit 0	fi	if ! su -s /bin/sh -c "$DAEMON --verify-config" debian-tor > /dev/null; then		echo "ABORTED: Tor configuration invalid:" >&2		su -s /bin/sh -c "$DAEMON --verify-config" debian-tor >&2		exit 1	fi	if start-stop-daemon --stop --signal 1 --quiet --pidfile $TORPID --exec $DAEMON	then		echo "$NAME."	elif kill -0 $pid 2>/dev/null	then		echo "FAILED (Is $pid not $NAME?  Is $DAEMON a different binary now?)."	else		echo "FAILED ($DAEMON died: process $pid not running; or permission denied)."	fi	;;  restart)	if ! su -s /bin/sh -c "$DAEMON --verify-config" debian-tor > /dev/null; then		echo "Restarting Tor ABORTED: Tor configuration invalid:" >&2		su -s /bin/sh -c "$DAEMON --verify-config" debian-tor >&2		exit 1	fi	$0 stop	sleep 1	$0 start	;;  *)	echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2	exit 1	;;esacexit 0
 |