| #!/bin/sh /etc/rc.common |
| # Copyright (C) 2021-2022 Gerald Kerma <gandalf@gk2.net> |
| |
| START=99 |
| USE_PROCD=1 |
| NAME=crowdsec-firewall-bouncer |
| PROG=/usr/bin/cs-firewall-bouncer |
| CONFIG=/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml |
| BACKEND=iptables |
| VARCONFIGDIR=/var/etc/crowdsec/bouncers |
| VARCONFIG=/var/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml |
| FW_BACKEND="iptables" |
| |
| service_triggers() { |
| procd_add_reload_trigger crowdsec-firewall-bouncer |
| } |
| |
| init_config() { |
| ## CheckFirewall |
| iptables="true" |
| which iptables > /dev/null |
| FW_BACKEND="" |
| if [[ $? != 0 ]]; then |
| echo "iptables is not present" |
| iptables="false" |
| else |
| FW_BACKEND="iptables" |
| echo "iptables found" |
| fi |
| |
| nftables="true" |
| which nft > /dev/null |
| if [[ $? != 0 ]]; then |
| echo "nftables is not present" |
| nftables="false" |
| else |
| FW_BACKEND="nftables" |
| echo "nftables found" |
| fi |
| |
| if [ "$nftables" = "true" -a "$iptables" = "true" ]; then |
| echo "Found nftables(default) and iptables..." |
| fi |
| |
| if [ "$FW_BACKEND" = "iptables" ]; then |
| which ipset > /dev/null |
| if [[ $? != 0 ]]; then |
| echo "ipset not found, install it !" |
| fi |
| fi |
| BACKEND=$FW_BACKEND |
| |
| # Create tmp dir & permissions if needed |
| if [ ! -d "${VARCONFIGDIR}" ]; then |
| mkdir -m 0755 -p "${VARCONFIGDIR}" |
| fi; |
| |
| cp $CONFIG $VARCONFIG |
| |
| sed -i "s,^\(\s*mode\s*:\s*\).*\$,\1$BACKEND," $VARCONFIG |
| } |
| |
| start_service() { |
| init_config |
| |
| procd_open_instance |
| procd_set_param command "$PROG" -c "$VARCONFIG" |
| procd_close_instance |
| } |