#!/usr/bin/env bash

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

. /usr/lib/ublinux/functions
. /usr/lib/ublinux/default
debug_mode "$0" "$@"

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

# Проверка файлов на ошибки /etc/passwd /etc/shadow /etc/group /etc/gshadow
exec_check_user_group(){
    local CHECK_MODE=$@
    [[ -z ${CHECK_MODE} ]] && CHECK_MODE="user,group"
    if [[ ${CHECK_MODE} =~ "user" ]]; then
    # Проверка файлов /etc/passwd /etc/shadow
	if [[ -x /usr/bin/pwck ]]; then 
	    # Сортировать файл passwd и shadow
	    /usr/bin/pwck -qs
	    # Вывести  только предупреждение, если файл passwd или shadow повреждён
	    # /usr/bin/pwck -r
	    # Вывести предупреждение и исправить, если файл passwd или shadow повреждён
	    yes | /usr/bin/pwck -q
	fi
    fi
    if [[ ${CHECK_MODE} =~ "group" ]]; then
    # Проверка файлов /etc/group /etc/gshadow
	if [[ -x /usr/bin/grpck ]]; then 
	    # Сортировать файл group и gshadow
	    /usr/bin/grpck -qs
	    # Вывести предупреждение, если файл group или gshadow повреждён
	    # /usr/bin/grpck -r
	    # Вывести предупреждение и исправить, если файл group или gshadow повреждён
	    yes | /usr/bin/grpck -q
	fi
    fi
}

################
##### MAIN #####
################
    
    # Если файл подключен как ресурс с функциями, то выйти
    return 0 2>/dev/null && return 0
    #rm -f "${FILE_ROOT_USERS}"
    if [[ -z $@ ]]; then
        while read -r FUNCTION; do
            $"${FUNCTION##* }"
        done < <(declare -F | grep "declare -f exec_")
    else
	FUNCTION=
	while [[ $# -gt 0 ]]; do
	    [[ -z ${1} ]] || { declare -f "${1}" &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1//\'/}'"; }
	    shift
	done
	eval ${FUNCTION#*; }
    fi
