diff --git a/net/wifidog-ng/Makefile b/net/wifidog-ng/Makefile index ecaf540445..3909e2a13c 100644 --- a/net/wifidog-ng/Makefile +++ b/net/wifidog-ng/Makefile @@ -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) diff --git a/net/wifidog-ng/files/wifidog-ng.init b/net/wifidog-ng/files/wifidog-ng.init index ae5d4086be..d88acb5eaf 100644 --- a/net/wifidog-ng/files/wifidog-ng.init +++ b/net/wifidog-ng/files/wifidog-ng.init @@ -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 - # timeout = 49 days - ipset -! create wifidog-ng-mac hash:mac timeout 4294967 + [ $dhcp_host_white = 1 ] || global_dhcp_host_white=0 + + # 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 } -parse_server() { - local cfg="$1" - local host +validate_server_section() { + uci_load_validate wifidog-ng server "$1" "$2" \ + 'host:host' +} - config_get host $cfg host - validate_data ip4addr "$host" 2> /dev/null - if [ $? -eq 0 ]; - then +parse_server() { + [ "$2" = 0 ] || { + echo "validation server failed" >&2 + exit 1 + } + + 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 +}