#!/bin/bash
if [ "$1" == 'debug' ]; then set -x; shift; fi
####################################################
# - Blacklist, Master -
# Run this manually after changes 
# or from crontab with a short cycle; e.g. 5 minutes
####################################################
#------------------------
REALPATH=`realpath $0`
WHERE=`dirname $REALPATH`
ME=`basename $REALPATH`
cd $WHERE
. ../system.conf
. ../common.conf
. ../common.bashlib
#------------------------

#
# Fill in local whitelist
#
if [ -f $MASTER_PATH/whitelist ]
then
	for list in whitelist
	do
		LOADFILE=$POOL'/ipset.Loadfile-'$list
		echo "-exist create "list" comment"     > $LOADFILE

		awk -v list=$list -v loadfile="$LOADFILE" ' 
		/^$/            { next }
		/^[ \t]*[#]/    { next }
				{ IP[$1]=$1 }
		END {
			for ( ip in IP ) {
				printf "add %s %s comment whitelisted\n", list, ip > loadfile
			}
		}
		' $MASTER_PATH/$list

		$IPSET flush $list
		$IPSET -quiet -file $LOADFILE restore
	done
	logger	 "$ME[$$] Loaded whitelist from whitelist file ..."
else
	echo 	 "$ME: No whitelist file ..."
fi
