#!/bin/bash

#================================================================================
# Инициализация
#================================================================================

# Определяем местоположение скрипта
SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
# Импортируем функции
source $SCRIPT_PATH/ini_reader

#==============================================================================
# Глобальные переменные
#==============================================================================
# Путь к директории конфигураций
declare CONFIGS_DIR_PATH='/etc/astra-mobile'
# Путь к файлу конфигураций
declare ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH="$CONFIGS_DIR_PATH/astra-mobile-userfilesdel.ini"

#==============================================================================
# Создание директорий
#==============================================================================
if [ ! -d "$CONFIGS_DIR_PATH" ]; then mkdir -p "$CONFIGS_DIR_PATH"; fi

#==============================================================================
# Конфигурации
#==============================================================================
## iniGetActive
## @brief - Функция вернёт признак активности модуля удаления пользовательских файлов
## @return Вернёт признак активности
function iniGetActive() {
    local Active=$(iniGetValue '%General' 'Active' 'false' "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH")
    [ "$Active" == "true" ]
}

## iniSetActive
## @brief - Функция задаст признак активности модуля удаления пользовательских файлов
## @param $1 - Логическое значение активности
function iniSetActive() {
    local VALUE="$1"
    iniSetValue '%General' 'Active' "$VALUE" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH"
}

## iniGetAdminsProtections
## @brief - Функция вернёт признак активности защиты файлов администраторов
## @return Вернёт признак активности
function iniGetAdminsProtections() {
    local AdminsDef=$(iniGetValue '%General' 'AdminsProtections' 'true' "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH")
    [ "$AdminsDef" == "true" ]
}

## iniSetAdminsProtections
## @brief - Функция задаст признак активности защиты файлов администраторов
## @param $1 - Логическое значение активности
function iniSetAdminsProtections() {
    local VALUE="$1"
    iniSetValue '%General' 'AdminsProtections' "$VALUE" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH"
}

## iniGetMode
## @brief - Функция вернёт режим работы проверки файла
## @return Вернёт режим работы проверки файла
function iniGetMode() {
    echo $(iniGetValue '%General' 'Mode' "$WORK_MODE_CREATION_TIME" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH")
}

## iniSetMode
## @brief - Функция задаст режим работы проверки файла
## @param $1 - Новое значение режима работы проверки файла
function iniSetMode() {
    local VALUE="$1"
    iniSetValue '%General' 'Mode' "$VALUE" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH"
}

## iniGetLifeTime
## @brief - Функция вернёт время жизни файлов
## @return Вернёт время жизни файлов
function iniGetLifeTime() {
    echo $(iniGetValue '%General' 'LifeTime' "$DEFAULT_FILE_LIFE_TIME" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH")
}

## iniSetLifeTime
## @brief - Функция задаст время жизни файлов
## @param $1 - Новое значение времени жизни файлов
function iniSetLifeTime() {
    local VALUE="$1"
    iniSetValue '%General' 'LifeTime' "$VALUE" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH"
}

## iniGetUserWhiteList
## @brief - Функция вернёт белый список пользователя
## @return Вернёт белый список пользователя
function iniGetUserWhiteList() {
    declare -n OUT_WHITE_LIST=$1

    local Str=$(echo $(iniGetValue '%General' 'UserWhiteList' '""' "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH") | cut -d'"' -f 2)
    # Поместим в массив Array
    local OLD_IFS=$IFS
    IFS=';'
    read -r -a OUT_WHITE_LIST <<< "$Str"
    IFS=$OLD_IFS
}

## iniSetUserWhiteList
## @brief - Функция задаст белый список пользователя
## @param $1 - Новый белый список пользователя
function iniSetUserWhiteList() {
    declare -n IN_WHITE_LIST=$1

    # Установим разделитель ';'
    local OLD_IFS=$IFS
    IFS=';'
    local VALUE=$(echo "${IN_WHITE_LIST[*]}")
    IFS=$OLD_IFS

    iniSetValue '%General' 'UserWhiteList' "\"$VALUE\"" "$ASTRA_MOBLIE_USERFILEDEL_CONFIG_PATH"
}
