#!/bin/bash

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

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

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

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

#==============================================================================
# Конфигурации
#==============================================================================
## iniGetLightModeActive
## @brief - Функция вернёт признак активности мягкого режима
## @return Вернёт признак активности
function iniGetLightModeActive() {
    local Active=$(iniGetValue 'LightMode' 'Active' 'false' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
    [ "$Active" == "true" ]
}

## initSetLightModeActive
## @brief - Функция задаст признак активности мягкого режима
## @param $1 - Логическое значение активности
function initSetLightModeActive() {
    local VALUE="$1"
    iniSetValue 'LightMode' 'Active' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetLightModeExitOnBlockScreen
## @brief - Функция вернёт признак того, что нужно выйти из информационных систем при блокировке экрана (мягкий режим)
## @return Вернёт признак того, что нужно выйти из информационных систем при блокировке экрана
function iniGetLightModeExitOnBlockScreen() {
    local exitOnBlockScreen=$(iniGetValue 'LightMode' 'ExitOnBlockScreen' 'false' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
    [ "$exitOnBlockScreen" == "true" ]
}

## iniSetLightModeExitOnBlockScreen
## @brief - Функция задаст признак того, что нужно выйти из информационных систем при блокировке экрана (мягкий режим)
## @param $1 - Логическое значение необходимости выхода из информационной системы
function iniSetLightModeExitOnBlockScreen() {
    local VALUE="$1"
    iniSetValue 'LightMode' 'ExitOnBlockScreen' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetLightModeMinSensitivity
## @brief - Функция вернёт минимальный порог чувствительности (мягкий режим)
## @return Вернёт минимальный порог чувствительности
function iniGetLightModeMinSensitivity() {
    echo $(iniGetValue 'LightMode' 'MinSensitivity' '4.0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniGetLightModeMaxSensitivity
## @brief - Функция вернёт максимальный порог чувствительности (мягкий режим)
## @return Вернёт максимальный порог чувствительности
function iniGetLightModeMaxSensitivity() {
    echo $(iniGetValue 'LightMode' 'MaxSensitivity' '8.0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniGetLightModeSensitivity
## @brief - Функция вернёт порог чувствительности (мягкий режим)
## @return Вернёт порог чувствительности
function iniGetLightModeSensitivity() {
    echo $(iniGetValue 'LightMode' 'Sensitivity' '6.0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniSetLightModeSensitivity
## @brief - Функция задаст порог чувствительности (мягкий режим)
## @param $1 - Значение чувствительности [беззнаковое целое|вещественное]
function iniSetLightModeSensitivity() {
    local VALUE="$1"
    iniSetValue 'LightMode' 'Sensitivity' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetMiddleModeActive
## @brief - Функция вернёт признак активности среднего режима
## @return Вернёт признак активности
function iniGetMiddleModeActive() {
    local Active=$(iniGetValue 'MiddleMode' 'Active' 'false' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
    [ "$Active" == "true" ]
}

## initSetMiddleModeActive
## @brief - Функция задаст признак активности среднего режима
## @param $1 - Логическое значение активности
function initSetMiddleModeActive() {
    local VALUE="$1"
    iniSetValue 'MiddleMode' 'Active' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetMiddleModeTimeWithoutLogin
## @brief - Функция вернёт временной период для отсутствия пользователя (средней режим)
## @return Вернёт временной период для отсутствия пользователя
function iniGetMiddleModeTimeWithoutLogin() {
    echo $(iniGetValue 'MiddleMode' 'TimeWithoutLogin' '0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniSetMiddleModeTimeWithoutLogin
## @brief - Функция задаст временной период для отсутствия пользователя (средней режим)
## @param $1 - Временной период [unix time]
function iniSetMiddleModeTimeWithoutLogin() {
    local VALUE="$1"
    iniSetValue 'MiddleMode' 'TimeWithoutLogin' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetMiddleModeAttemptCount
## @brief - Функция вернёт количество попыток аутентификации пользователя (средней режим)
## @return Вернёт количество попыток аутентификации пользователя
function iniGetMiddleModeAttemptCount() {
    echo $(iniGetValue 'MiddleMode' 'LoginAttemptCount' '0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniSetMiddleModeAttemptCount
## @brief - Функция задаст количество попыток аутентификации пользователя (средней режим)
## @param $1 - Количество попыток [беззнаковое целое]
function iniSetMiddleModeAttemptCount() {
    local VALUE="$1"
    iniSetValue 'MiddleMode' 'LoginAttemptCount' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetHardModeActive
## @brief - Функция вернёт признак активности жёсткого режима
## @return Вернёт признак активности
function iniGetHardModeActive() {
    local Active=$(iniGetValue 'HardMode' 'Active' 'false' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
    [ "$Active" == "true" ]
}

## initSetHardModeActive
## @brief - Функция задаст признак активности жёсткого режима
## @param $1 - Логическое значение активности
function initSetHardModeActive() {
    local VALUE="$1"
    iniSetValue 'HardMode' 'Active' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetHardModeTimeWithoutLogin
## @brief - Функция вернёт временной период для отсутствия пользователя (жёсткий режим)
## @return Вернёт временной период для отсутствия пользователя
function iniGetHardModeTimeWithoutLogin() {
    echo $(iniGetValue 'HardMode' 'TimeWithoutLogin' '0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniSetHardModeTimeWithoutLogin
## @brief - Функция задаст временной период для отсутствия пользователя (жёсткий режим)
## @param $1 - Временной период [unix time]
function iniSetHardModeTimeWithoutLogin() {
    local VALUE="$1"
    iniSetValue 'HardMode' 'TimeWithoutLogin' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}

## iniGetHardModeAttemptCount
## @brief - Функция вернёт количество попыток аутентификации пользователя (жёсткий режим)
## @return Вернёт количество попыток аутентификации пользователя
function iniGetHardModeAttemptCount() {
    echo $(iniGetValue 'HardMode' 'LoginAttemptCount' '0' "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH")
}

## iniSetHardModeAttemptCount
## @brief - Функция задаст количество попыток аутентификации пользователя (жёсткий режим)
## @param $1 - Количество попыток [беззнаковое целое]
function iniSetHardModeAttemptCount() {
    local VALUE="$1"
    iniSetValue 'HardMode' 'LoginAttemptCount' "$VALUE" "$ASTRA_MOBLIE_CLEAN_AND_LOCK_CONFIG_PATH"
}
#==============================================================================

