#!/bin/bash

# Colores para el output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Función para validar correo
validar_correo() {
    [[ "$1" =~ ^[a-zA-Z]+\.[a-zA-Z]+@mspz9\.gob\.ec$ ]]
}

# Funciones de mensajes
error_msg() { echo -e "${RED}[ERROR] $1${NC}"; exit 1; }
success_msg() { echo -e "${GREEN}[ÉXITO] $1${NC}"; }
info_msg() { echo -e "${BLUE}[INFO] $1${NC}"; }
warning_msg() { echo -e "${YELLOW}[ADVERTENCIA] $1${NC}"; }

# Verificar ejecución como root
[ "$(id -u)" -ne 0 ] && error_msg "Ejecutar como root: sudo $0"

# Detener Thunderbird si está en ejecución
info_msg "Cerrando Thunderbird..."
pkill -u funcionario thunderbird || true
sleep 2

# Verificar/instalar Thunderbird
if ! command -v thunderbird &>/dev/null; then
    warning_msg "Instalando Thunderbird..."
    apt-get update && apt-get install -y thunderbird || error_msg "Error al instalar Thunderbird"
fi

# Obtener datos del usuario
echo -e "${YELLOW}\n=== Configuración de Cuenta Zimbra MSPZ9 ===${NC}"
while :; do
    read -p "Nombre completo (ej. Juan Perez): " nombre
    [ -n "$nombre" ] && break
    error_msg "Nombre no puede estar vacío"
done

while :; do
    read -p "Correo (formato: nombre.apellido@mspz9.gob.ec): " correo
    validar_correo "$correo" && break
    error_msg "Formato incorrecto. Debe ser: nombre.apellido@mspz9.gob.ec"
done

read -p "Contraseña (visible): " password

# Configurar directorios
thunderbird_dir="/home/funcionario/.thunderbird"
backup_dir="/home/funcionario/Documentos/RespaldoZimbra"

# Crear perfil si no existe
if [ ! -d "$thunderbird_dir" ]; then
    info_msg "Creando perfil de Thunderbird..."
    su - funcionario -c "thunderbird -CreateProfile default"
    sleep 3
fi

# Obtener perfil
profile_path=$(grep -m1 -oP 'Path=\K.*' "$thunderbird_dir/profiles.ini")
profile_dir="$thunderbird_dir/$profile_path"

# Configuración esencial
cat > "$profile_dir/user.js" <<EOF
// Configuración automática para MSPZ9
user_pref("mail.smtpserver.smtp1.hostname", "mail.mspz9.gob.ec");
user_pref("mail.smtpserver.smtp1.port", 587);
user_pref("mail.smtpserver.smtp1.security", "starttls");
user_pref("mail.smtpserver.smtp1.username", "$correo");
user_pref("mail.smtpserver.smtp1.authMethod", 3);
user_pref("mail.smtpservers", "smtp1");
user_pref("mail.smtpserver.default", "smtp1");

user_pref("mail.server.server1.hostname", "mail.mspz9.gob.ec");
user_pref("mail.server.server1.name", "$nombre");
user_pref("mail.server.server1.port", 143);
user_pref("mail.server.server1.socketType", 2);
user_pref("mail.server.server1.type", "imap");
user_pref("mail.server.server1.userName", "$correo");
user_pref("mail.server.server1.authMethod", 3);

user_pref("mail.identity.id1.fullName", "$nombre");
user_pref("mail.identity.id1.useremail", "$correo");
user_pref("mail.identity.id1.smtpServer", "smtp1");

// Deshabilitar asistente inicial
user_pref("mail.provider.enabled", false);
user_pref("app.update.auto", false);
user_pref("app.update.enabled", false);
EOF

# Configurar contraseñas (método alternativo)
cat > "$profile_dir/password.txt" <<EOF
imap|$correo|$password
smtp|$correo|$password
EOF

# Crear carpeta de respaldo
mkdir -p "$backup_dir"
chown funcionario:funcionario "$backup_dir"

# Ajustar permisos
chown -R funcionario:funcionario "$thunderbird_dir"
chmod -R 755 "$thunderbird_dir"

# Crear archivo de bloqueo para evitar sobrescritura
touch "$profile_dir/.config_done"
chown funcionario:funcionario "$profile_dir/.config_done"

# Iniciar Thunderbird para guardar configuración
info_msg "Iniciando Thunderbird para guardar configuración..."
su - funcionario -c "thunderbird --headless & sleep 15; pkill thunderbird"
sleep 3

# Verificación final
if [ -f "$profile_dir/prefs.js" ] && grep -q "mspz9" "$profile_dir/prefs.js"; then
    success_msg "¡Configuración completada correctamente!"
    info_msg "Ahora puede abrir Thunderbird normalmente y verá su cuenta configurada"
else
    warning_msg "Se requieren pasos adicionales:"
    echo -e "1. Abra Thunderbird manualmente como usuario funcionario"
    echo -e "2. Cuando aparezca el asistente inicial, cierre Thunderbird"
    echo -e "3. Vuelva a ejecutar este script para completar la configuración"
fi
