Auto sync: Thu Jan 29 05:45:33 AM WIB 2026
This commit is contained in:
5755407
blacklist_cleaned_v2.txt
5755407
blacklist_cleaned_v2.txt
File diff suppressed because it is too large
Load Diff
499
rpz1.sh
Executable file
499
rpz1.sh
Executable file
@@ -0,0 +1,499 @@
|
||||
#!/bin/bash
|
||||
|
||||
################################################################################################################
|
||||
# NAMA SCRIPT : TRUSTPOSITIF-RPZ-DNS-ZONE-UPDATER.SH
|
||||
# FUNGSI : MEMPERBARUI ZONA DNS DENGAN DATA TRUSTPOSITIF, WHITELIST, DAN SAFESEARCH
|
||||
# DESKRIPSI : SCRIPT INI MENGUNDUH DATA DARI BERBAGAI SUMBER DAN MENGONVERSINYA KE FORMAT RPZ UNTUK BIND.
|
||||
# DITAMBAHKAN FUNGSI UNTUK MENGHAPUS DOMAIN WHITELIST & DOH DARI BLACKLIST
|
||||
# AUTHOR : HARRY DERTIN SUTISNA (ORIGINAL)
|
||||
# MODIFIED BY : CLAUDE ASSISTANT (PENAMBAHAN FUNGSI WHITELIST CLEANER)
|
||||
# WAKTU & TANGGAL : JAKARTA, 02 JANUARY 2025 (ORIGINAL)
|
||||
# MODIFIED: 12 JANUARY 2026
|
||||
################################################################################################################
|
||||
|
||||
# Warna ANSI
|
||||
MERAH="\033[1;31m"
|
||||
HIJAU="\033[1;32m"
|
||||
KUNING="\033[1;33m"
|
||||
CYAN="\033[1;36m"
|
||||
MAGENTA="\033[1;35m"
|
||||
BIRU="\033[1;34m"
|
||||
PUTIH="\033[1;37m"
|
||||
HITAM="\033[1;30m"
|
||||
ABUABU="\033[1;90m"
|
||||
MERAH_TUA="\033[1;91m"
|
||||
HIJAU_TUA="\033[1;92m"
|
||||
KUNING_TUA="\033[1;93m"
|
||||
CYAN_TUA="\033[1;96m"
|
||||
MAGENTA_TUA="\033[1;95m"
|
||||
BIRU_TUA="\033[1;94m"
|
||||
PUTIH_TUA="\033[1;97m"
|
||||
RESET="\033[0m"
|
||||
|
||||
# Variabel URL
|
||||
# URL_TRUSTPOSITIF="https://raw.githubusercontent.com/alsyundawy/TrustPositif/refs/heads/main/alsyundawy_blacklist_complete_v2.txt"
|
||||
URL_TRUSTPOSITIF="https://gitea.ismayadjati.id/syamsulhadiae/trustpositif/raw/branch/main/blacklist_cleaned_v2.txt"
|
||||
# URL_TRUSTPOSITIF="https://trustpositif.komdigi.go.id/assets/db/domains_isp"
|
||||
URL_WHITELIST="https://raw.githubusercontent.com/alsyundawy/hds-pihole-blacklist/main/dnssehat/whitelist.txt"
|
||||
URL_SAFESEARCH="https://www.google.com/supported_domains"
|
||||
|
||||
# URL Whitelist tambahan untuk dibersihkan dari blacklist (DoH/DoT domains)
|
||||
# URL_DOH_WHITELIST="https://raw.githubusercontent.com/hagezi/dns-blocklists/main/domains/doh-only-domains.txt"
|
||||
URL_DOH_WHITELIST="https://raw.githubusercontent.com/alsyundawy/TrustPositif/refs/heads/main/doh-onlydomains.txt"
|
||||
|
||||
# File output zona
|
||||
FILE_TRUSTPOSITIF="/etc/bind/zones/trustpositif.zones"
|
||||
FILE_WHITELIST="/etc/bind/zones/whitelist.zones"
|
||||
FILE_SAFESEARCH="/etc/bind/zones/safesearch.zones"
|
||||
|
||||
# CNAME targets
|
||||
CNAME_TRUSTPOSITIF="lamanlabuh.resolver.id."
|
||||
CNAME_SAFESEARCH="forcesafesearch.google.com."
|
||||
|
||||
# Temporary files
|
||||
TMP_DIR="/tmp/rpz_updater_$$"
|
||||
TMP_TRUSTPOSITIF="$TMP_DIR/trustpositif_domains.txt"
|
||||
TMP_TRUSTPOSITIF_CLEAN="$TMP_DIR/trustpositif_cleaned.txt"
|
||||
TMP_WHITELIST="$TMP_DIR/whitelist_domains.txt"
|
||||
TMP_SAFESEARCH="$TMP_DIR/safesearch_domains.txt"
|
||||
TMP_DOH_WHITELIST="$TMP_DIR/doh_whitelist.txt"
|
||||
TMP_COMBINED_WHITELIST="$TMP_DIR/combined_whitelist.txt"
|
||||
|
||||
# Konfigurasi
|
||||
ENABLE_DOH_WHITELIST=true # Set false untuk menonaktifkan pembersihan DoH
|
||||
ENABLE_CUSTOM_WHITELIST=true # Set false untuk menonaktifkan whitelist kustom
|
||||
CUSTOM_WHITELIST_FILE="" # Path ke file whitelist kustom lokal (opsional)
|
||||
|
||||
# Fungsi untuk menampilkan pesan berwarna
|
||||
function cetak_pesan() {
|
||||
echo -e "$1$2${RESET}"
|
||||
}
|
||||
|
||||
# Fungsi cleanup saat exit
|
||||
cleanup() {
|
||||
if [[ -d "$TMP_DIR" ]]; then
|
||||
rm -rf "$TMP_DIR"
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# Buat direktori temporary
|
||||
mkdir -p "$TMP_DIR"
|
||||
|
||||
cetak_pesan "$CYAN" "PEMBAHARUAN DATABASE INTERNET SEHAT TRUSTPOSITIF DIPROSES"
|
||||
|
||||
# Banner dengan warna
|
||||
echo -e "${MAGENTA}
|
||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
|
||||
( H | A | R | R | Y ) ( D | S ) ( A | L | S | Y | U | N | D | A | W | Y )
|
||||
\_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
|
||||
${RESET}"
|
||||
|
||||
echo -e "${CYAN}############################################################################${RESET}"
|
||||
echo -e "${CYAN}## ##${RESET}"
|
||||
echo -e "${CYAN}##${MERAH} PEMBAHARUAN DATABASE INTERNET SEHAT TRUSTPOSITIF ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}##${KUNING} SUPPORT JUGA GOOGLE SAFESEARCH & WHITELIST ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}##${MAGENTA} UNTUK DNS FILTER ISP ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}##${HIJAU_TUA} + WHITELIST CLEANER (DOH/DOT DOMAINS REMOVAL) ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}## ##${RESET}"
|
||||
echo -e "${CYAN}##${HIJAU} SCRIPT INI DIBUAT & DIMODIFIKASI OLEH HARRY DS ALSYUNDAWY ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}##${BIRU} ALSYUNDAWY@GMAIL.COM | 08568515212 | ALSYUNDAWY.COM ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}##${KUNING} PADA TANGGAL 02 JANUARY 2025 ${CYAN}##${RESET}"
|
||||
echo -e "${CYAN}## ##${RESET}"
|
||||
echo -e "${CYAN}############################################################################${RESET}"
|
||||
|
||||
# Fungsi untuk membuat header RPZ
|
||||
generate_rpz_header() {
|
||||
cat << EOF
|
||||
;
|
||||
; RPZ File Generated by TRUSTPOSITIF-RPZ-DNS-ZONE-UPDATER.SH
|
||||
; Dibuat pada $(date '+%Y-%m-%d %H:%M:%S')
|
||||
; Author: HARRY DERTIN SUTISNA ALSYUNDAWY
|
||||
; Email: alsyundawy@gmail.com
|
||||
; WhatsApp/Telegram/Call: +628568515212 & +6281298986464 (WHATSAPP/TELEGRAM/CALL)
|
||||
; HOMEPAGE: https://github.com/alsyundawy
|
||||
;
|
||||
;
|
||||
\$TTL 300
|
||||
@ IN SOA dns.domain.net.id. hostmaster.domain.net.id. (
|
||||
$(date '+%Y%m%d%H') ; Serial
|
||||
10800 ; Refresh
|
||||
120 ; Retry
|
||||
604800 ; Expire
|
||||
3600 ) ; Minimum TTL
|
||||
@ IN NS lamanlabuh.resolver.id.
|
||||
EOF
|
||||
}
|
||||
|
||||
#===============================================================================
|
||||
# FUNGSI WHITELIST CLEANER - Menghapus domain whitelist dari blacklist
|
||||
# Dioptimasi untuk file besar dengan penggunaan memory dan CPU yang efisien
|
||||
#===============================================================================
|
||||
|
||||
# Fungsi untuk membersihkan dan normalisasi file domain
|
||||
clean_domain_file() {
|
||||
local input_file="$1"
|
||||
local output_file="$2"
|
||||
local file_type="$3"
|
||||
|
||||
cetak_pesan "$ABUABU" " ├─ Membersihkan $file_type..."
|
||||
|
||||
# Handle berbagai format:
|
||||
# - Hapus baris komentar (dimulai dengan #, !, //)
|
||||
# - Hapus baris kosong
|
||||
# - Lowercase semua domain
|
||||
# - Trim whitespace
|
||||
# - Hapus karakter CR (Windows line endings)
|
||||
# - Sort dan unique
|
||||
sed 's/\r$//' "$input_file" | \
|
||||
awk '
|
||||
{
|
||||
# Trim leading/trailing whitespace
|
||||
gsub(/^[[:space:]]+|[[:space:]]+$/, "")
|
||||
|
||||
# Skip empty lines
|
||||
if (length($0) == 0) next
|
||||
|
||||
# Skip comment lines
|
||||
if (/^[#!]/ || /^\/\//) next
|
||||
|
||||
# Convert to lowercase and print
|
||||
print tolower($0)
|
||||
}
|
||||
' | LC_ALL=C sort -u > "$output_file"
|
||||
|
||||
local count=$(wc -l < "$output_file")
|
||||
cetak_pesan "$ABUABU" " │ └─ $file_type: $count domain unik"
|
||||
}
|
||||
|
||||
# Fungsi untuk mengunduh whitelist DoH/DoT
|
||||
download_doh_whitelist() {
|
||||
if [[ "$ENABLE_DOH_WHITELIST" != "true" ]]; then
|
||||
cetak_pesan "$KUNING" " ├─ [SKIP] DoH whitelist dinonaktifkan"
|
||||
return 0
|
||||
fi
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Mengunduh DoH/DoT whitelist..."
|
||||
|
||||
if curl -k -s --connect-timeout 30 --max-time 120 "$URL_DOH_WHITELIST" -o "$TMP_DOH_WHITELIST.raw"; then
|
||||
# Validasi file bukan HTML
|
||||
if head -20 "$TMP_DOH_WHITELIST.raw" | grep -qi "<!DOCTYPE\|<html"; then
|
||||
cetak_pesan "$KUNING" " │ └─ [WARN] File DoH adalah HTML, skip..."
|
||||
return 1
|
||||
fi
|
||||
clean_domain_file "$TMP_DOH_WHITELIST.raw" "$TMP_DOH_WHITELIST" "DoH whitelist"
|
||||
return 0
|
||||
else
|
||||
cetak_pesan "$KUNING" " │ └─ [WARN] Gagal mengunduh DoH whitelist, lanjut tanpa DoH..."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk menggabungkan semua whitelist
|
||||
combine_whitelists() {
|
||||
cetak_pesan "$HIJAU" " ├─ Menggabungkan semua whitelist..."
|
||||
|
||||
local whitelist_files=()
|
||||
|
||||
# Tambahkan whitelist utama jika ada
|
||||
if [[ -f "$TMP_WHITELIST" ]]; then
|
||||
whitelist_files+=("$TMP_WHITELIST")
|
||||
fi
|
||||
|
||||
# Tambahkan DoH whitelist jika ada
|
||||
if [[ -f "$TMP_DOH_WHITELIST" ]]; then
|
||||
whitelist_files+=("$TMP_DOH_WHITELIST")
|
||||
fi
|
||||
|
||||
# Tambahkan custom whitelist jika ada
|
||||
if [[ "$ENABLE_CUSTOM_WHITELIST" == "true" && -n "$CUSTOM_WHITELIST_FILE" && -f "$CUSTOM_WHITELIST_FILE" ]]; then
|
||||
cetak_pesan "$ABUABU" " │ ├─ Menambahkan custom whitelist: $CUSTOM_WHITELIST_FILE"
|
||||
clean_domain_file "$CUSTOM_WHITELIST_FILE" "$TMP_DIR/custom_whitelist_clean.txt" "custom whitelist"
|
||||
whitelist_files+=("$TMP_DIR/custom_whitelist_clean.txt")
|
||||
fi
|
||||
|
||||
# Gabungkan semua whitelist
|
||||
if [[ ${#whitelist_files[@]} -gt 0 ]]; then
|
||||
cat "${whitelist_files[@]}" | LC_ALL=C sort -u > "$TMP_COMBINED_WHITELIST"
|
||||
local total=$(wc -l < "$TMP_COMBINED_WHITELIST")
|
||||
cetak_pesan "$ABUABU" " │ └─ Total whitelist gabungan: $total domain"
|
||||
else
|
||||
touch "$TMP_COMBINED_WHITELIST"
|
||||
cetak_pesan "$KUNING" " │ └─ [WARN] Tidak ada whitelist untuk digabungkan"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi utama untuk membersihkan blacklist dari whitelist
|
||||
# Menggunakan metode yang optimal berdasarkan ukuran file
|
||||
remove_whitelist_from_blacklist() {
|
||||
local blacklist_file="$1"
|
||||
local output_file="$2"
|
||||
|
||||
if [[ ! -f "$TMP_COMBINED_WHITELIST" ]] || [[ ! -s "$TMP_COMBINED_WHITELIST" ]]; then
|
||||
cetak_pesan "$KUNING" " ├─ [SKIP] Tidak ada whitelist, blacklist tidak dimodifikasi"
|
||||
cp "$blacklist_file" "$output_file"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local wl_count=$(wc -l < "$TMP_COMBINED_WHITELIST")
|
||||
local bl_count=$(wc -l < "$blacklist_file")
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Menghapus $wl_count domain whitelist dari $bl_count domain blacklist..."
|
||||
|
||||
# Pilih metode berdasarkan ukuran file
|
||||
if [[ $wl_count -lt 100000 ]]; then
|
||||
# Metode AWK - optimal untuk whitelist kecil-medium
|
||||
cetak_pesan "$ABUABU" " │ ├─ Metode: AWK hash lookup"
|
||||
|
||||
awk '
|
||||
NR==FNR {
|
||||
whitelist[$0] = 1
|
||||
next
|
||||
}
|
||||
{
|
||||
if (!($0 in whitelist)) {
|
||||
print $0
|
||||
}
|
||||
}
|
||||
' "$TMP_COMBINED_WHITELIST" "$blacklist_file" > "$output_file"
|
||||
|
||||
elif [[ $wl_count -lt 500000 ]]; then
|
||||
# Metode GREP - optimal untuk whitelist medium-besar
|
||||
cetak_pesan "$ABUABU" " │ ├─ Metode: grep -vFxf"
|
||||
|
||||
LC_ALL=C grep -vFxf "$TMP_COMBINED_WHITELIST" "$blacklist_file" > "$output_file" || true
|
||||
|
||||
else
|
||||
# Metode COMM - optimal untuk file sangat besar (hemat memory)
|
||||
cetak_pesan "$ABUABU" " │ ├─ Metode: comm (memory efficient)"
|
||||
|
||||
# Pastikan kedua file sudah sorted
|
||||
LC_ALL=C sort -u "$blacklist_file" -o "$blacklist_file.sorted"
|
||||
LC_ALL=C comm -23 "$blacklist_file.sorted" "$TMP_COMBINED_WHITELIST" > "$output_file"
|
||||
rm -f "$blacklist_file.sorted"
|
||||
fi
|
||||
|
||||
local new_count=$(wc -l < "$output_file")
|
||||
local removed=$((bl_count - new_count))
|
||||
|
||||
cetak_pesan "$HIJAU_TUA" " │ └─ Hasil: $removed domain dihapus, tersisa $new_count domain"
|
||||
}
|
||||
|
||||
#===============================================================================
|
||||
# FUNGSI GENERATOR RPZ
|
||||
#===============================================================================
|
||||
|
||||
# Fungsi untuk mengunduh dan memproses TrustPositif
|
||||
generate_trustpositif_rpz() {
|
||||
cetak_pesan "$HIJAU" "[1/3] Memproses TrustPositif Blacklist..."
|
||||
|
||||
# Unduh data TrustPositif
|
||||
cetak_pesan "$HIJAU" " ├─ Mengunduh data TrustPositif..."
|
||||
if ! curl -k -s --connect-timeout 30 --max-time 300 "$URL_TRUSTPOSITIF" -o "$TMP_TRUSTPOSITIF.raw"; then
|
||||
cetak_pesan "$MERAH" "[ERROR] Gagal mengunduh data TrustPositif."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validasi file
|
||||
if head -20 "$TMP_TRUSTPOSITIF.raw" | grep -qi "<!DOCTYPE\|<html"; then
|
||||
cetak_pesan "$MERAH" "[ERROR] File TrustPositif adalah HTML, bukan text!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Bersihkan dan normalisasi blacklist
|
||||
clean_domain_file "$TMP_TRUSTPOSITIF.raw" "$TMP_TRUSTPOSITIF" "blacklist TrustPositif"
|
||||
|
||||
# Unduh DoH whitelist
|
||||
download_doh_whitelist
|
||||
|
||||
# Unduh dan proses whitelist utama untuk digabungkan
|
||||
cetak_pesan "$HIJAU" " ├─ Mengunduh whitelist utama..."
|
||||
if curl -k -s --connect-timeout 30 --max-time 120 "$URL_WHITELIST" -o "$TMP_WHITELIST.raw"; then
|
||||
clean_domain_file "$TMP_WHITELIST.raw" "$TMP_WHITELIST.clean" "whitelist utama"
|
||||
# Simpan untuk penggabungan
|
||||
cp "$TMP_WHITELIST.clean" "$TMP_DIR/main_whitelist_for_combine.txt"
|
||||
fi
|
||||
|
||||
# Gabungkan semua whitelist (DoH + whitelist utama + custom)
|
||||
# Untuk pembersihan, kita gabungkan whitelist utama juga
|
||||
if [[ -f "$TMP_DIR/main_whitelist_for_combine.txt" ]]; then
|
||||
cat "$TMP_DIR/main_whitelist_for_combine.txt" >> "$TMP_DOH_WHITELIST" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Buat combined whitelist
|
||||
if [[ -f "$TMP_DOH_WHITELIST" ]]; then
|
||||
LC_ALL=C sort -u "$TMP_DOH_WHITELIST" -o "$TMP_COMBINED_WHITELIST"
|
||||
else
|
||||
touch "$TMP_COMBINED_WHITELIST"
|
||||
fi
|
||||
|
||||
# Hapus domain whitelist dari blacklist
|
||||
remove_whitelist_from_blacklist "$TMP_TRUSTPOSITIF" "$TMP_TRUSTPOSITIF_CLEAN"
|
||||
|
||||
# Konversi ke format RPZ
|
||||
cetak_pesan "$HIJAU" " ├─ Mengonversi ke format RPZ..."
|
||||
{
|
||||
generate_rpz_header
|
||||
awk -v cname="$CNAME_TRUSTPOSITIF" '
|
||||
{
|
||||
print $1 " 3600 IN CNAME " cname
|
||||
print "*." $1 " 3600 IN CNAME " cname
|
||||
}' "$TMP_TRUSTPOSITIF_CLEAN"
|
||||
} > "$FILE_TRUSTPOSITIF"
|
||||
|
||||
local final_count=$(wc -l < "$TMP_TRUSTPOSITIF_CLEAN")
|
||||
cetak_pesan "$HIJAU" " └─ [OK] TrustPositif RPZ: $final_count domain aktif"
|
||||
}
|
||||
|
||||
# Fungsi untuk mengunduh dan memproses Whitelist (untuk RPZ passthru)
|
||||
generate_whitelist_rpz() {
|
||||
cetak_pesan "$HIJAU" "[2/3] Memproses Whitelist RPZ..."
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Mengunduh data Whitelist..."
|
||||
if ! curl -k -s --connect-timeout 30 --max-time 120 "$URL_WHITELIST" -o "$TMP_WHITELIST.raw"; then
|
||||
cetak_pesan "$MERAH" "[ERROR] Gagal mengunduh data Whitelist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Bersihkan whitelist
|
||||
clean_domain_file "$TMP_WHITELIST.raw" "$TMP_WHITELIST" "whitelist RPZ"
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Mengonversi ke format RPZ passthru..."
|
||||
{
|
||||
generate_rpz_header
|
||||
awk '/^[a-zA-Z0-9.-]+$/ {
|
||||
print $1 " 3600 IN CNAME rpz-passthru."
|
||||
print "*." $1 " 3600 IN CNAME rpz-passthru."
|
||||
}' "$TMP_WHITELIST"
|
||||
} > "$FILE_WHITELIST"
|
||||
|
||||
local wl_count=$(wc -l < "$TMP_WHITELIST")
|
||||
cetak_pesan "$HIJAU" " └─ [OK] Whitelist RPZ: $wl_count domain passthru"
|
||||
}
|
||||
|
||||
# Fungsi untuk mengunduh dan memproses SafeSearch
|
||||
generate_safesearch_rpz() {
|
||||
cetak_pesan "$HIJAU" "[3/3] Memproses Google SafeSearch..."
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Mengunduh Google SafeSearch domains..."
|
||||
if ! curl -k -s --connect-timeout 30 --max-time 60 "$URL_SAFESEARCH" | grep -oE '([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}' > "$TMP_SAFESEARCH"; then
|
||||
cetak_pesan "$MERAH" "[ERROR] Gagal mengunduh Google SafeSearch domains."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cetak_pesan "$HIJAU" " ├─ Mengonversi ke format RPZ..."
|
||||
{
|
||||
generate_rpz_header
|
||||
awk -v cname="$CNAME_SAFESEARCH" '/^[^#]/ {print $1 " 3600 IN CNAME " cname}' "$TMP_SAFESEARCH"
|
||||
} > "$FILE_SAFESEARCH"
|
||||
|
||||
local ss_count=$(wc -l < "$TMP_SAFESEARCH")
|
||||
cetak_pesan "$HIJAU" " └─ [OK] SafeSearch RPZ: $ss_count domain"
|
||||
}
|
||||
|
||||
# Fungsi untuk memeriksa file zona
|
||||
check_zone_files() {
|
||||
cetak_pesan "$CYAN" "Memeriksa validitas file zona..."
|
||||
|
||||
for file in "$FILE_TRUSTPOSITIF" "$FILE_WHITELIST" "$FILE_SAFESEARCH"; do
|
||||
zone_name=$(basename "$file" .zones).zone
|
||||
if ! named-checkzone "$zone_name" "$file" > /dev/null 2>&1; then
|
||||
cetak_pesan "$MERAH" "[ERROR] Kesalahan dalam file zona $zone_name."
|
||||
exit 1
|
||||
fi
|
||||
cetak_pesan "$ABUABU" " ├─ $zone_name: OK"
|
||||
done
|
||||
|
||||
cetak_pesan "$HIJAU" " └─ Semua file zona valid"
|
||||
}
|
||||
|
||||
# Fungsi untuk me-reload BIND9
|
||||
reload_bind9() {
|
||||
cetak_pesan "$CYAN" "Me-reload BIND9 untuk menerapkan perubahan..."
|
||||
|
||||
# Gunakan rndc jika tersedia, karena lebih cepat daripada systemctl
|
||||
if command -v rndc > /dev/null 2>&1; then
|
||||
if rndc reload > /dev/null 2>&1; then
|
||||
cetak_pesan "$HIJAU" "[BERHASIL] BIND9 berhasil di-reload menggunakan rndc."
|
||||
else
|
||||
cetak_pesan "$MERAH" "[ERROR] Gagal me-reload BIND9 menggunakan rndc."
|
||||
exit 1
|
||||
fi
|
||||
elif command -v systemctl > /dev/null 2>&1; then
|
||||
if systemctl reload bind9 > /dev/null 2>&1; then
|
||||
cetak_pesan "$HIJAU" "[BERHASIL] BIND9 berhasil di-reload menggunakan systemctl."
|
||||
else
|
||||
cetak_pesan "$MERAH" "[ERROR] Gagal me-reload BIND9 menggunakan systemctl."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
cetak_pesan "$MERAH" "[ERROR] Tidak dapat menemukan perintah 'rndc' atau 'systemctl'."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk menampilkan ringkasan
|
||||
show_summary() {
|
||||
echo ""
|
||||
echo -e "${CYAN}============================================================================${RESET}"
|
||||
echo -e "${CYAN} RINGKASAN UPDATE ${RESET}"
|
||||
echo -e "${CYAN}============================================================================${RESET}"
|
||||
|
||||
if [[ -f "$TMP_TRUSTPOSITIF_CLEAN" ]]; then
|
||||
local tp_count=$(wc -l < "$TMP_TRUSTPOSITIF_CLEAN")
|
||||
echo -e " ${PUTIH}TrustPositif Blacklist : ${HIJAU}$tp_count${PUTIH} domain${RESET}"
|
||||
fi
|
||||
|
||||
if [[ -f "$TMP_WHITELIST" ]]; then
|
||||
local wl_count=$(wc -l < "$TMP_WHITELIST")
|
||||
echo -e " ${PUTIH}Whitelist Passthru : ${HIJAU}$wl_count${PUTIH} domain${RESET}"
|
||||
fi
|
||||
|
||||
if [[ -f "$TMP_SAFESEARCH" ]]; then
|
||||
local ss_count=$(wc -l < "$TMP_SAFESEARCH")
|
||||
echo -e " ${PUTIH}Google SafeSearch : ${HIJAU}$ss_count${PUTIH} domain${RESET}"
|
||||
fi
|
||||
|
||||
if [[ -f "$TMP_COMBINED_WHITELIST" ]]; then
|
||||
local combined=$(wc -l < "$TMP_COMBINED_WHITELIST")
|
||||
echo -e " ${PUTIH}Domain Whitelist Total : ${KUNING}$combined${PUTIH} (dihapus dari blacklist)${RESET}"
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}============================================================================${RESET}"
|
||||
echo -e " ${PUTIH}Waktu selesai: ${HIJAU}$(date '+%Y-%m-%d %H:%M:%S')${RESET}"
|
||||
echo -e "${CYAN}============================================================================${RESET}"
|
||||
}
|
||||
|
||||
# Fungsi utama
|
||||
main() {
|
||||
local start_time=$(date +%s)
|
||||
|
||||
cetak_pesan "$CYAN" "MEMULAI PEMBARUAN DATABASE DNS..."
|
||||
echo ""
|
||||
|
||||
generate_trustpositif_rpz || exit 1
|
||||
echo ""
|
||||
generate_whitelist_rpz || exit 1
|
||||
echo ""
|
||||
generate_safesearch_rpz || exit 1
|
||||
echo ""
|
||||
|
||||
check_zone_files || exit 1
|
||||
echo ""
|
||||
|
||||
cetak_pesan "$HIJAU" "[BERHASIL] Semua file zona berhasil diperbarui dan diverifikasi."
|
||||
|
||||
# Me-reload BIND9
|
||||
reload_bind9
|
||||
|
||||
# Tampilkan ringkasan
|
||||
show_summary
|
||||
|
||||
local end_time=$(date +%s)
|
||||
local elapsed=$((end_time - start_time))
|
||||
cetak_pesan "$HIJAU" "Total waktu eksekusi: ${elapsed} detik"
|
||||
}
|
||||
|
||||
# Jalankan fungsi utama
|
||||
main
|
||||
Reference in New Issue
Block a user