summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob White <rob@blue-wave.net>2018-05-02 19:42:19 +0100
committerMoritz Warning <moritzwarning@web.de>2018-05-02 20:42:19 +0200
commit23aa2e7b4afafd702767b8ef38467aeda0f7fdaf (patch)
treecce2d93cfeb7f34c3c3d4de65e6fca5848dd5130
parentfd8f9285e792fae4cf881a114c4c47b13bb06580 (diff)
nodogsplash2: Add NDS Restart Hook for Firewall (#369)
NodogSplash iptables entries are overwritten if the OpenWrt Firewall is restarted. This change adds a restart hook to firewall.user to restart NoDogSplash if firewall is restarted. Author-name: Rob White Signed-off-by: Rob White rob@blue-wave.net
-rw-r--r--nodogsplash2/Makefile6
-rw-r--r--nodogsplash2/files/nodogsplash.config4
-rwxr-xr-xnodogsplash2/files/nodogsplash.init34
3 files changed, 43 insertions, 1 deletions
diff --git a/nodogsplash2/Makefile b/nodogsplash2/Makefile
index badbe1e..f17e5da 100644
--- a/nodogsplash2/Makefile
+++ b/nodogsplash2/Makefile
@@ -54,6 +54,12 @@ define Package/nodogsplash2/install
$(CP) $(PKG_BUILD_DIR)/resources/splash.jpg $(1)/etc/nodogsplash/htdocs/images/
endef
+define Package/nodogsplash2/postrm
+#!/bin/sh
+uci delete firewall.nodogsplash2
+uci commit firewall
+endef
+
define Package/nodogsplash2/conffiles
/etc/nodogsplash/nodogsplash.conf
endef
diff --git a/nodogsplash2/files/nodogsplash.config b/nodogsplash2/files/nodogsplash.config
index 37269bd..34afe89 100644
--- a/nodogsplash2/files/nodogsplash.config
+++ b/nodogsplash2/files/nodogsplash.config
@@ -5,6 +5,10 @@
config nodogsplash
# Set to 0 to disable nodogsplash
option enabled 1
+
+ # Set to 0 to disable hook that makes Firewall restart nodogsplash when Firewall restarts
+ # This hook is needed as a restart of Firewall overwrites nodogsplash iptables entries
+ option fwhook_enabled '1'
# Serve the file splash.html from this directory
option webroot '/etc/nodogsplash/htdocs'
diff --git a/nodogsplash2/files/nodogsplash.init b/nodogsplash2/files/nodogsplash.init
index 32dc1eb..87229c9 100755
--- a/nodogsplash2/files/nodogsplash.init
+++ b/nodogsplash2/files/nodogsplash.init
@@ -248,10 +248,42 @@ create_instance() {
procd_close_instance
}
+depends() {
+ if [ "$1" = "iptables" ] ; then
+ if [ $(uci get nodogsplash.@nodogsplash[0].fwhook_enabled) = "1" ] ; then
+ if $WD_DIR/ndsctl status > /dev/null; then
+ echo " * Restarting NodogSplash"
+ /etc/init.d/nodogsplash restart
+ fi
+ else
+ echo " * NodogSplash fwhook is disabled"
+ fi
+ fi
+}
+
start_service() {
include /lib/functions
-
mkdir -p /tmp/etc/
+
+ if [ $(uci get nodogsplash.@nodogsplash[0].fwhook_enabled) = "1" ] ; then
+ if ! uci get firewall.nodogsplash2.path &> /dev/null ; then
+ if [ -f '/tmp/etc/ndshook.include' ] ; then
+ rm /tmp/etc/ndshook.include
+ fi
+ uci delete firewall.nodogsplash2 2> /dev/null
+ uci set firewall.nodogsplash2=include
+ uci set firewall.nodogsplash2.type=script
+ uci set firewall.nodogsplash2.path='/tmp/etc/ndshook.include'
+ uci commit firewall
+ /etc/init.d/firewall restart 2>&1 | logger
+ fi
+
+ if [ ! -f '/tmp/etc/ndshook.include' ] ; then
+ printf "if [ -f '/etc/init.d/nodogsplash' ] ; then /etc/init.d/nodogsplash depends iptables ; fi\n" > /tmp/etc/ndshook.include
+ chmod +x /tmp/etc/ndshook.include
+ fi
+ fi
+
config_load nodogsplash
config_foreach create_instance nodogsplash