#!/bin/sh -e . $IPKG_INSTROOT/etc/functions.sh . /etc/splash.sh x=0 current_time=$(date +%s) splash_check() { config_get mac "$1" mac config_get time "$1" time let time_check=$time+$timeout if [ $time_check -gt $current_time ]; then # user is splashed iptables -t nat -I $chain -m mac --mac-source $mac -j ACCEPT else # user is no longer splashed / must click again uci delete splash_users.@user[$x] fi let x=$x+1 } # check for current inetable state, allowing a command line override lockSplash state=${1:-$(fsm get inetable)} if [ "$state" == "queen" ]; then # functional gateway: copy splash db to a new iptables chain and # replace the old chain with the new one; this ensures that a user # stays splashed during the runtime of this script chain_id=$(($chain_id + 1)) chain=$chain_prefix$chain_id echo $chain_id > $chain_id_file iptables -t nat -N $chain config_load splash_users config_foreach splash_check user iptables -t nat -I prerouting_inet_splashed -j $chain while iptables -t nat -D prerouting_inet_splashed 2 &>/dev/null; do :; done else # no working gw -> remove reference to iptable copy of splash db iptables -t nat -F prerouting_inet_splashed fi # remove old splash_db chains for i in $(iptables -t nat -L | grep ^Chain | grep '0 references' \ | cut -f2 -d' ' | grep ^splash_db); do iptables -t nat -F $i iptables -t nat -X $i done