repositories / bugabinga.net
bugabinga.net
personal infrastructure for bugabinga!
owned by admin
scripts/remote/apply-valheim-klops-firewall.sh
Raw#!/usr/bin/env bash
set -euo pipefail
[[ "$#" -eq 2 ]] || {
echo "usage: apply-valheim-klops-firewall.sh WG_IPV4 WG_IPV6" >&2
exit 2
}
wg_ipv4="$1"
wg_ipv6="$2"
[[ "$wg_ipv4" = 10.100.0.2 && "$wg_ipv6" = fd00:100::2 ]] || {
echo "refusing invalid Valheim firewall input" >&2
exit 2
}
zone="$(firewall-cmd --get-zone-of-interface=wg0 2>/dev/null || true)"
[[ -n "$zone" && "$zone" != "no zone" ]] || zone="$(firewall-cmd --get-default-zone)"
for family in ipv4 ipv6; do
address="$wg_ipv4"
[[ "$family" = ipv6 ]] && address="$wg_ipv6"
rule="rule family=${family} destination address=${address} port port=2456-2457 protocol=udp accept"
firewall-cmd --permanent --zone="$zone" --query-rich-rule="$rule" >/dev/null || firewall-cmd --permanent --zone="$zone" --add-rich-rule="$rule"
firewall-cmd --zone="$zone" --query-rich-rule="$rule" >/dev/null || firewall-cmd --zone="$zone" --add-rich-rule="$rule"
done
printf 'changed: firewalld runtime and permanent Valheim rules in zone %s\n' "$zone"