#!/bin/bash
# ------------------------------------------------------------
# Rendszertelepítési Alapbeállítások Script (Debian / Ubuntu)
#
# Készítette: Doky
# Verzió: 1.0
#
# Funkciók:
#  - Root jogosultság ellenőrzése
#  - Operációs rendszer ellenőrzése (Debian/Ubuntu)
#  - Rendszerinformációk kiírása
#  - Hosztnév beállítása
#  - Rendszer frissítése
#  - Új sudo felhasználó létrehozása
#  - Jelszó nélküli sudo (NOPASSWD)
#  - Root SSH login tiltása
#  - SSH konfiguráció ellenőrzése
#  - SSH újraindítása
#  - Belépési adatok mentése
# ------------------------------------------------------------

set -euo pipefail

if [[ $EUID -ne 0 ]]; then
    echo "❌ Kérlek, rootként futtasd a scriptet!"
    exit 1
fi

if [[ ! -f /etc/os-release ]]; then
    echo "❌ Nem sikerült meghatározni az operációs rendszert!"
    exit 1
fi

source /etc/os-release

case "$ID" in
    debian|ubuntu) ;;
    *)
        echo "❌ Ez a script csak Debian és Ubuntu rendszereken használható!"
        echo "Észlelt rendszer: ${PRETTY_NAME:-Ismeretlen}"
        exit 1
        ;;
esac

echo "========================================================="
echo " Debian / Ubuntu Alapbeállítások"
echo "========================================================="
echo
echo "Operációs rendszer : $PRETTY_NAME"
echo "Kernel             : $(uname -r)"
echo "Jelenlegi hosztnév : $(hostname)"
echo

while true; do
    read -rp "Add meg a kívánt hosztnevet (pl. server.domain.hu vagy domain.hu): " NEW_HOSTNAME
    [[ "$NEW_HOSTNAME" =~ ^[A-Za-z0-9][A-Za-z0-9.-]*[A-Za-z0-9]$ ]] && break
    echo "❌ Érvénytelen hosztnév!"
done

hostnamectl set-hostname "$NEW_HOSTNAME"
echo "✅ Hosztnév beállítva: $NEW_HOSTNAME"
echo

echo "🔄 Rendszer frissítése..."
apt update
apt upgrade -y
echo "✅ Rendszer frissítve."
echo

while true; do
    read -rp "Adj meg egy új felhasználónevet: " NEW_USER

    if id "$NEW_USER" >/dev/null 2>&1; then
        echo "❌ Ez a felhasználó már létezik!"
    else
        break
    fi
done

PASSWORD=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9@#$%^&*()_+=' | head -c22)

useradd -m -s /bin/bash "$NEW_USER"
echo "${NEW_USER}:${PASSWORD}" | chpasswd
usermod -aG sudo "$NEW_USER"

echo "$NEW_USER ALL=(ALL:ALL) NOPASSWD:ALL" > "/etc/sudoers.d/$NEW_USER"
chmod 440 "/etc/sudoers.d/$NEW_USER"
visudo -cf "/etc/sudoers.d/$NEW_USER" >/dev/null

echo "✅ Felhasználó létrehozva."
echo "✅ Jelszó nélküli sudo engedélyezve."
echo

echo "🔒 Root SSH bejelentkezés tiltása..."

if grep -q "^#\?PermitRootLogin" /etc/ssh/sshd_config; then
    sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
else
    echo "PermitRootLogin no" >> /etc/ssh/sshd_config
fi

if command -v sshd >/dev/null 2>&1; then
    sshd -t
else
    /usr/sbin/sshd -t
fi

if systemctl restart ssh 2>/dev/null; then
    echo "✅ SSH szolgáltatás újraindítva."
elif systemctl restart sshd 2>/dev/null; then
    echo "✅ SSHD szolgáltatás újraindítva."
else
    echo "❌ Nem sikerült újraindítani az SSH szolgáltatást!"
    exit 1
fi

cat > "/root/${NEW_USER}_credentials.txt" <<EOF
Hostname: $NEW_HOSTNAME
Felhasználó: $NEW_USER
Jelszó: $PASSWORD
EOF

chmod 600 "/root/${NEW_USER}_credentials.txt"

echo
echo "========================================================="
echo "🎉 Minden feladat sikeresen elkészült!"
echo "========================================================="
echo "Hosztnév    : $NEW_HOSTNAME"
echo "Felhasználó : $NEW_USER"
echo "Jelszó      : $PASSWORD"
echo
echo "A belépési adatok elmentve ide:"
echo "/root/${NEW_USER}_credentials.txt"
echo
echo "Elvégzett műveletek:"
echo "  ✅ Operációs rendszer ellenőrizve"
echo "  ✅ Operációs rendszer kiírva"
echo "  ✅ Kernel verzió kiírva"
echo "  ✅ Jelenlegi hosztnév kiírva"
echo "  ✅ Hosztnév beállítva"
echo "  ✅ Rendszer frissítve"
echo "  ✅ Új sudo felhasználó létrehozva"
echo "  ✅ Jelszó nélküli sudo engedélyezve"
echo "  ✅ Root SSH bejelentkezés letiltva"
echo "  ✅ SSH konfiguráció ellenőrizve"
echo "  ✅ SSH szolgáltatás újraindítva"
echo "  ✅ Belépési adatok elmentve"
echo "========================================================="
