summaryrefslogtreecommitdiffstats
path: root/network/ferm/rc.ferm
diff options
context:
space:
mode:
Diffstat (limited to 'network/ferm/rc.ferm')
-rw-r--r--network/ferm/rc.ferm77
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
+