#!/bin/bash usage() { echo "Usage: $0 [-f dbp.ini] -d [ban|unban] -i IP" 1>&2; exit 1; } while getopts ":f:d:i:" o; do case "${o}" in f) INIFILE=${OPTARG} ;; d) DO_BAN=${OPTARG} ;; i) BAN_IP=${OPTARG} ;; *) usage ;; esac done shift $((OPTIND-1)) if [ -z "${INIFILE}" ] || [ -z "${DO_BAN}" ] || [ -z "${BAN_IP}" ]; then usage fi MYSTIC_DIR="@MYSTIC_DIR@" TMP_DIR=$(mktemp -d) BAN_UNBAN_ENABLE=`${MYSTIC_DIR}/inimod r ${INIFILE} -S General -k BanUnbanIP --silent` BAN_UNBAN_SERVICE=`${MYSTIC_DIR}/inimod r ${INIFILE} -S BanUnbanIP -k BanningService --silent` BAN_UNBAN_MYSTIC=`${MYSTIC_DIR}/inimod r ${INIFILE} -S BanUnbanIP -k UnbanInMystic --silent` if [ $BAN_UNBAN_ENABLE = "true" ]; then if [ $BAN_UNBAN_SERVICE = "fail2ban" ]; then if [ $DO_BAN = "ban" ]; then /usr/bin/fail2ban-client set mysticbbs banip ${BAN_IP} fi if [ $DO_BAN = "unban" ]; then /usr/bin/fail2ban-client set mysticbbs unbanip ${BAN_IP} if [ $BAN_UNBAN_MYSTIC = "true" ]; then sed -e "/${BAN_IP}/d" -i ${MYSTIC_DIR}/data/denylist.txt fi fi fi if [ $BAN_UNBAN_SERVICE = "ipban" ]; then if [ $DO_BAN = "ban" ]; then echo ${BAN_IP} >> /opt/ipban/ban.txt fi if [ $DO_BAN = "unban" ]; then echo ${BAN_IP} >> /opt/ipban/unban.txt if [ $BAN_UNBAN_MYSTIC = "true" ]; then sed -e "/${BAN_IP}/d" -i ${MYSTIC_DIR}/data/denylist.txt fi fi fi fi exit 0