summaryrefslogtreecommitdiff
path: root/trunk/tools/pingctl
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/tools/pingctl')
-rwxr-xr-xtrunk/tools/pingctl171
1 files changed, 171 insertions, 0 deletions
diff --git a/trunk/tools/pingctl b/trunk/tools/pingctl
new file mode 100755
index 0000000..286201e
--- /dev/null
+++ b/trunk/tools/pingctl
@@ -0,0 +1,171 @@
+#!/bin/sh
+#
+# $Id$
+#
+# This file is part of Echolot - a Pinger for anonymous remailers.
+#
+# Copyright (c) 2002 admin@arancio.net
+# Copyright (c) 2002, 2003, 2004 Peter Palfrader <peter@palfrader.org>
+#
+# This program is free software. you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+# pingcntl: echolot control + wrapper
+
+set -e
+
+################################################################
+# You perhaps want to change those items
+
+USER=pinger
+VERBOSE=0
+BASEDIR="/home/pinger/echolot"
+PINGD="$BASEDIR/pingd"
+PIDFILE="$BASEDIR/pingd.pid"
+
+# You probably don't want to mess with stuff below this line
+################################################################
+
+CHECKULIMIT=1
+CHECKUID=1
+
+
+wait_for_deaddaemon () {
+ PID=$1
+ sleep 3
+ if test -n "$PID"
+ then
+ if kill -0 $PID 2>/dev/null
+ then
+ echo -n "Waiting for pid $PID ."
+ cnt=0
+ while kill -0 $PID 2>/dev/null
+ do
+ cnt=`expr $cnt + 1`
+ if [ $cnt -gt 30 ]
+ then
+ echo " Failed.. "
+ exit 1;
+ fi
+ sleep 2
+ echo -n "."
+ done
+ rm -f $PIDFILE
+ else
+ rm -f $PIDFILE
+ fi
+ fi
+}
+
+
+# Check for evil ulimits
+if [ "$CHECKULIMIT" -gt "0" ]; then
+ FDs=`ulimit -n`
+ HFDs=`ulimit -H -n`
+ if [ "$FDs" -lt "512" ]; then
+ if [ "$HFDs" -lt "512" ]; then
+ echo "Hardlimit for open File Descriptors is less than 512." >&2
+ echo "Please consider raising it." >&2
+ if [ "$FDs" -lt "$HFDs" ]; then
+ echo "Raising it to $HFDs" >&2
+ ulimit -n $HFDs
+ fi
+ else
+ if [ "$HFDs" -lt "1024" ]; then
+ FDs=$HFDs
+ else
+ FDs=1024
+ fi
+ echo "Softlimit for open File Descriptors is less than 512." >&2
+ echo "Raising it to $FDs" >&2
+ ulimit -n $FDs
+ fi
+ fi
+fi
+
+
+# Check for right User
+SU=""
+if [ "$CHECKUID" -gt "0" ]; then
+ CUID=`id -u`
+ CUIDNAME=`id -nu`
+ if [ "$CUIDNAME" = "$USER" ]; then
+ SU=""
+ elif [ "$CUID" = "0" ]; then
+ SU="su $USER -c"
+ else
+ echo "You are neither $USER nor root. Aborting." >&2
+ exit 1;
+ fi
+fi
+
+# set VERBOSE
+if [ $VERBOSE -gt 0 ]; then
+ VERBOSE="--verbose"
+else
+ VERBOSE=""
+fi
+
+
+case $1 in
+
+start)
+ if [ -f $PIDFILE ] ; then
+ PID=`cat $PIDFILE 2>/dev/null` || true
+ if kill -0 $PID 2>/dev/null
+ then
+ echo "pingd already running."
+ exit 0
+ else
+ echo -n "Removing stale pid file: "
+ rm -f $PIDFILE
+ echo "$PIDFILE."
+ fi
+ fi
+ echo -n "Starting Echolot: pingd"
+ if [ ! -z "$SU" ]; then
+ $SU "$PINGD --detach $VERBOSE start"
+ else
+ $PINGD --detach $VERBOSE start
+ fi
+ echo "."
+ ;;
+
+stop)
+ echo -n "Stopping Echolot: pingd"
+ if [ ! -z "$SU" ]; then
+ $SU "$PINGD stop"
+ else
+ $PINGD stop
+ fi
+ echo "."
+ ;;
+
+reload|force-reload|restart)
+ PID=`cat $PIDFILE 2>/dev/null` || true
+ $0 stop
+ wait_for_deaddaemon $PID
+ $0 start
+ ;;
+*)
+ echo "Usage: $0 (start|stop|reload|force-reload|restart)" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# vim:set ts=2:
+# vim:set shiftwidth=2: