#!/usr/bin/env bash

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

SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"

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

## Режим киоска XFCE4, запретить изменять параметры пользователям и группам
## XFCE4_KIOSK[<channel>:<property>]=<user_groups>
##   <user_groups>      # Пользователи и группы, варианты значений:
##     =ALL             # Разрешить всем 
##     =NONE            # Запретить 
##     =@whell,@users   # Разрешить группам
##     =superadmin,user-1 # Разрешить пользователям 
##     =@wheel,user-1   # Разрешить группе и пользователю 
#XFCE4_KIOSK[xfce4-panel:CustomizePanel]=@wheel

    KIOSKRC="/etc/xdg/xfce4/kiosk/kioskrc"
    if [[ ${#XFCE4_KIOSK[@]} -ne 0 ]]; then
	[[ -d ${KIOSKRC%/*} ]] || install -dm0755 -o root -g root "${KIOSKRC%/*}"
	true > ${KIOSKRC}
	for SELECT in "${!XFCE4_KIOSK[@]}"; do
	    SECTION=$(cut -d: -f1 <<< ${SELECT})
	    PROPERTY=$(cut -d: -f2 <<< ${SELECT})
	    VALUE=${XFCE4_KIOSK[${SELECT}]}
	    [[ ${VALUE,,} == "none" ]] && VALUE=NONE
	    [[ ${VALUE,,} == "all" ]] && VALUE=ALL
	    [[ ${VALUE} =~ '@' ]] && VALUE=$(tr '@' '%' <<< ${VALUE})
	    grep -q "${SECTION}" ${KIOSKRC} || echo -e "[${SECTION}]\n" >> ${KIOSKRC}
	    sed "/^${PROPERTY}.*/d" -i ${KIOSKRC}
	    sed "/\[${SECTION}\]/a ${PROPERTY}=${VALUE}" -i ${KIOSKRC}
	done
    fi
    
## Назначить настройки киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_LOCKED=disable
##   disable		# Снять все ограничения
## XFCE4_KIOSK_USER_LOCKED=<user_groups>
##   <user_groups>      # Пользователи и группы, варианты значений:
##     =*               # Все пользователи
##     =@whell;@users   # Указанные группы
##     =superadmin;user-1 # Указанным пользователям 
##     =@wheel;user-1   # Указанным группам и пользователям
## XFCE4_KIOSK_USER_LOCKED="*"

## Назначить исключения настроек киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_UNLOCKED=disable
##   disable		# Снять все ограничения
## XFCE4_KIOSK_USER_UNLOCKED=<user_groups>
##   <user_groups>      # Пользователи и группы, варианты значений:
##     =*               # Все пользователи
##     =@whell;@users   # Указанные группы
##     =superadmin;user-1 # Указанным пользователям 
##     =@wheel;user-1   # Указанным группам и пользователям
## XFCE4_KIOSK_USER_UNLOCKED="root,@wheel"

    PATH_XDG_XFCE_CHANNEL="/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/"
    PARAM_LOCKED=
    PARAM_UNLOCKED=
    if [[ -n ${XFCE4_KIOSK_USER_LOCKED} || -n ${XFCE4_KIOSK_USER_UNLOCKED} ]]; then
    	if [[ ${XFCE4_KIOSK_USER_LOCKED} == "disable" || ${XFCE4_KIOSK_USER_UNLOCKED} == "disable" ]]; then
	    for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
		sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\">/" -i ${FILE_CHANNEL_XML}
	    done
	else
	    [[ -n ${XFCE4_KIOSK_USER_LOCKED} ]] && PARAM_LOCKED=" locked=\"${XFCE4_KIOSK_USER_LOCKED//,/;}\""
	    [[ -n ${XFCE4_KIOSK_USER_UNLOCKED} ]] && PARAM_UNLOCKED=" unlocked=\"${XFCE4_KIOSK_USER_UNLOCKED//,/;}\""
	    for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
		sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\"${PARAM_LOCKED}${PARAM_UNLOCKED}>/" -i ${FILE_CHANNEL_XML}    
	    done
	fi
    fi

    