#!/bin/bash
# 80-firewall.sh — firewalld: открыть 80/443/21 + ssh, восстановить drop атакующего IP.
set -euo pipefail
cd "$(dirname "$0")"; source ./env.sh
need_root

log "firewalld"
systemctl enable --now firewalld

# Вариант А: восстановить зону public целиком из бэкапа (включает порты + rich-rule drop 45.227.253.15)
if [ -f "$CONFIGS/firewalld/public.xml" ]; then
  cp -af "$CONFIGS/firewalld/public.xml" /etc/firewalld/zones/public.xml
  firewall-cmd --reload
  ok "зона public восстановлена из бэкапа"
else
  # Вариант Б: вручную
  warn "нет public.xml — выставляю порты вручную"
  firewall-cmd --permanent --add-service=ssh
  firewall-cmd --permanent --add-port=80/tcp
  firewall-cmd --permanent --add-port=443/tcp
  firewall-cmd --permanent --add-port=21/tcp     # FTP (если используется обмен 1С/выгрузки; убери, если не нужен)
  firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="45.227.253.15" drop'
  firewall-cmd --reload
fi

log "Итог"
firewall-cmd --list-all
ok "Дальше: 90-services.sh"
