#!/bin/sh /etc/rc.common USE_PROCD=1 START=95 BIN=/usr/bin/wifidog-ng global_dhcp_host_white=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' } start_wifidog() { [ "$2" = 0 ] || { echo "validation gateway failed" >&2 exit 1 } [ $enabled = 1 ] || exit 0 [ $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 echo "enabled=1" > /proc/wifidog-ng/config procd_open_instance procd_set_param command $BIN procd_set_param respawn procd_close_instance } validate_server_section() { uci_load_validate wifidog-ng server "$1" "$2" \ 'host:host' } 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 } validate_validated_user_section() { uci_load_validate wifidog-ng validated_user "$1" "$2" \ 'mac:macaddr' } parse_validated_user() { [ "$2" = 0 ] || { echo "validation validated_user failed" >&2 exit 1 } [ -n "$mac" ] && ipset add wifidog-ng-mac $mac } validate_validated_domain_section() { uci_load_validate wifidog-ng validated_domain "$1" "$2" \ 'domain:host' } parse_validated_domain() { [ "$2" = 0 ] || { echo "validation validated_domain failed" >&2 exit 1 } [ -n "$domain" ] && echo "ipset=/$domain/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng } validate_dhcp_host_section() { uci_load_validate dhcp host "$1" "$2" \ 'mac:macaddr' } parse_dhcp_host() { [ "$2" = 0 ] || { echo "validation validated dhcp host failed" >&2 exit 1 } [ -n "$mac" ] && ipset add wifidog-ng-mac $mac } start_service() { config_load wifidog-ng config_foreach validate_gateway_section gateway start_wifidog echo -n > /tmp/dnsmasq.d/wifidog-ng 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 [ $global_dhcp_host_white = 1 ] && { config_load dhcp config_foreach validate_dhcp_host_section host parse_dhcp_host } /etc/init.d/dnsmasq restart & } stop_service() { rmmod wifidog-ng 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 }