#!/bin/sh # Start fail2ban with the 3x-ipl jail if [ "$XUI_ENABLE_FAIL2BAN" = "true" ]; then LOG_FOLDER="${XUI_LOG_FOLDER:-/var/log/x-ui}" mkdir -p "$LOG_FOLDER" touch "$LOG_FOLDER/3xipl.log" "$LOG_FOLDER/3xipl-banned.log" mkdir -p /etc/fail2ban/jail.d /etc/fail2ban/filter.d /etc/fail2ban/action.d cat > /etc/fail2ban/jail.d/3x-ipl.conf << EOF [3x-ipl] enabled=true backend=auto filter=3x-ipl action=3x-ipl logpath=$LOG_FOLDER/3xipl.log maxretry=1 findtime=32 bantime=30m EOF cat > /etc/fail2ban/filter.d/3x-ipl.conf << 'EOF' [Definition] datepattern = ^%Y/%m/%d %H:%M:%S failregex = \[LIMIT_IP\]\s*Email\s*=\s*.+\s*\|\|\s*Disconnecting OLD IP\s*=\s*\s*\|\|\s*Timestamp\s*=\s*\d+ ignoreregex = EOF cat > /etc/fail2ban/action.d/3x-ipl.conf << EOF [INCLUDES] before = iptables-allports.conf [Definition] actionstart = -N f2b- -A f2b- -j -I -p -j f2b- actionstop = -D -p -j f2b- -X f2b- actioncheck = -n -L | grep -q 'f2b-[ \t]' actionban = -I f2b- 1 -s -j echo "\$(date +"%Y/%m/%d %H:%M:%S") BAN [Email] = [IP] = banned for seconds." >> $LOG_FOLDER/3xipl-banned.log actionunban = -D f2b- -s -j echo "\$(date +"%Y/%m/%d %H:%M:%S") UNBAN [Email] = [IP] = unbanned." >> $LOG_FOLDER/3xipl-banned.log [Init] name = default protocol = tcp chain = INPUT EOF fail2ban-client -x start fi # Run x-ui exec /app/x-ui