#!/bin/sh

export TEXTDOMAIN=kcm_mobile_integrity_scripts
. gettext.sh

red=`tput setaf 1`
green=`tput setaf 2`
yellow=`tput setaf 3`
reset=`tput sgr0`

# Проверяем права суперпользователя
if [[ $EUID -ne 0 ]]; then
    echo -e $(eval_gettext "[\${yellow}Warning\${reset}] Please run the script as superuser.")
    exit 1
fi

# Проверяем, что afick установлен
if [ $(dpkg-query -W -f='${Status}' afick 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
    echo -e $(eval_gettext "[\${red}Error\${reset}] Afick not installed.")
    exit 2
fi

# Проверяем, что pv установлен
pv_installed=$(dpkg-query -W -f='${Status}' pv 2>/dev/null | grep -c "ok installed")

status=0
if [ $pv_installed -eq 0 ]; then
    # Запускаем проверку
    afick -k
    status=$?
else
    # Вычисляем количество сканируемых файлов
    files_count=$(afick --stat_size | grep -Po "#\s\d+(-\d+){0,1}\s:\s{1,2}\d+" | grep -o -E '[^ ]+$' | xargs | tr ' ' '+' | bc)
    # Запускаем проверку с выводом количества сканированных файлов от 0 до files_count
    afick -k -P | pv -l -s $files_count > /dev/null
    status=${PIPESTATUS[0]}
fi

# Проверяем результат
if [[ $status -ne 0 ]]; then
    echo -e $(eval_gettext "[\${red}Error\${reset}] Files changed. Please contact your administrator.")

    fail_scripts_dir=/etc/astra-mobile-integrity/failure.d
    for fail_script in $fail_scripts_dir/*.sh; do
        sh "$fail_script"
    done

    exit 3
else
    echo $(eval_gettext "\${green}Check successful\${reset}")
fi
