wifidog-ng: Update init script
authorJeffery To <redacted>
Mon, 4 Feb 2019 14:06:26 +0000 (22:06 +0800)
committerJeffery To <redacted>
Fri, 8 Feb 2019 09:00:54 +0000 (17:00 +0800)
This replaces the use of uci_validate_section() with
uci_load_validate(), which removes the need to declare local variables
for every config option.

This also adds a service_triggers() function and updates the timeout
value to the new max timeout in ipset 7.0.

Signed-off-by: Jeffery To <redacted>
net/wifidog-ng/Makefile
net/wifidog-ng/files/wifidog-ng.init

index ecaf540445daaca0a51c2261fb59fb8d59c13cea..3909e2a13c9a766c88712f3f4bd7d340878ddfb0 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wifidog-ng
 PKG_VERSION:=2.0.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)
 
index ae5d4086be53ccebe19f146b0309331772b7c6cb..d88acb5eafc51a0166d02478f86addc5db8ed92c 100644 (file)
@@ -5,26 +5,27 @@ START=95
 
 BIN=/usr/bin/wifidog-ng
 
-dhcp_host_white=1
+global_dhcp_host_white=1
 
-start_wifidog() {
-       local cfg="$1"
-       local enabled interface
-
-       uci_validate_section wifidog-ng gateway "${1}" \
+validate_gateway_section() {
+       uci_load_validate wifidog-ng gateway "$1" "$2" \
                'enabled:bool:0' \
                'interface:uci("network", "@interface"):lan' \
                'dhcp_host_white:bool:1'
+}
 
-       [ $? -ne 0 ] && {
+start_wifidog() {
+       [ "$2" = 0 ] || {
                echo "validation gateway failed" >&2
                exit 1
        }
 
-       [ $enabled -eq 1 ] || exit 0
+       [ $enabled = 1 ] || exit 0
+
+       [ $dhcp_host_white = 1 ] || global_dhcp_host_white=0
 
-       # timeout = 49 days
-       ipset -! create wifidog-ng-mac hash:mac timeout 4294967
+       # timeout = 24.855 days
+       ipset -! create wifidog-ng-mac hash:mac timeout 2147483
        ipset -! create wifidog-ng-ip hash:ip
 
        modprobe wifidog-ng
@@ -36,28 +37,31 @@ start_wifidog() {
        procd_close_instance
 }
 
+validate_server_section() {
+       uci_load_validate wifidog-ng server "$1" "$2" \
+               'host:host'
+}
+
 parse_server() {
-       local cfg="$1"
-       local host
+       [ "$2" = 0 ] || {
+               echo "validation server failed" >&2
+               exit 1
+       }
 
-       config_get host $cfg host
-       validate_data ip4addr "$host" 2> /dev/null
-       if [ $? -eq 0 ];
-       then
+       if validate_data ip4addr "$host" 2> /dev/null; then
                ipset add wifidog-ng-ip $host
        else
                echo "ipset=/$host/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
        fi
 }
 
-parse_validated_user() {
-       local cfg="$1"
-       local mac ip
-
-       uci_validate_section wifidog-ng validated_user "${1}" \
+validate_validated_user_section() {
+       uci_load_validate wifidog-ng validated_user "$1" "$2" \
                'mac:macaddr'
+}
 
-       [ $? -ne 0 ] && {
+parse_validated_user() {
+       [ "$2" = 0 ] || {
                echo "validation validated_user failed" >&2
                exit 1
        }
@@ -65,14 +69,13 @@ parse_validated_user() {
        [ -n "$mac" ] && ipset add wifidog-ng-mac $mac
 }
 
-parse_validated_domain() {
-       local cfg="$1"
-       local domain
-
-       uci_validate_section wifidog-ng validated_domain "${1}" \
+validate_validated_domain_section() {
+       uci_load_validate wifidog-ng validated_domain "$1" "$2" \
                'domain:host'
+}
 
-       [ $? -ne 0 ] && {
+parse_validated_domain() {
+       [ "$2" = 0 ] || {
                echo "validation validated_domain failed" >&2
                exit 1
        }
@@ -80,14 +83,13 @@ parse_validated_domain() {
        [ -n "$domain" ] && echo "ipset=/$domain/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
 }
 
-parse_dhcp_host() {
-       local cfg="$1"
-       local mac ip
-
-       uci_validate_section dhcp host "${1}" \
+validate_dhcp_host_section() {
+       uci_load_validate dhcp host "$1" "$2" \
                'mac:macaddr'
+}
 
-       [ $? -ne 0 ] && {
+parse_dhcp_host() {
+       [ "$2" = 0 ] || {
                echo "validation validated dhcp host failed" >&2
                exit 1
        }
@@ -97,17 +99,17 @@ parse_dhcp_host() {
 
 start_service() {
        config_load wifidog-ng
-       config_foreach start_wifidog gateway
+       config_foreach validate_gateway_section gateway start_wifidog
 
        echo -n > /tmp/dnsmasq.d/wifidog-ng
 
-       config_foreach parse_server server
-       config_foreach parse_validated_user validated_user
-       config_foreach parse_validated_domain validated_domain
+       config_foreach validate_server_section server parse_server
+       config_foreach validate_validated_user_section validated_user parse_validated_user
+       config_foreach validate_validated_domain_section validated_domain parse_validated_domain
 
-       [ $dhcp_host_white -eq 1 ] && {
+       [ $global_dhcp_host_white = 1 ] && {
                config_load dhcp
-               config_foreach parse_dhcp_host host
+               config_foreach validate_dhcp_host_section host parse_dhcp_host
        }
 
        /etc/init.d/dnsmasq restart &
@@ -119,3 +121,15 @@ stop_service() {
        ipset destroy wifidog-ng-mac
        ipset destroy wifidog-ng-ip
 }
+
+service_triggers() {
+       procd_add_reload_trigger "wifidog-ng"
+
+       procd_open_validate
+       validate_gateway_section
+       validate_server_section
+       validate_validated_user_section
+       validate_validated_domain_section
+       validate_dhcp_host_section
+       procd_close_validate
+}
git clone https://git.99rst.org/PROJECT