#!/usr/bin/bash
# usage: ict-firewall PORT/PROTO [PORT/PROTO ...]     e.g. ict-firewall 80/tcp 10000-20000/udp
zone="${ICT_FIREWALL_ZONE:-public}"
[ $# -gt 0 ] || exit 0

if command -v firewall-cmd >/dev/null 2>&1 && firewall-cmd --state >/dev/null 2>&1; then
    for port in "$@"; do
        firewall-cmd --zone="$zone" --add-port="$port" >/dev/null 2>&1 || :
        firewall-cmd --permanent --zone="$zone" --add-port="$port" >/dev/null 2>&1 || :
    done
elif command -v firewall-offline-cmd >/dev/null 2>&1; then
    for port in "$@"; do
        firewall-offline-cmd --zone="$zone" --add-port="$port" >/dev/null 2>&1 || :
    done
    echo "ictcore: firewalld is not running, ports saved to its configuration: $*" >&2
else
    echo "ictcore: firewalld is not installed, open these ports yourself if needed: $*" >&2
fi
exit 0
