Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

better ip validation #2615

Merged
merged 1 commit into from
Dec 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

red='\033[0;31m'
green='\033[0;32m'
blue='\033[0;34m'
yellow='\033[0;33m'
plain='\033[0m'

Expand Down Expand Up @@ -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}"
Expand Down
79 changes: 44 additions & 35 deletions x-ui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down