/etc/init.d/fastd is in fastd 17-4build1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | #!/bin/sh -e
### BEGIN INIT INFO
# Provides: fastd
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Should-Start: network-manager
# Should-Stop: network-manager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Fast and Secure Tunneling Daemon
# Description: This script will start fastd tunnels as specified
# in /etc/default/fastd and /etc/fastd/*/fastd.conf
### END INIT INFO
# Derived from the OpenVPN init script
# Original version by Robert Leslie
# <rob@mars.org>, edited by iwj and cs
# Modified for openvpn by Alberto Gonzalez Iniesta <agi@inittab.org>
# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>
# Modified for fastd by Nils Schneider <nils@nilsschneider.net>
. /lib/lsb/init-functions
test $DEBIAN_SCRIPT_DEBUG && set -v -x
DAEMON=/usr/bin/fastd
DESC="Fast and Secure Tunneling Daemon"
CONFIG_DIR=/etc/fastd
test -x $DAEMON || exit 0
test -d $CONFIG_DIR || exit 0
# Source defaults file; edit that file to configure this script.
AUTOSTART="all"
if test -e /etc/default/fastd ; then
. /etc/default/fastd
fi
start_vpn () {
STATUS=0
start-stop-daemon --start --quiet --oknodo \
--pidfile /var/run/fastd.$NAME.pid \
--make-pidfile \
--background \
--exec $DAEMON -- \
--syslog-level info \
--config $CONFIG_DIR/$NAME/fastd.conf \
|| STATUS=1
}
stop_vpn () {
kill `cat $PIDFILE` || true
rm -f $PIDFILE
log_end_msg 0
}
case "$1" in
start)
log_action_begin_msg "Starting $DESC"
# autostart fastds
if test -z "$2" ; then
# check if automatic startup is disabled by AUTOSTART=none
if test "x$AUTOSTART" = "xnone" -o -z "$AUTOSTART" ; then
log_warning_msg " Autostart disabled, no fastd will be started."
exit 0
fi
if test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then
# all fastds shall be started automatically
for CONFIG in `cd $CONFIG_DIR; ls */fastd.conf 2> /dev/null`; do
NAME=${CONFIG%%/fastd.conf}
log_daemon_msg " Autostarting fastd '$NAME'"
start_vpn
done
else
# start only specified fastds
for NAME in $AUTOSTART ; do
if test -e $CONFIG_DIR/$NAME/fastd.conf ; then
log_daemon_msg " Autostarting fastd '$NAME'"
start_vpn
else
log_failure_msg " Autostarting fastd '$NAME': missing $CONFIG_DIR/$NAME/fastd.conf file !"
STATUS=1
fi
done
fi
#start fastds from command line
else
while shift ; do
[ -z "$1" ] && break
NAME=$1
if test -e $CONFIG_DIR/$NAME/fastd.conf ; then
log_daemon_msg " Starting fastd '$NAME'"
start_vpn
else
log_failure_msg " Starting fastd '$NAME': missing $CONFIG_DIR/$NAME/fastd.conf file !"
STATUS=1
fi
done
fi
log_end_msg ${STATUS:-0}
;;
stop)
log_action_begin_msg "Stopping $DESC"
if test -z "$2" ; then
PIDFILE=
for PIDFILE in `ls /var/run/fastd.*.pid 2> /dev/null`; do
NAME=`echo $PIDFILE | cut -c16-`
NAME=${NAME%%.pid}
log_daemon_msg " Stopping fastd '$NAME'"
stop_vpn
done
if test -z "$PIDFILE" ; then
log_warning_msg " No fastd is running."
fi
else
while shift ; do
[ -z "$1" ] && break
if test -e /var/run/fastd.$1.pid ; then
log_daemon_msg " Stopping fastd '$1'"
PIDFILE=`ls /var/run/fastd.$1.pid 2> /dev/null`
NAME=`echo $PIDFILE | cut -c16-`
NAME=${NAME%%.pid}
stop_vpn
else
log_failure_msg " Stopping fastd '$1': No such fastd is running."
fi
done
fi
;;
restart)
shift
$0 stop ${@}
sleep 1
$0 start ${@}
;;
status)
GLOBAL_STATUS=0
if test -z "$2" ; then
# We want status for all defined fastd.
# Returns success if all autostarted fastds are defined and running
if test "x$AUTOSTART" = "xnone" ; then
# Consider it a failure if AUTOSTART=none
log_warning_msg "No fastds autostarted"
GLOBAL_STATUS=1
else
if ! test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then
# Consider it a failure if one of the autostarted fastd is not defined
for VPN in $AUTOSTART ; do
if ! test -f $CONFIG_DIR/$VPN/fastd.conf ; then
log_warning_msg "fastd '$VPN' is in AUTOSTART but is not defined"
GLOBAL_STATUS=1
fi
done
fi
fi
for CONFIG in `cd $CONFIG_DIR; ls */fastd.conf 2> /dev/null`; do
NAME=${CONFIG%%/fastd.conf}
# Is it an autostarted fastd?
if test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then
AUTOVPN=1
else
if test "x$AUTOSTART" = "xnone" ; then
AUTOVPN=0
else
AUTOVPN=0
for VPN in $AUTOSTART; do
if test "x$VPN" = "x$NAME" ; then
AUTOVPN=1
fi
done
fi
fi
if test "x$AUTOVPN" = "x1" ; then
# If it is autostarted, then it contributes to global status
status_of_proc -p /var/run/fastd.${NAME}.pid fastd "fastd '${NAME}'" || GLOBAL_STATUS=1
else
status_of_proc -p /var/run/fastd.${NAME}.pid fastd "fastd '${NAME}' (non autostarted)" || true
fi
done
else
# We just want status for specified fastd.
# Returns success if all specified fastds are defined and running
while shift ; do
[ -z "$1" ] && break
NAME=$1
if test -e $CONFIG_DIR/$NAME.conf ; then
# Config exists
status_of_proc -p /var/run/fastd.${NAME}.pid fastd "fastd '${NAME}'" || GLOBAL_STATUS=1
else
# Config does not exist
log_warning_msg "fastd '$NAME': missing $CONFIG_DIR/$NAME.conf file !"
GLOBAL_STATUS=1
fi
done
fi
exit $GLOBAL_STATUS
;;
*)
echo "Usage: $0 {start|stop|reload|restart|force-reload|cond-restart|soft-restart|status}" >&2
exit 1
;;
esac
exit 0
# vim:set ai sts=2 sw=2 tw=0:
|