diff --git a/install.sh b/install.sh index c6c5200044..150ae86c82 100644 --- a/install.sh +++ b/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}" diff --git a/x-ui.sh b/x-ui.sh index 8a70c5be4c..3f45619006 100644 --- a/x-ui.sh +++ b/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