# GeoGuard by dotmix
# Для большей эффективности скачайте скрипт прямо с сервера, команда:
# `wget https://files.dotmix.pw/scripts/geoguard/script.sh`

# [Внимание]
# Скрипт позаимствован у slvaik123123123, и исправлен. Я не присваиваю себе права на этот скрипт

IPSET="ipset"
IPTABLES="iptables"
SETNAME="geoipblock"
FILENAME="ip.txt"

# Установка утилиты IpTables (работает на Debian/Ubuntu)
apt install $IPTABLES -y

# Очистка старых правил
# Если что-то пойдет не так: iptables -F
$IPTABLES -D INPUT -m set --match-set $SETNAME src -p tcp --dport 25565 -j DROP
$IPSET flush $SETNAME
$IPSET destroy $SETNAME
rm -f $FILENAME

# Скачивание списков нежелательных IP-адресов
wget -O $FILENAME http://www.ipdeny.com/ipblocks/data/countries/{br,us,cn,jp,kr,vn,ar,ec,id,np,es,ir,la}.zone

# Создаем набор
$IPSET create $SETNAME -exist nethash hashsize 1024 maxelem $(wc -l < "$FILENAME")

echo "[GeoGuard] Импорт нежелательных IP-адресов, это может занять некоторое время..."
while read p; do
  $IPSET add $SETNAME $p
done <$FILENAME
echo "[GeoGuard] IP-адреса успешно импортированы, сервер защищен!"
$IPTABLES -I INPUT -m set --match-set $SETNAME src -p tcp --dport 25565 -j DROP
echo "[GeoGuard] Если скрипт не помог, используйте эти команды:"
echo "1. iptables -A INPUT -p tcp --syn --dport 25565 -m connlimit --connlimit-above 2 -j DROP"
echo "2. echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle"
echo "3. echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse"
