mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-03-01 01:20:49 +03:00
revert x-ui changes
need update for this
This commit is contained in:
parent
39537f6f44
commit
9e433ea4c4
137
x-ui.sh
137
x-ui.sh
@ -56,13 +56,6 @@ elif [[ "${release}" == "debian" ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Declare Variables
|
|
||||||
log_folder="${XUI_LOG_FOLDER:=/var/log}"
|
|
||||||
iplimit_log_path="${log_folder}/3xipl.log"
|
|
||||||
iplimit_banned_log_path="${log_folder}/3xipl-banned.log"
|
|
||||||
|
|
||||||
|
|
||||||
confirm() {
|
confirm() {
|
||||||
if [[ $# > 1 ]]; then
|
if [[ $# > 1 ]]; then
|
||||||
echo && read -p "$1 [Default $2]: " temp
|
echo && read -p "$1 [Default $2]: " temp
|
||||||
@ -703,70 +696,6 @@ run_speedtest() {
|
|||||||
speedtest
|
speedtest
|
||||||
}
|
}
|
||||||
|
|
||||||
create_iplimit_jails() {
|
|
||||||
# Use default bantime if not passed => 5 minutes
|
|
||||||
local bantime="${1:-5}"
|
|
||||||
|
|
||||||
cat << EOF > /etc/fail2ban/jail.d/3x-ipl.conf
|
|
||||||
[3x-ipl]
|
|
||||||
enabled=true
|
|
||||||
filter=3x-ipl
|
|
||||||
action=3x-ipl
|
|
||||||
logpath=${iplimit_log_path}
|
|
||||||
maxretry=3
|
|
||||||
findtime=100
|
|
||||||
bantime=${bantime}m
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF > /etc/fail2ban/filter.d/3x-ipl.conf
|
|
||||||
[Definition]
|
|
||||||
datepattern = ^%%Y/%%m/%%d %%H:%%M:%%S
|
|
||||||
failregex = \[LIMIT_IP\]\s*Email\s*=\s*<F-USER>.+</F-USER>\s*\|\|\s*SRC\s*=\s*<ADDR>
|
|
||||||
ignoreregex =
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF > /etc/fail2ban/action.d/3x-ipl.conf
|
|
||||||
[INCLUDES]
|
|
||||||
before = iptables-common.conf
|
|
||||||
|
|
||||||
[Definition]
|
|
||||||
actionstart = <iptables> -N f2b-<name>
|
|
||||||
<iptables> -A f2b-<name> -j <returntype>
|
|
||||||
<iptables> -I <chain> -p <protocol> -j f2b-<name>
|
|
||||||
|
|
||||||
actionstop = <iptables> -D <chain> -p <protocol> -j f2b-<name>
|
|
||||||
<actionflush>
|
|
||||||
<iptables> -X f2b-<name>
|
|
||||||
|
|
||||||
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
|
|
||||||
|
|
||||||
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
|
|
||||||
echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = <F-USER> [IP] = <ip> banned for <bantime> seconds." >> ${iplimit_banned_log_path}
|
|
||||||
|
|
||||||
actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
|
|
||||||
echo "\$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = <F-USER> [IP] = <ip> unbanned." >> ${iplimit_banned_log_path}
|
|
||||||
|
|
||||||
[Init]
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo -e "${green}Created Ip Limit jail files with a bantime of ${bantime} minutes.${plain}"
|
|
||||||
}
|
|
||||||
|
|
||||||
iplimit_remove_conflicts() {
|
|
||||||
local jail_files=(
|
|
||||||
/etc/fail2ban/jail.conf
|
|
||||||
/etc/fail2ban/jail.local
|
|
||||||
)
|
|
||||||
|
|
||||||
for file in "${jail_files[@]}"; do
|
|
||||||
# Check for [3x-ipl] config in jail file then remove it
|
|
||||||
if test -f "${file}" && grep -qw '3x-ipl' ${file}; then
|
|
||||||
sed -i "/\[3x-ipl\]/,/^$/d" ${file}
|
|
||||||
echo -e "${yellow}Removing conflicts of [3x-ipl] in jail (${file})!${plain}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
iplimit_main() {
|
iplimit_main() {
|
||||||
echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit"
|
echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit"
|
||||||
echo -e "${green}\t2.${plain} Change Ban Duration"
|
echo -e "${green}\t2.${plain} Change Ban Duration"
|
||||||
@ -788,8 +717,9 @@ iplimit_main() {
|
|||||||
2)
|
2)
|
||||||
read -rp "Please enter new Ban Duration in Minutes [default 5]: " NUM
|
read -rp "Please enter new Ban Duration in Minutes [default 5]: " NUM
|
||||||
if [[ $NUM =~ ^[0-9]+$ ]]; then
|
if [[ $NUM =~ ^[0-9]+$ ]]; then
|
||||||
create_iplimit_jail ${NUM}
|
echo -e "\n[3x-ipl]\nenabled=true\nfilter=3x-ipl\naction=3x-ipl\nlogpath=/var/log/3xipl.log\nmaxretry=3\nfindtime=100\nbantime=${NUM}m" > /etc/fail2ban/jail.d/3x-ipl.conf
|
||||||
systemctl restart fail2ban
|
systemctl restart fail2ban
|
||||||
|
echo -e "${green}Bantime set to ${NUM} minutes successfully.${plain}"
|
||||||
else
|
else
|
||||||
echo -e "${red}${NUM} is not a number! Please, try again.${plain}"
|
echo -e "${red}${NUM} is not a number! Please, try again.${plain}"
|
||||||
fi
|
fi
|
||||||
@ -805,9 +735,9 @@ iplimit_main() {
|
|||||||
fi
|
fi
|
||||||
iplimit_main ;;
|
iplimit_main ;;
|
||||||
4)
|
4)
|
||||||
if test -f "${iplimit_banned_log_path}"; then
|
if test -f "/var/log/3xipl-banned.log"; then
|
||||||
if [[ -s "${iplimit_banned_log_path}" ]]; then
|
if [[ -s "/var/log/3xipl-banned.log" ]]; then
|
||||||
cat ${iplimit_banned_log_path}
|
cat /var/log/3xipl-banned.log
|
||||||
else
|
else
|
||||||
echo -e "${red}Log file is empty.${plain}\n"
|
echo -e "${red}Log file is empty.${plain}\n"
|
||||||
fi
|
fi
|
||||||
@ -827,7 +757,7 @@ install_iplimit() {
|
|||||||
# Check the OS and install necessary packages
|
# Check the OS and install necessary packages
|
||||||
case "${release}" in
|
case "${release}" in
|
||||||
ubuntu|debian)
|
ubuntu|debian)
|
||||||
apt update && apt install fail2ban -y ;;
|
apt-get update && apt-get install fail2ban -y ;;
|
||||||
centos)
|
centos)
|
||||||
yum -y update && yum -y install fail2ban ;;
|
yum -y update && yum -y install fail2ban ;;
|
||||||
fedora)
|
fedora)
|
||||||
@ -843,22 +773,55 @@ install_iplimit() {
|
|||||||
|
|
||||||
echo -e "${green}Configuring IP Limit...${plain}\n"
|
echo -e "${green}Configuring IP Limit...${plain}\n"
|
||||||
|
|
||||||
# make sure there's no conflict for jail files
|
#Check if [3x-ipl] exists in jail.local (just making sure there's no double config for jail)
|
||||||
iplimit_remove_conflicts
|
if grep -qw '3x-ipl' /etc/fail2ban/jail.local || grep -qw '3x-ipl' /etc/fail2ban/jail.conf; then
|
||||||
|
echo -e "${red}Found conflicts in /etc/fail2ban/jail.conf or jail.local file!\nPlease manually remove anything related 3x-ipl in that files and try again.\nInstallation of IP Limit failed.${plain}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
#Check if log file exists
|
#Check if log file exists
|
||||||
if ! test -f "${iplimit_banned_log_path}"; then
|
if ! test -f "/var/log/3xipl-banned.log"; then
|
||||||
touch ${iplimit_banned_log_path}
|
touch /var/log/3xipl-banned.log
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Check if service log file exists so fail2ban won't return error
|
#Check if service log file exists so fail2ban won't return error
|
||||||
if ! test -f "${iplimit_log_path}"; then
|
if ! test -f "/var/log/3xipl.log"; then
|
||||||
touch ${iplimit_log_path}
|
touch /var/log/3xipl.log
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the iplimit jail files
|
|
||||||
# we didn't pass the bantime here to use the default value
|
echo -e "\n[3x-ipl]\nenabled=true\nfilter=3x-ipl\naction=3x-ipl\nlogpath=/var/log/3xipl.log\nmaxretry=3\nfindtime=100\nbantime=5m" > /etc/fail2ban/jail.d/3x-ipl.conf
|
||||||
create_iplimit_jails
|
|
||||||
|
cat > /etc/fail2ban/filter.d/3x-ipl.conf << EOF
|
||||||
|
[Definition]
|
||||||
|
datepattern = ^%%Y/%%m/%%d %%H:%%M:%%S
|
||||||
|
failregex = \[LIMIT_IP\]\s*Email\s*=\s*<F-USER>.+</F-USER>\s*\|\|\s*SRC\s*=\s*<ADDR>
|
||||||
|
ignoreregex =
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > /etc/fail2ban/action.d/3x-ipl.conf << 'EOF'
|
||||||
|
[INCLUDES]
|
||||||
|
before = iptables-common.conf
|
||||||
|
|
||||||
|
[Definition]
|
||||||
|
actionstart = <iptables> -N f2b-<name>
|
||||||
|
<iptables> -A f2b-<name> -j <returntype>
|
||||||
|
<iptables> -I <chain> -p <protocol> -j f2b-<name>
|
||||||
|
|
||||||
|
actionstop = <iptables> -D <chain> -p <protocol> -j f2b-<name>
|
||||||
|
<actionflush>
|
||||||
|
<iptables> -X f2b-<name>
|
||||||
|
|
||||||
|
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
|
||||||
|
|
||||||
|
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
|
||||||
|
echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") BAN [Email] = <F-USER> [IP] = <ip> banned for <bantime> seconds." >> /var/log/3xipl-banned.log
|
||||||
|
|
||||||
|
actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
|
||||||
|
echo "$(date +"%%Y/%%m/%%d %%H:%%M:%%S") UNBAN [Email] = <F-USER> [IP] = <ip> unbanned." >> /var/log/3xipl-banned.log
|
||||||
|
|
||||||
|
[Init]
|
||||||
|
EOF
|
||||||
|
|
||||||
# Launching fail2ban
|
# Launching fail2ban
|
||||||
if ! systemctl is-active --quiet fail2ban; then
|
if ! systemctl is-active --quiet fail2ban; then
|
||||||
@ -893,7 +856,7 @@ remove_iplimit(){
|
|||||||
systemctl disable fail2ban
|
systemctl disable fail2ban
|
||||||
case "${release}" in
|
case "${release}" in
|
||||||
ubuntu|debian)
|
ubuntu|debian)
|
||||||
apt remove fail2ban -y ;;
|
apt-get remove fail2ban -y ;;
|
||||||
centos)
|
centos)
|
||||||
yum -y remove fail2ban ;;
|
yum -y remove fail2ban ;;
|
||||||
fedora)
|
fedora)
|
||||||
@ -902,7 +865,7 @@ remove_iplimit(){
|
|||||||
echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n"
|
echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n"
|
||||||
exit 1 ;;
|
exit 1 ;;
|
||||||
esac
|
esac
|
||||||
rm -rf /etc/fail2ban
|
rm -rf /etc/fail2ban/*
|
||||||
echo -e "${green}Fail2ban and IP Limit removed successfully!${plain}\n"
|
echo -e "${green}Fail2ban and IP Limit removed successfully!${plain}\n"
|
||||||
before_show_menu ;;
|
before_show_menu ;;
|
||||||
0)
|
0)
|
||||||
|
Loading…
Reference in New Issue
Block a user