#!/bin/bash

# Pastikan script dijalankan sebagai root
if [ "$(id -u)" -ne 0 ]; then
  echo "Harap jalankan script ini sebagai root atau menggunakan sudo."
  exit 1
fi

# Mendeteksi IP Address utama server secara otomatis
# Akan mengambil IP route default
SERVER_IP=$(ip route get 1.1.1.1 2>/dev/null | awk '{print $7}')
if [ -z "$SERVER_IP" ]; then
    SERVER_IP=$(hostname -I | awk '{print $1}')
fi

echo "Mendeteksi IP Address server: $SERVER_IP"

echo "Memperbarui indeks paket..."
apt-get update -y

echo "Menginstal BIND9 dan tools pendukung (dnsutils)..."
apt-get install bind9 bind9utils bind9-doc dnsutils -y

echo "Membackup konfigurasi /etc/bind/named.conf.local..."
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak

echo "Menambahkan zone domain ke /etc/bind/named.conf.local..."
cat <<EOF >> /etc/bind/named.conf.local

# Zone untuk smkbisa.or.id
zone "smkbisa.or.id" {
    type master;
    file "/etc/bind/db.smkbisa";
};

# Zone untuk lks2027.net
zone "lks2027.net" {
    type master;
    file "/etc/bind/db.lks2027";
};
EOF

echo "Membuat file zone /etc/bind/db.smkbisa (smkbisa.or.id)..."
cat <<EOF > /etc/bind/db.smkbisa
\$TTL    604800
@       IN      SOA     ns1.smkbisa.or.id. admin.smkbisa.or.id. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.smkbisa.or.id.
@       IN      A       $SERVER_IP
ns1     IN      A       $SERVER_IP
www     IN      A       $SERVER_IP
EOF

echo "Membuat file zone /etc/bind/db.lks2027 (lks2027.net)..."
cat <<EOF > /etc/bind/db.lks2027
\$TTL    604800
@       IN      SOA     ns1.lks2027.net. admin.lks2027.net. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.lks2027.net.
@       IN      A       $SERVER_IP
ns1     IN      A       $SERVER_IP
www     IN      A       $SERVER_IP
EOF

# Opsional: Memeriksa konfigurasi DNS
echo "Memeriksa sintaks konfigurasi BIND9..."
named-checkconf
named-checkzone smkbisa.or.id /etc/bind/db.smkbisa
named-checkzone lks2027.net /etc/bind/db.lks2027

echo "Mengaktifkan dan menjalankan ulang layanan bind9..."
systemctl restart bind9
systemctl enable bind9

echo "---------------------------------------------------"
echo "Instalasi dan Konfigurasi DNS Server (BIND9) selesai!"
echo "Domain 'smkbisa.or.id' dan 'lks2027.net' beserta subdomain 'www' dan 'ns1'"
echo "telah dikonfigurasi dan diarahkan ke IP address server ini: $SERVER_IP"
echo "Gunakan perintah 'dig smkbisa.or.id @localhost' untuk mengetesnya."
