#!/bin/bash

# Sprawdzenie uprawnień roota
if [ "$EUID" -ne 0 ]; then
  echo "Proszę uruchomić jako root (sudo)."
  exit
fi

echo "========================================================"
echo "  LINUX GENERALIZATION SCRIPT (Bieda-Sysprep)"
echo "  UWAGA: To usunie logi, klucze SSH i historię!"
echo "========================================================"
read -p "Czy na pewno chcesz kontynuować? (y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    exit 1
fi

echo "[*] Zatrzymywanie usług logowania..."
service rsyslog stop 2>/dev/null
service syslog stop 2>/dev/null

echo "[*] Czyszczenie menedżera pakietów (APT/YUM/DNF)..."
if [ -x "$(command -v apt-get)" ]; then
    apt-get clean -y
    apt-get autoremove -y
elif [ -x "$(command -v dnf)" ]; then
    dnf clean all
elif [ -x "$(command -v yum)" ]; then
    yum clean all
fi

echo "[*] Usuwanie kluczy hosta SSH (zostaną wygenerowane nowe przy starcie)..."
rm -f /etc/ssh/ssh_host_*
# Opcjonalnie usuń konfigurację root authorized_keys jeśli chcesz odciąć dostęp
# rm -f /root/.ssh/authorized_keys

echo "[*] Resetowanie Machine ID (Kluczowe dla DHCP!)..."
# Dla systemd: plik musi istnieć, ale być pusty
if [ -f /etc/machine-id ]; then
    truncate -s 0 /etc/machine-id
fi
# Usuń stary identyfikator DBus
rm -f /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id

echo "[*] Czyszczenie logów systemowych..."
find /var/log -type f -exec truncate -s 0 {} \;
# Usuwanie starych logów archiwizowanych (np. syslog.1.gz)
find /var/log -type f -name "*.[0-9]" -delete
find /var/log -type f -name "*.gz" -delete

echo "[*] Czyszczenie konfiguracji sieci (Netplan/NetworkManager)..."
# Usuń pliki tymczasowe DHCP
rm -f /var/lib/dhcp/*
# Uwaga: Nie usuwamy plików konfiguracyjnych netplan, chyba że zawierają sztywny MAC address.

echo "[*] Czyszczenie katalogów tymczasowych..."
rm -rf /tmp/*
rm -rf /var/tmp/*

echo "[*] Resetowanie hostname do wartości domyślnej..."
echo "localhost" > /etc/hostname
# Zaktualizuj /etc/hosts (prosta edycja)
sed -i 's/127.0.1.1.*/127.0.1.1\tlocalhost/g' /etc/hosts

echo "[*] Czyszczenie historii powłoki (Bash)..."
unset HISTFILE
rm -f /root/.bash_history
rm -f /home/*/.bash_history

echo "[*] Cloud-init clean (jeśli zainstalowane)..."
if [ -x "$(command -v cloud-init)" ]; then
    cloud-init clean
fi

echo "========================================================"
echo "  ZAKOŃCZONO!"
echo "  System jest gotowy do klonowania."
echo "========================================================"

read -p "Czy chcesz teraz wyłączyć maszynę? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    poweroff
fi
