#!/bin/bash

set -e

# Detect OS
if [ -f /etc/os-release ]; then
  . /etc/os-release
  OS=$ID
  VERSION=$VERSION_ID
else
  echo "Không thể xác định hệ điều hành!"
  exit 1
fi

echo "Phát hiện hệ điều hành: $OS $VERSION"

# Chrony config content (dùng chung)
CHRONY_COMMON_CONF=$(cat <<EOF
server 103.206.216.222 iburst
server time.google.com iburst
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
EOF
)

# Install & Configure Chrony
if [[ "$OS" =~ ^(ubuntu|debian)$ ]]; then
  echo "[+] Cài chrony trên Ubuntu/Debian..."
  apt update -y
  apt install -y chrony

  echo "[+] Sao lưu cấu hình gốc: /etc/chrony/chrony.conf.bak"
  cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak

  cat <<EOF > /etc/chrony/chrony.conf
$CHRONY_COMMON_CONF
pool ntp.ubuntu.com iburst

driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF

  systemctl enable chrony
  systemctl restart chrony

elif [[ "$OS" =~ ^(centos|rhel|rocky|almalinux|fedora)$ ]]; then
  echo "[+] Cài chrony trên CentOS/RHEL..."
  yum install -y chrony

  echo "[+] Sao lưu cấu hình gốc: /etc/chrony.conf.bak"
  cp /etc/chrony.conf /etc/chrony.conf.bak

  cat <<EOF > /etc/chrony.conf
$CHRONY_COMMON_CONF
pool 2.centos.pool.ntp.org iburst

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF

  systemctl enable chronyd
  systemctl restart chronyd
else
  echo "Hệ điều hành $OS chưa được hỗ trợ tự động trong script này."
  exit 1
fi

# Kiểm tra trạng thái đồng bộ
echo ""
echo "==== Trạng thái đồng bộ thời gian ===="
chronyc tracking || echo "Nếu lỗi, hãy thử: chronyd -q 'server time.google.com iburst'"

