diff options
Diffstat (limited to 'network/ferm/rc.ferm')
-rw-r--r-- | network/ferm/rc.ferm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/network/ferm/rc.ferm b/network/ferm/rc.ferm new file mode 100644 index 0000000000..838a775ca5 --- /dev/null +++ b/network/ferm/rc.ferm @@ -0,0 +1,77 @@ +#!/bin/sh +# +# /etc/rc.d/rc.ferm +# +# To make ferm automatically apply rules at boot, make this +# file executable: chmod 755 /etc/rc.d/rc.ferm + +CONFIG_FILE=/etc/ferm.conf +RUN_FILE=/var/run/ferm.run +FERM=/usr/sbin/ferm + +set -eE + +log_err() +{ + >&2 echo "$1" +} + +check_cfg() +{ + if [ ! -e "$CONFIG_FILE" ] + then + log_err "required config file $CONFIG_FILE missing!" + return 1 + fi +} +service_start() +{ + if [ ! -e "$RUN_FILE" ] + then + "$FERM" "$CONFIG_FILE" + else + log_err "ferm rules seem to have been already been applied ($RUN_FILE present). Aborting" + return 1 + fi + +} + +service_stop() +{ + if [ -e "$RUN_FILE" ] + then + "$FERM" -F "$CONFIG_FILE" + else + log_err "Could not find $RUN_FILE to assess if ferm was service_started. Aborting" + return 1 + fi +} + + +case "$1" in + 'start') + if service_start + then + touch "$RUN_FILE" + else + log_err "Error starting service" + exit 1 + fi + ;; + 'stop') + if service_stop + then + rm -f "$RUN_FILE" + else + log_err "Error stopping service" + exit 1 + fi + ;; + 'restart') + service_stop && service_start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac + |