#!/usr/bin/env bash
set -e

# Цвета для вывода
GREEN='\033[1;32m'
BLUE='\033[1;34m'
YELLOW='\033[1;33m'
RED='\033[1;31m'
NC='\033[0m'

info()  { echo -e "\n${BLUE}===> $1${NC}"; }
ok()    { echo -e "${GREEN}[OK] $1${NC}"; }
warn()  { echo -e "${YELLOW}[!] $1${NC}"; }
err()   { echo -e "${RED}[ОШИБКА] $1${NC}"; exit 1; }

# 0. Проверка прав
if [ "$EUID" -ne 0 ]; then
    echo -e "${YELLOW}Запрос прав администратора (sudo)...${NC}"
    exec sudo -E bash "$0" "$@"
fi

REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || echo user)}"
REAL_UID=$(id -u "$REAL_USER" 2>/dev/null || echo 1000)
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
[ -z "$REAL_HOME" ] && REAL_HOME="/home/$REAL_USER"

echo -e "${GREEN}======================================================${NC}"
echo -e "${GREEN}   ОТКАТ НАСТРОЕК ЕСПД (Возврат в исходное состояние) ${NC}"
echo -e "${GREEN}======================================================${NC}"
echo "Пользователь: $REAL_USER ($REAL_HOME)"

# ----------------------------------------------------------------------
# ЭТАП 1. Отключение прокси в KDE
# ----------------------------------------------------------------------
info "Этап 1/3: Сброс настроек прокси KDE..."

KIOSLAVERC="$REAL_HOME/.config/kioslaverc"
if [ -f "$KIOSLAVERC" ]; then
    if command -v kwriteconfig5 >/dev/null 2>&1; then
        sudo -u "$REAL_USER" kwriteconfig5 --file "$KIOSLAVERC" --group "Proxy Settings" --key "ProxyType" "0"
    elif command -v kwriteconfig6 >/dev/null 2>&1; then
        sudo -u "$REAL_USER" kwriteconfig6 --file "$KIOSLAVERC" --group "Proxy Settings" --key "ProxyType" "0"
    else
        # Fallback: меняем ProxyType на 0 (Нет прокси)
        sed -i 's/^ProxyType=.*/ProxyType=0/' "$KIOSLAVERC"
    fi
    
    # Применяем изменения без перезагрузки
    sudo -u "$REAL_USER" \
        DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$REAL_UID/bus" \
        dbus-send --type=signal /KIO/Scheduler org.kde.KIO.Scheduler.reparseSlaveConfiguration string:'' >/dev/null 2>&1 || true
    
    if command -v kded5 >/dev/null 2>&1; then
        sudo -u "$REAL_USER" DISPLAY="${DISPLAY:-:0}" kded5 --replace >/dev/null 2>&1 &
    elif command -v kded6 >/dev/null 2>&1; then
        sudo -u "$REAL_USER" DISPLAY="${DISPLAY:-:0}" kded6 --replace >/dev/null 2>&1 &
    fi
    ok "Прокси в KDE отключен (ProxyType=0)."
else
    warn "Файл $KIOSLAVERC не найден. Прокси KDE не был настроен."
fi

# ----------------------------------------------------------------------
# ЭТАП 2. Удаление сертификата Ростелеком
# ----------------------------------------------------------------------
info "Этап 2/3: Удаление сертификата Ростелеком..."

# 2.1. Удаление из системного хранилища
SYS_CERT="/etc/pki/ca-trust/source/anchors/ca-root.crt"
if [ -f "$SYS_CERT" ]; then
    rm -f "$SYS_CERT"
    if command -v update-ca-trust >/dev/null 2>&1; then
        update-ca-trust extract
    fi
    ok "Сертификат удален из системного хранилища."
else
    warn "Системный сертификат не найден (возможно, уже удален)."
fi

# 2.2. Удаление из папки Загрузки
USER_DOWNLOADS="$REAL_HOME/Загрузки"
[ ! -d "$USER_DOWNLOADS" ] && USER_DOWNLOADS="$REAL_HOME/Downloads"
if [ -f "$USER_DOWNLOADS/ca-root.crt" ]; then
    rm -f "$USER_DOWNLOADS/ca-root.crt"
    ok "Сертификат удален из папки пользователя."
fi

# 2.3. Удаление из NSS (Chromium)
NSSDB_DIR="$REAL_HOME/.pki/nssdb"
if command -v certutil >/dev/null 2>&1 && [ -d "$NSSDB_DIR" ]; then
    sudo -u "$REAL_USER" certutil -d sql:"$NSSDB_DIR" -D -n "CA Root Social Objects" >/dev/null 2>&1 || true
    ok "Сертификат удален из браузера Chromium (NSS)."
else
    warn "Утилита certutil не найдена или база NSS отсутствует."
fi

# ----------------------------------------------------------------------
# ЭТАП 3. Очистка конфигов DNF и Wget
# ----------------------------------------------------------------------
info "Этап 3/3: Очистка настроек DNF и Wget..."

# 3.1. Удаление прокси из DNF
if [ -f /etc/dnf/dnf.conf ]; then
    # Удаляем любые строки, начинающиеся с proxy=
    sed -i '/^proxy=/d' /etc/dnf/dnf.conf
    ok "Настройки прокси удалены из /etc/dnf/dnf.conf."
fi

# 3.2. Удаление прокси из Wget
if [ -f /etc/wgetrc ]; then
    # Удаляем строки, которые мы добавляли
    sed -i '/^http_proxy =/d; /^https_proxy =/d; /^use_proxy =/d' /etc/wgetrc
    ok "Настройки прокси удалены из /etc/wgetrc."
fi

# 3.3. Сброс переменных окружения прокси (если были прописаны глобально)
if [ -f /etc/environment ]; then
    sed -i '/^http_proxy=/d; /^https_proxy=/d; /^ftp_proxy=/d; /^no_proxy=/d' /etc/environment
    ok "Глобальные переменные прокси удалены из /etc/environment (если были)."
fi

echo -e "\n${GREEN}======================================================${NC}"
echo -e "${GREEN}   ВОЗВРАТ К ИСХОДНОМУ СОСТОЯНИЮ ЗАВЕРШЕН!            ${NC}"
echo -e "${GREEN}======================================================${NC}"
echo -e "${YELLOW}РЕКОМЕНДАЦИЯ:${NC}"
echo "1. Перезагрузите компьютер, чтобы все службы (включая KDE) применили изменения."
echo "2. После перезагрузки проверьте работу АРМ ГИА-11:"
echo "   curl http://localhost:7080/api/status"
echo "3. Если ошибка 'Connection refused' осталась, значит проблема не в прокси,"
echo "   а в самом сервисе CPD (см. 'sudo systemctl status gia11_cpd')."