87 lines
2.3 KiB
Bash
87 lines
2.3 KiB
Bash
#!/bin/sh
|
|
|
|
is_alert5_enabled() {
|
|
# It's not very clear how to reliably detect if a SysVinit script
|
|
# wrapped in a systemd unit is enabled or not.
|
|
# Even when the script is not started in any run level, systemd says "active".
|
|
# So we test the SysVinit script path:
|
|
# if present, we test for an rc2.d symlink
|
|
# if missing, we ask systemd if a unit is active or not.
|
|
if test -f /etc/init.d/alert5; then
|
|
test -f /etc/rc2.d/S*alert5
|
|
else
|
|
systemctl is-enabled alert5 | grep -q "^enabled$"
|
|
fi
|
|
}
|
|
|
|
is_minifirewall_enabled() {
|
|
# TODO: instead of nested conditionals, we could loop with many possible paths
|
|
# and grep the first found, or error if none is found
|
|
if [ -f /etc/systemd/system/minifirewall.service ]; then
|
|
systemctl is-enabled minifirewall 2>&1 > /dev/null
|
|
else
|
|
if test -f /etc/rc2.d/S*alert5; then
|
|
grep -q "^/etc/init.d/minifirewall" /etc/rc2.d/S*alert5
|
|
else
|
|
if test -f /usr/share/scripts/alert5.sh; then
|
|
grep -q "^/etc/init.d/minifirewall" /usr/share/scripts/alert5.sh
|
|
else
|
|
return_critical "No Alert5 scripts has been found."
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
is_minifirewall_started() {
|
|
if [ -f /etc/systemd/system/minifirewall.service ]; then
|
|
systemctl is-active minifirewall 2>&1 > /dev/null
|
|
else
|
|
if test -x /usr/share/scripts/minifirewall_status; then
|
|
/usr/share/scripts/minifirewall_status > /dev/null
|
|
else
|
|
/sbin/iptables -L -n | grep -q -E "^(DROP\s+(udp|17)|ACCEPT\s+(icmp|1)))\s+--\s+0\.0\.0\.0\/0\s+0\.0\.0\.0\/0\s*$"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
return_critical() {
|
|
echo "CRITICAL: $1"
|
|
exit 2
|
|
}
|
|
|
|
return_warning() {
|
|
echo "WARNING: $1"
|
|
exit 1
|
|
}
|
|
|
|
return_ok() {
|
|
echo "OK: $1"
|
|
exit 0
|
|
}
|
|
|
|
main() {
|
|
if is_alert5_enabled; then
|
|
if is_minifirewall_enabled; then
|
|
if is_minifirewall_started; then
|
|
return_ok "Minifirewall is started."
|
|
else
|
|
return_critical "Minifirewall is not started."
|
|
fi
|
|
else
|
|
if is_minifirewall_started; then
|
|
return_warning "Minifirewall is started, but disabled in alert5 or systemd."
|
|
else
|
|
return_ok "Minifirewall is not started, but disabled in alert5 or systemd."
|
|
fi
|
|
fi
|
|
else
|
|
if is_minifirewall_started; then
|
|
return_warning "Minifirewall is started, but Alert5 script is not enabled."
|
|
else
|
|
return_ok "Minifirewall is not started and Alert5 script is not enabled."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
main
|