mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-11-04 06:12:52 +00:00 
			
		
		
		
	fail2ban: better ipv6 validation (#2615)
This commit is contained in:
		
							parent
							
								
									49295661fd
								
							
						
					
					
						commit
						3f38c42852
					
				
					 2 changed files with 63 additions and 53 deletions
				
			
		
							
								
								
									
										37
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								install.sh
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
 | 
			
		||||
red='\033[0;31m'
 | 
			
		||||
green='\033[0;32m'
 | 
			
		||||
blue='\033[0;34m'
 | 
			
		||||
yellow='\033[0;33m'
 | 
			
		||||
plain='\033[0m'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -260,24 +261,24 @@ install_x-ui() {
 | 
			
		|||
    systemctl start x-ui
 | 
			
		||||
    echo -e "${green}x-ui ${tag_version}${plain} installation finished, it is running now..."
 | 
			
		||||
    echo -e ""
 | 
			
		||||
    echo -e "x-ui control menu usages: "
 | 
			
		||||
    echo -e "----------------------------------------------"
 | 
			
		||||
    echo -e "SUBCOMMANDS:"
 | 
			
		||||
    echo -e "x-ui              - Admin Management Script"
 | 
			
		||||
    echo -e "x-ui start        - Start"
 | 
			
		||||
    echo -e "x-ui stop         - Stop"
 | 
			
		||||
    echo -e "x-ui restart      - Restart"
 | 
			
		||||
    echo -e "x-ui status       - Current Status"
 | 
			
		||||
    echo -e "x-ui settings     - Current Settings"
 | 
			
		||||
    echo -e "x-ui enable       - Enable Autostart on OS Startup"
 | 
			
		||||
    echo -e "x-ui disable      - Disable Autostart on OS Startup"
 | 
			
		||||
    echo -e "x-ui log          - Check logs"
 | 
			
		||||
    echo -e "x-ui banlog       - Check Fail2ban ban logs"
 | 
			
		||||
    echo -e "x-ui update       - Update"
 | 
			
		||||
    echo -e "x-ui legacy       - legacy version"
 | 
			
		||||
    echo -e "x-ui install      - Install"
 | 
			
		||||
    echo -e "x-ui uninstall    - Uninstall"
 | 
			
		||||
    echo -e "----------------------------------------------"
 | 
			
		||||
    echo -e "┌───────────────────────────────────────────────────────┐
 | 
			
		||||
│  ${blue}x-ui control menu usages (subcommands):${plain}              │
 | 
			
		||||
│                                                       │
 | 
			
		||||
│  ${blue}x-ui${plain}              - Admin Management Script          │
 | 
			
		||||
│  ${blue}x-ui start${plain}        - Start                            │
 | 
			
		||||
│  ${blue}x-ui stop${plain}         - Stop                             │
 | 
			
		||||
│  ${blue}x-ui restart${plain}      - Restart                          │
 | 
			
		||||
│  ${blue}x-ui status${plain}       - Current Status                   │
 | 
			
		||||
│  ${blue}x-ui settings${plain}     - Current Settings                 │
 | 
			
		||||
│  ${blue}x-ui enable${plain}       - Enable Autostart on OS Startup   │
 | 
			
		||||
│  ${blue}x-ui disable${plain}      - Disable Autostart on OS Startup  │
 | 
			
		||||
│  ${blue}x-ui log${plain}          - Check logs                       │
 | 
			
		||||
│  ${blue}x-ui banlog${plain}       - Check Fail2ban ban logs          │
 | 
			
		||||
│  ${blue}x-ui update${plain}       - Update                           │
 | 
			
		||||
│  ${blue}x-ui legacy${plain}       - legacy version                   │
 | 
			
		||||
│  ${blue}x-ui install${plain}      - Install                          │
 | 
			
		||||
│  ${blue}x-ui uninstall${plain}    - Uninstall                        │
 | 
			
		||||
└───────────────────────────────────────────────────────┘"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo -e "${green}Running...${plain}"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										79
									
								
								x-ui.sh
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								x-ui.sh
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1353,6 +1353,11 @@ iplimit_remove_conflicts() {
 | 
			
		|||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ip_validation() {
 | 
			
		||||
    ipv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$"
 | 
			
		||||
    ipv4_regex="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)$"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
iplimit_main() {
 | 
			
		||||
    echo -e "\n${green}\t1.${plain} Install Fail2ban and configure IP Limit"
 | 
			
		||||
    echo -e "${green}\t2.${plain} Change Ban Duration"
 | 
			
		||||
| 
						 | 
				
			
			@ -1406,7 +1411,8 @@ iplimit_main() {
 | 
			
		|||
        ;;
 | 
			
		||||
    5)
 | 
			
		||||
        read -rp "Enter the IP address you want to ban: " ban_ip
 | 
			
		||||
        if [[ $ban_ip =~ ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))$ || $ban_ip =~ ^(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})$ ]]; then
 | 
			
		||||
        ip_validation
 | 
			
		||||
        if [[ $ban_ip =~ $ipv4_regex || $ban_ip =~ $ipv6_regex ]]; then
 | 
			
		||||
            fail2ban-client set 3x-ipl banip "$ban_ip"
 | 
			
		||||
            echo -e "${green}IP Address ${ban_ip} has been banned successfully.${plain}"
 | 
			
		||||
        else
 | 
			
		||||
| 
						 | 
				
			
			@ -1416,7 +1422,8 @@ iplimit_main() {
 | 
			
		|||
        ;;
 | 
			
		||||
    6)
 | 
			
		||||
        read -rp "Enter the IP address you want to unban: " unban_ip
 | 
			
		||||
        if [[ $unban_ip =~ ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))$ || $unban_ip =~ ^(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})$ ]]; then
 | 
			
		||||
        ip_validation
 | 
			
		||||
        if [[ $unban_ip =~ $ipv4_regex || $unban_ip =~ $ipv6_regex ]]; then
 | 
			
		||||
            fail2ban-client set 3x-ipl unbanip "$unban_ip"
 | 
			
		||||
            echo -e "${green}IP Address ${unban_ip} has been unbanned successfully.${plain}"
 | 
			
		||||
        else
 | 
			
		||||
| 
						 | 
				
			
			@ -1673,39 +1680,41 @@ show_usage() {
 | 
			
		|||
 | 
			
		||||
show_menu() {
 | 
			
		||||
    echo -e "
 | 
			
		||||
  ${green}3X-UI Panel Management Script${plain}
 | 
			
		||||
  ${green}0.${plain} Exit Script
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}1.${plain} Install
 | 
			
		||||
  ${green}2.${plain} Update
 | 
			
		||||
  ${green}3.${plain} Update Menu
 | 
			
		||||
  ${green}4.${plain} Legacy Version
 | 
			
		||||
  ${green}5.${plain} Uninstall
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}6.${plain} Reset Username & Password & Secret Token
 | 
			
		||||
  ${green}7.${plain} Reset Web Base Path
 | 
			
		||||
  ${green}8.${plain} Reset Settings
 | 
			
		||||
  ${green}9.${plain} Change Port
 | 
			
		||||
  ${green}10.${plain} View Current Settings
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}11.${plain} Start
 | 
			
		||||
  ${green}12.${plain} Stop
 | 
			
		||||
  ${green}13.${plain} Restart
 | 
			
		||||
  ${green}14.${plain} Check Status
 | 
			
		||||
  ${green}15.${plain} Logs Management
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}16.${plain} Enable Autostart
 | 
			
		||||
  ${green}17.${plain} Disable Autostart
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}18.${plain} SSL Certificate Management
 | 
			
		||||
  ${green}19.${plain} Cloudflare SSL Certificate
 | 
			
		||||
  ${green}20.${plain} IP Limit Management
 | 
			
		||||
  ${green}21.${plain} Firewall Management
 | 
			
		||||
  ${green}22.${plain} SSH Port Forwarding Management
 | 
			
		||||
————————————————
 | 
			
		||||
  ${green}23.${plain} Enable BBR 
 | 
			
		||||
  ${green}24.${plain} Update Geo Files
 | 
			
		||||
  ${green}25.${plain} Speedtest by Ookla
 | 
			
		||||
╔────────────────────────────────────────────────╗
 | 
			
		||||
│   ${green}3X-UI Panel Management Script${plain}                │
 | 
			
		||||
│   ${green}0.${plain} Exit Script                               │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│   ${green}1.${plain} Install                                   │
 | 
			
		||||
│   ${green}2.${plain} Update                                    │
 | 
			
		||||
│   ${green}3.${plain} Update Menu                               │
 | 
			
		||||
│   ${green}4.${plain} Legacy Version                            │
 | 
			
		||||
│   ${green}5.${plain} Uninstall                                 │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│   ${green}6.${plain} Reset Username & Password & Secret Token  │
 | 
			
		||||
│   ${green}7.${plain} Reset Web Base Path                       │
 | 
			
		||||
│   ${green}8.${plain} Reset Settings                            │
 | 
			
		||||
│   ${green}9.${plain} Change Port                               │
 | 
			
		||||
│  ${green}10.${plain} View Current Settings                     │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│  ${green}11.${plain} Start                                     │
 | 
			
		||||
│  ${green}12.${plain} Stop                                      │
 | 
			
		||||
│  ${green}13.${plain} Restart                                   │
 | 
			
		||||
│  ${green}14.${plain} Check Status                              │
 | 
			
		||||
│  ${green}15.${plain} Logs Management                           │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│  ${green}16.${plain} Enable Autostart                          │
 | 
			
		||||
│  ${green}17.${plain} Disable Autostart                         │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│  ${green}18.${plain} SSL Certificate Management                │
 | 
			
		||||
│  ${green}19.${plain} Cloudflare SSL Certificate                │
 | 
			
		||||
│  ${green}20.${plain} IP Limit Management                       │
 | 
			
		||||
│  ${green}21.${plain} Firewall Management                       │
 | 
			
		||||
│  ${green}22.${plain} SSH Port Forwarding Management            │
 | 
			
		||||
│────────────────────────────────────────────────│
 | 
			
		||||
│  ${green}23.${plain} Enable BBR                                │
 | 
			
		||||
│  ${green}24.${plain} Update Geo Files                          │
 | 
			
		||||
│  ${green}25.${plain} Speedtest by Ookla                        │
 | 
			
		||||
╚────────────────────────────────────────────────╝
 | 
			
		||||
"
 | 
			
		||||
    show_status
 | 
			
		||||
    echo && read -p "Please enter your selection [0-25]: " num
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue