|
@@ -5,55 +5,100 @@
|
|
|
# Required-Stop: $remote_fs $syslog
|
|
|
# Default-Start: 2 3 4 5
|
|
|
# Default-Stop: 0 1 6
|
|
|
+# Short-Description: pptpd
|
|
|
+# Description: PoPToP Point to Point Tunneling Server
|
|
|
### END INIT INFO
|
|
|
-# Copyright Rene Mayrhofer, Gibraltar, 1999
|
|
|
-# This script is distibuted under the GPL
|
|
|
|
|
|
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
|
|
-DAEMON=/usr/sbin/pptpd
|
|
|
-PIDFILE=/var/run/pptpd.pid
|
|
|
-FLAGS="defaults 50"
|
|
|
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
|
+DESC='PoPToP Point to Point Tunneling Server'
|
|
|
+NAME=pptpd
|
|
|
+DAEMON="/usr/sbin/$NAME"
|
|
|
+DAEMON_OPTS=''
|
|
|
+PIDFILE='/var/run/pptpd.pid'
|
|
|
+SCRIPTNAME="/etc/init.d/$NAME"
|
|
|
+
|
|
|
+[ -x "$DAEMON" ] || exit 0
|
|
|
+
|
|
|
+[ -r "/etc/default/$NAME" ] && . "/etc/default/$NAME"
|
|
|
+
|
|
|
+. /lib/init/vars.sh
|
|
|
+
|
|
|
+. /lib/lsb/init-functions
|
|
|
+
|
|
|
+do_start()
|
|
|
+{
|
|
|
+ start-stop-daemon --start --quiet \
|
|
|
+ --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null \
|
|
|
+ || return 1
|
|
|
+ start-stop-daemon --start --quiet \
|
|
|
+ --pidfile "$PIDFILE" --exec "$DAEMON" -- $DAEMON_OPTS \
|
|
|
+ || return 2
|
|
|
+}
|
|
|
+
|
|
|
+do_stop()
|
|
|
+{
|
|
|
+ [ -f "$PIDFILE" ] || return 1
|
|
|
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
|
|
|
+ --pidfile "$PIDFILE" --name "$NAME"
|
|
|
+ RETVAL="$?"
|
|
|
+ [ "$RETVAL" = 2 ] && return 2
|
|
|
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 \
|
|
|
+ --exec "$DAEMON"
|
|
|
+ [ "$?" = 2 ] && return 2
|
|
|
+ # Many daemons don't delete their pidfiles when they exit.
|
|
|
+ rm -f "$PIDFILE"
|
|
|
+ return "$RETVAL"
|
|
|
+}
|
|
|
|
|
|
case "$1" in
|
|
|
- start)
|
|
|
- echo -n "Starting PPTP Daemon: "
|
|
|
- start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
|
|
|
- -- < /dev/null > /dev/null
|
|
|
- echo "pptpd."
|
|
|
+start)
|
|
|
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
|
|
|
+ do_start
|
|
|
+ case "$?" in
|
|
|
+ 0|1)
|
|
|
+ [ "$VERBOSE" != 'no' ] && log_end_msg 0
|
|
|
+ ;;
|
|
|
+ 2)
|
|
|
+ [ "$VERBOSE" != 'no' ] && log_end_msg 1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ ;;
|
|
|
+stop)
|
|
|
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
|
|
|
+ do_stop
|
|
|
+ case "$?" in
|
|
|
+ 0|1)
|
|
|
+ [ "$VERBOSE" != 'no' ] && log_end_msg 0
|
|
|
+ ;;
|
|
|
+ 2)
|
|
|
+ [ "$VERBOSE" != 'no' ] && log_end_msg 1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
;;
|
|
|
- stop)
|
|
|
- echo -n "Stopping PPTP: "
|
|
|
- start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
|
|
|
- echo "pptpd."
|
|
|
+status)
|
|
|
+ status_of_proc "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $?
|
|
|
;;
|
|
|
- force-reload|restart)
|
|
|
- echo "Restarting PPTP: "
|
|
|
- sh $0 stop
|
|
|
- sh $0 start
|
|
|
+restart|force-reload)
|
|
|
+ log_daemon_msg "Restarting $DESC" "$NAME"
|
|
|
+ do_stop
|
|
|
+ case "$?" in
|
|
|
+ 0|1)
|
|
|
+ do_start
|
|
|
+ case "$?" in
|
|
|
+ 0) log_end_msg 0 ;;
|
|
|
+ 1) log_end_msg 1 ;; # Old process is still running
|
|
|
+ *) log_end_msg 1 ;; # Failed to start
|
|
|
+ esac
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ # Failed to stop
|
|
|
+ log_end_msg 1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
;;
|
|
|
- status)
|
|
|
- if [ ! -r $PIDFILE ]; then
|
|
|
- # no pid file, process doesn't seem to be running correctly
|
|
|
- exit 3
|
|
|
- fi
|
|
|
- PID=`cat $PIDFILE | sed 's/ //g'`
|
|
|
- EXE=/proc/$PID/exe
|
|
|
- if [ -x "$EXE" ] &&
|
|
|
- [ "`ls -l \"$EXE\" | cut -d'>' -f2,2 | cut -d' ' -f2,2`" = \
|
|
|
- "$DAEMON" ]; then
|
|
|
- # ok, process seems to be running
|
|
|
- exit 0
|
|
|
- elif [ -r $PIDFILE ]; then
|
|
|
- # process not running, but pidfile exists
|
|
|
- exit 1
|
|
|
- else
|
|
|
- # no lock file to check for, so simply return the stopped status
|
|
|
- exit 3
|
|
|
- fi
|
|
|
- ;;
|
|
|
- *)
|
|
|
- echo "Usage: /etc/init.d/pptpd {start|stop|restart|force-reload|status}"
|
|
|
- exit 1
|
|
|
+*)
|
|
|
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
|
|
+ exit 3
|
|
|
;;
|
|
|
esac
|
|
|
|