#!/usr/bin/env bash

ENABLED=yes
[ "$ENABLED" != "yes" ] && exit 0
DEBUGMODE=no

. /usr/lib/ublinux/functions
. /usr/lib/ublinux/os-config
debug_mode "$0" "$@"

SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/kiosk; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null

    rm -f /etc/polkit-1/rules.d/kiosk-*
    if [[ -n ${POLKIT[@]} ]]; then
	for RULES in "${!POLKIT[@]}"; do
	    RULES_GROUP=
	    RULES_FILE="/etc/polkit-1/rules.d/kiosk-$(sed 's/\([A-z0-9]*.[A-z0-9]*.[A-z0-9]*\)\..*/\1/' <<< ${RULES}).rules"	    
	    RULES_RESULT=$(cut -d: -f1 <<< ${POLKIT[${RULES}]})
	    for GROUP in $(cut -d: -f2 <<< ${POLKIT[${RULES}]} | tr ',' '\n'); do
		RULES_GROUP+="&& subject.isInGroup(\"${GROUP}\") "
	    done
	    cat >> ${RULES_FILE} <<EOF
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("${RULES}") == 0 
	&& subject.active == true
	&& subject.local == true	
	${RULES_GROUP}
	) 
    {
            return polkit.Result.${RULES_RESULT^^};
    }
});

EOF
	done
    fi
