#!/bin/bash

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

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

check_root_rights
# Работа функционала доступна только в режиме 'Advanced' и выше!
checkExecutionAllowed

declare -a USERS

# Если список парамеров пуст
if [[ -z "$@" ]]; then
    # Запросим список всех пользователей системы
    userList USERS
    echo "Clear all users vipnet data!"
else
    # Получаем список пользователей из параметров
    USERS=( $@ )
    echo "Clear users: [${USERS[@]}] vipnet data!"
fi

#================================================================================
# Функции
#================================================================================
## findFilesToRemove
## @brief - Функция поиска файлов на удаление
## @param $1 - Заполняемый список файлов
function findFilesToRemove() {
    declare -n APPENDED_LIST=$1

    # Ищем vipnet файлы в /root
    findFiles "/root" "*.vipnet" APPENDED_LIST

    # Обрабатываем данные для всех пользователей
    for User in ${USERS[@]}
    do
        # Пропустим системных пользователей
        if [ $(id -u "$User") -lt 1000 ]; then continue; fi
        # Получим домашнюю директорию пользователя
        local UserHomeDir="$(userGetHomeDir "$User")"

        # Рассматриваем только пользователя с домашней директорией
        if [ -d "$UserHomeDir" ]; then
            # Ищем vipnet файлы в домашней директории каждого пользователя
            findFiles "$UserHomeDir" "*.vipnet" APPENDED_LIST
        fi
    done
}

#================================================================================
# main
#================================================================================
# Получаем список DST файлов
declare -a RemoveFiles
findFilesToRemove RemoveFiles

# Обрабатываем файлы на удаление
if [ ${#RemoveFiles[@]} -gt 0 ]; then

    # Пустой список файлов для обработки через SecDel
    FilesToSecDel=()
    # Пустой список файлов для обработки через fstrim
    FilesToFsTrim=()

    for File in "${RemoveFiles[@]}"
    do
        # Получаем системный раздел, на котором находится файл
        DirDriveName=$(driveNameByPartition $(drivePartitionByPartFS "$File"))
        # Определяем режим обработки для раздела
        ProcessMode=$(useMode $DirDriveName)

        # Разделим файлы для разных режимов обработки
        if [ $ProcessMode == $FSTRIM_MODE ]; then
            FilesToFsTrim[${#FilesToFsTrim[*]}]="$File"
        else
            FilesToSecDel[${#FilesToSecDel[*]}]="$File"
        fi
    done

    # Обрабатываем файлы соответствующим методом
    processFilesFSTrim FilesToFsTrim
    processFilesSecDel FilesToSecDel
fi

# Зачищаем файлы пользователей
$SCRIPT_PATH/astra-mobile-clean-home $@
#================================================================================
