#!/bin/bash

IP_LIST_URL="http://45.88.0.101/newdeny3.txt"

echo "[+] IP listesi indiriliyor..."
IP_RAW=$(curl -s "$IP_LIST_URL")

echo "[+] IP listesi filtreleniyor ve temizleniyor..."
# deny ve ; işaretlerini kaldır, boş satırları at
IP_CLEAN=$(echo "$IP_RAW" | sed -e 's/^deny //' -e 's/;//' | grep -v '^$')

if [[ -z "$IP_CLEAN" ]]; then
  echo "Hata: Geçerli IP bloğu bulunamadı veya liste boş!"
  exit 1
fi

echo "[+] nftables tablosu ve setleri kontrol ediliyor..."

# Tablo ve setleri oluştur (varsa hata vermesin)
nft add table inet filter 2>/dev/null || true
nft add set inet filter blocked_ipv4 { type ipv4_addr\; flags interval\; } 2>/dev/null || true
nft add set inet filter blocked_ipv6 { type ipv6_addr\; flags interval\; } 2>/dev/null || true

echo "[+] Eski IP blokları setlerden temizleniyor..."
# Setleri boşalt (set reset)
nft flush set inet filter blocked_ipv4
nft flush set inet filter blocked_ipv6

echo "[+] IP blokları nftables setine ekleniyor..."

while IFS= read -r ip; do
  if [[ "$ip" == *:* ]]; then
    # IPv6
    nft add element inet filter blocked_ipv6 { "$ip" } 2>/dev/null || true
  else
    # IPv4
    nft add element inet filter blocked_ipv4 { "$ip" } 2>/dev/null || true
  fi
done <<< "$IP_CLEAN"

echo "[+] İşlem tamamlandı."
