From 23aa2e7b4afafd702767b8ef38467aeda0f7fdaf Mon Sep 17 00:00:00 2001 From: Rob White Date: Wed, 2 May 2018 19:42:19 +0100 Subject: [PATCH] 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 --- nodogsplash2/Makefile | 6 +++++ nodogsplash2/files/nodogsplash.config | 4 ++++ nodogsplash2/files/nodogsplash.init | 34 ++++++++++++++++++++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) 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 -- 2.30.2