This commit is contained in:
parent
8a6de01f48
commit
b75ecef339
31
start.sh
31
start.sh
@ -9,7 +9,7 @@ echo -e "
|
||||
██║░░██║██║░╚███║██████╔╝██████╔╝╚█████╔╝██████╔╝
|
||||
╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░╚═════╝░░╚════╝░╚═════╝░"
|
||||
|
||||
COUNTRIES="af es"
|
||||
COUNTRIES="cn ru us in br id vn pk tr ir eg bd mx za ua kr ng ph"
|
||||
ZONE_DIR="zone"
|
||||
|
||||
mkdir -p "$ZONE_DIR"
|
||||
@ -19,56 +19,49 @@ function add_iptables_rule() {
|
||||
local set_name=$2
|
||||
|
||||
if iptables -t raw -C "$chain" -m set --match-set "$set_name" src -j DROP 2>/dev/null; then
|
||||
echo "Regra iptables para ipset '$set_name' já existe na cadeia $chain."
|
||||
echo "Regra iptables já existe: $chain → $set_name"
|
||||
else
|
||||
echo "Inserindo regra iptables para ipset '$set_name' na cadeia $chain..."
|
||||
echo "Inserindo regra iptables: $chain → $set_name"
|
||||
iptables -t raw -I "$chain" -m set --match-set "$set_name" src -j DROP
|
||||
fi
|
||||
}
|
||||
|
||||
for country in $COUNTRIES; do
|
||||
url="https://www.ipdeny.com/ipblocks/data/countries/${country}.zone"
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Tentando baixar lista de IPs para o país: $country"
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Baixando lista IPs: $country"
|
||||
|
||||
tmp_file="${ZONE_DIR}/${country}.zone.tmp"
|
||||
target_file="${ZONE_DIR}/${country}.zone"
|
||||
|
||||
if curl -sSf -o "$tmp_file" "$url"; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Download concluído para $country."
|
||||
|
||||
if [ -f "$target_file" ] && cmp -s "$tmp_file" "$target_file"; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Arquivo para $country não mudou. Mantendo versão atual."
|
||||
echo "[$country] Arquivo inalterado."
|
||||
rm "$tmp_file"
|
||||
else
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Arquivo para $country mudou ou não existia. Atualizando..."
|
||||
echo "[$country] Atualizando IPs."
|
||||
mv "$tmp_file" "$target_file"
|
||||
fi
|
||||
else
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Falha no download para $country. Mantendo versão antiga (se existir)."
|
||||
echo "[$country] Falha no download. Mantendo antigo (se existir)."
|
||||
[ -f "$tmp_file" ] && rm "$tmp_file"
|
||||
continue
|
||||
fi
|
||||
|
||||
if ipset list "$country" &>/dev/null; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] IpSet '$country' já existe. Limpando entradas antigas..."
|
||||
echo "[$country] Limpando ipset antigo..."
|
||||
ipset flush "$country"
|
||||
else
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Criando IpSet '$country'."
|
||||
echo "[$country] Criando novo ipset..."
|
||||
ipset create "$country" hash:net
|
||||
fi
|
||||
|
||||
while read -r subnet; do
|
||||
if ! ipset add "$country" "$subnet" -exist; then
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Aviso: falha ao adicionar $subnet ao ipset $country"
|
||||
fi
|
||||
ipset add "$country" "$subnet" -exist || echo "Falha ao adicionar: $subnet"
|
||||
done < "$target_file"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Configuração do IpSet concluída para o país $country."
|
||||
|
||||
add_iptables_rule PREROUTING "$country"
|
||||
add_iptables_rule OUTPUT "$country"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Regras iptables configuradas para o país $country."
|
||||
echo "[$country] Proteção configurada."
|
||||
done
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Script concluído."
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ Proteção geográfica concluída!"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user