#!/bin/bash

# 设置国家代码为泰国
COUNTRY_CODE="TH"
PORT="8800"
IP_FILE="${COUNTRY_CODE}_ipv4.txt"
APNIC_URL="http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest"

# 检查 IP 文件是否存在，如果超过30天没有更新，则重新下载
if [ ! -f "$IP_FILE" ] || [ "$(find "$IP_FILE" -mtime +30 -print)" ]; then
    echo "正在从 APNIC 下载数据..."
    curl -O $APNIC_URL

    # 从下载的文件中提取泰国的 IPv4 地址
    grep "apnic|$COUNTRY_CODE|ipv4" delegated-apnic-latest | cut -d'|' -f 4,5 > "$IP_FILE"
fi

# 为每个 IP 地址生成防火墙规则
while IFS= read -r line
do
    ip=$(echo "$line" | cut -d'|' -f1)
    count=$(echo "$line" | cut -d'|' -f2)
    mask=$(( 32 - $(echo "l($count)/l(2)" | bc -l | awk '{printf "%d\n", $1}') ))

    # 为 IP 地址添加防火墙规则
    sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='$ip/$mask' port port='$PORT' protocol='tcp' accept"
done < "$IP_FILE"

# 重新加载 firewalld 的规则
sudo firewall-cmd --reload

echo "已成功配置只允许泰国 IP 地址通过端口 $PORT"
