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
This commit is contained in:
Rob White 2018-05-02 19:42:19 +01:00 committed by Moritz Warning
parent fd8f9285e7
commit 23aa2e7b4a
3 changed files with 43 additions and 1 deletions

View File

@ -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

View File

@ -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'

View File

@ -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