diff --git a/install.sh b/install.sh
index c6c52000..150ae86c 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/web/html/xui/inbound_info_modal.html b/web/html/xui/inbound_info_modal.html
index 7796cf1e..1e30aa83 100644
--- a/web/html/xui/inbound_info_modal.html
+++ b/web/html/xui/inbound_info_modal.html
@@ -185,6 +185,25 @@
↑ [[ sizeFormat(infoModal.clientStats.up) ]] / [[ sizeFormat(infoModal.clientStats.down) ]] ↓
+
+ {{ i18n "pages.inbounds.IPLimit" }} |
+
+ [[ infoModal.clientSettings.limitIp ]]
+ |
+
+
+ {{ i18n "pages.inbounds.IPLimitlog" }} |
+
+ [[ infoModal.clientIps ]]
+
+
+
+ {{ i18n "pages.inbounds.IPLimitlogclear" }}
+
+
+
+ |
+
@@ -417,6 +436,18 @@
diff --git a/x-ui.sh b/x-ui.sh
index 1c0196e9..cc663afc 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -1375,6 +1375,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"
@@ -1428,7 +1433,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
@@ -1438,7 +1444,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
@@ -1695,39 +1702,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