Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHamidreza Ghavami <hamid.r.gh.1998@gmail.com>2023-04-18 08:51:21 +0300
committerHamidreza Ghavami <hamid.r.gh.1998@gmail.com>2023-04-18 08:51:21 +0300
commit3e5984930ed24261c1cc459d11909a053dce18f3 (patch)
tree4fa74ae96751582d8279751658147306457fc1e6 /x-ui.sh
parent40a029749929bcd53ff9b5a7776cda96dc3aed86 (diff)
update x-ui.sh
Diffstat (limited to 'x-ui.sh')
-rw-r--r--x-ui.sh211
1 files changed, 107 insertions, 104 deletions
diff --git a/x-ui.sh b/x-ui.sh
index 8f1fcd60..6df37f6f 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -17,6 +17,7 @@ function LOGE() {
function LOGI() {
echo -e "${green}[INF] $* ${plain}"
}
+
# check root
[[ $EUID -ne 0 ]] && LOGE "ERROR: You must be root to run this script! \n" && exit 1
@@ -34,7 +35,6 @@ fi
echo "The OS release is: $release"
-
os_version=""
os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1)
@@ -44,21 +44,18 @@ if [[ "${release}" == "centos" ]]; then
fi
elif [[ "${release}" == "ubuntu" ]]; then
if [[ ${os_version} -lt 20 ]]; then
- echo -e "${red}please use Ubuntu 20 or higher version!${plain}\n" && exit 1
+ echo -e "${red}please use Ubuntu 20 or higher version! ${plain}\n" && exit 1
fi
-
elif [[ "${release}" == "fedora" ]]; then
if [[ ${os_version} -lt 36 ]]; then
- echo -e "${red}please use Fedora 36 or higher version!${plain}\n" && exit 1
+ echo -e "${red}please use Fedora 36 or higher version! ${plain}\n" && exit 1
fi
-
elif [[ "${release}" == "debian" ]]; then
if [[ ${os_version} -lt 10 ]]; then
echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1
fi
fi
-
confirm() {
if [[ $# > 1 ]]; then
echo && read -p "$1 [Default$2]: " temp
@@ -133,7 +130,7 @@ uninstall() {
rm /usr/local/x-ui/ -rf
echo ""
- echo -e "Uninstalled Successfully,If you want to remove this script,then after exiting the script run ${green}rm /usr/bin/x-ui -f${plain} to delete it."
+ echo -e "Uninstalled Successfully, If you want to remove this script, then after exiting the script run ${green}rm /usr/bin/x-ui -f${plain} to delete it."
echo ""
if [[ $# == 0 ]]; then
@@ -150,12 +147,12 @@ reset_user() {
return 0
fi
/usr/local/x-ui/x-ui setting -username admin -password admin
- echo -e "Username and password have been reset to ${green}admin${plain},Please restart the panel now."
+ echo -e "Username and password have been reset to ${green}admin${plain}, Please restart the panel now."
confirm_restart
}
reset_config() {
- confirm "Are you sure you want to reset all panel settings,Account data will not be lost,Username and password will not change" "n"
+ confirm "Are you sure you want to reset all panel settings, Account data will not be lost, Username and password will not change" "n"
if [[ $? != 0 ]]; then
if [[ $# == 0 ]]; then
show_menu
@@ -163,14 +160,14 @@ reset_config() {
return 0
fi
/usr/local/x-ui/x-ui setting -reset
- echo -e "All panel settings have been reset to default,Please restart the panel now,and use the default ${green}2053${plain} Port to Access the web Panel"
+ echo -e "All panel settings have been reset to default, Please restart the panel now, and use the default ${green}2053${plain} Port to Access the web Panel"
confirm_restart
}
check_config() {
info=$(/usr/local/x-ui/x-ui setting -show true)
if [[ $? != 0 ]]; then
- LOGE "get current settings error,please check logs"
+ LOGE "get current settings error, please check logs"
show_menu
fi
LOGI "${info}"
@@ -183,7 +180,7 @@ set_port() {
before_show_menu
else
/usr/local/x-ui/x-ui setting -port ${port}
- echo -e "The port is set,Please restart the panel now,and use the new port ${green}${port}${plain} to access web panel"
+ echo -e "The port is set, Please restart the panel now, and use the new port ${green}${port}${plain} to access web panel"
confirm_restart
fi
}
@@ -192,7 +189,7 @@ start() {
check_status
if [[ $? == 0 ]]; then
echo ""
- LOGI "Panel is running,No need to start again,If you need to restart, please select restart"
+ LOGI "Panel is running, No need to start again, If you need to restart, please select restart"
else
systemctl start x-ui
sleep 2
@@ -200,7 +197,7 @@ start() {
if [[ $? == 0 ]]; then
LOGI "x-ui Started Successfully"
else
- LOGE "panel Failed to start,Probably because it takes longer than two seconds to start,Please check the log information later"
+ LOGE "panel Failed to start, Probably because it takes longer than two seconds to start, Please check the log information later"
fi
fi
@@ -213,7 +210,7 @@ stop() {
check_status
if [[ $? == 1 ]]; then
echo ""
- LOGI "Panel stopped,No need to stop again!"
+ LOGI "Panel stopped, No need to stop again!"
else
systemctl stop x-ui
sleep 2
@@ -221,7 +218,7 @@ stop() {
if [[ $? == 1 ]]; then
LOGI "x-ui and xray stopped successfully"
else
- LOGE "Panel stop failed,Probably because the stop time exceeds two seconds,Please check the log information later"
+ LOGE "Panel stop failed, Probably because the stop time exceeds two seconds, Please check the log information later"
fi
fi
@@ -237,7 +234,7 @@ restart() {
if [[ $? == 0 ]]; then
LOGI "x-ui and xray Restarted successfully"
else
- LOGE "Panel restart failed,Probably because it takes longer than two seconds to start,Please check the log information later"
+ LOGE "Panel restart failed, Probably because it takes longer than two seconds to start, Please check the log information later"
fi
if [[ $# == 0 ]]; then
before_show_menu
@@ -285,51 +282,49 @@ show_log() {
}
enable_bbr() {
+ if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
+ echo -e "${green}BBR is already enabled!${plain}"
+ exit 0
+ fi
-if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
- echo -e "${green}BBR is already enabled!${plain}"
- exit 0
-fi
-
-# Check the OS and install necessary packages
-if [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "ubuntu" ]]; then
- sudo apt-get update && sudo apt-get install -yqq --no-install-recommends ca-certificates
-elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "debian" ]]; then
- sudo apt-get update && sudo apt-get install -yqq --no-install-recommends ca-certificates
-elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "fedora" ]]; then
- sudo dnf -y update && sudo dnf -y install ca-certificates
-elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "centos" ]]; then
- sudo yum -y update && sudo yum -y install ca-certificates
-else
- echo "Unsupported operating system. Please check the script and install the necessary packages manually."
- exit 1
-fi
-
-# Enable BBR
-echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
-echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
+ # Check the OS and install necessary packages
+ if [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "ubuntu" ]]; then
+ sudo apt-get update && sudo apt-get install -yqq --no-install-recommends ca-certificates
+ elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "debian" ]]; then
+ sudo apt-get update && sudo apt-get install -yqq --no-install-recommends ca-certificates
+ elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "fedora" ]]; then
+ sudo dnf -y update && sudo dnf -y install ca-certificates
+ elif [[ "$(cat /etc/os-release | grep -E '^ID=' | awk -F '=' '{print $2}')" == "centos" ]]; then
+ sudo yum -y update && sudo yum -y install ca-certificates
+ else
+ echo "Unsupported operating system. Please check the script and install the necessary packages manually."
+ exit 1
+ fi
-# Apply changes
-sudo sysctl -p
+ # Enable BBR
+ echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
+ echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
-# Verify that BBR is enabled
-if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then
- echo -e "${green}BBR has been enabled successfully.${plain}"
-else
- echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}"
-fi
+ # Apply changes
+ sudo sysctl -p
+ # Verify that BBR is enabled
+ if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then
+ echo -e "${green}BBR has been enabled successfully.${plain}"
+ else
+ echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}"
+ fi
}
update_shell() {
wget -O /usr/bin/x-ui -N --no-check-certificate https://github.com/MHSanaei/3x-ui/raw/main/x-ui.sh
if [[ $? != 0 ]]; then
echo ""
- LOGE "Failed to download script,Please check whether the machine can connect Github"
+ LOGE "Failed to download script, Please check whether the machine can connect Github"
before_show_menu
else
chmod +x /usr/bin/x-ui
- LOGI "Upgrade script succeeded,Please rerun the script" && exit 0
+ LOGI "Upgrade script succeeded, Please rerun the script" && exit 0
fi
}
@@ -359,7 +354,7 @@ check_uninstall() {
check_status
if [[ $? != 2 ]]; then
echo ""
- LOGE "Panel installed,Please do not reinstall"
+ LOGE "Panel installed, Please do not reinstall"
if [[ $# == 0 ]]; then
before_show_menu
fi
@@ -455,69 +450,76 @@ ssl_cert_issue() {
}
open_ports() {
-if ! command -v ufw &> /dev/null
-then
- echo "ufw firewall is not installed. Installing now..."
- sudo apt-get update
- sudo apt-get install -y ufw
-else
- echo "ufw firewall is already installed"
-fi
-
- # Check if the firewall is inactive
- if sudo ufw status | grep -q "Status: active"; then
- echo "firewall is already active"
- else
- # Open the necessary ports
- sudo ufw allow ssh
- sudo ufw allow http
- sudo ufw allow https
- sudo ufw allow 2053/tcp
-
- # Enable the firewall
- sudo ufw --force enable
- fi
-
- # Prompt the user to enter a list of ports
- read -p "Enter the ports you want to open (e.g. 80,443,2053 or range 400-500): " ports
-
- # Check if the input is valid
- if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then
- echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2; exit 1
- fi
-
- # Open the specified ports using ufw
- IFS=',' read -ra PORT_LIST <<< "$ports"
- for port in "${PORT_LIST[@]}"; do
- if [[ $port == *-* ]]; then
- # Split the range into start and end ports
- start_port=$(echo $port | cut -d'-' -f1)
- end_port=$(echo $port | cut -d'-' -f2)
- # Loop through the range and open each port
- for ((i=start_port; i<=end_port; i++)); do
- sudo ufw allow $i
- done
+ if ! command -v ufw &> /dev/null
+ then
+ echo "ufw firewall is not installed. Installing now..."
+ sudo apt-get update
+ sudo apt-get install -y ufw
else
- sudo ufw allow "$port"
+ echo "ufw firewall is already installed"
fi
- done
- # Confirm that the ports are open
- sudo ufw status | grep $ports
-}
+ # Check if the firewall is inactive
+ if sudo ufw status | grep -q "Status: active"; then
+ echo "firewall is already active"
+ else
+ # Open the necessary ports
+ sudo ufw allow ssh
+ sudo ufw allow http
+ sudo ufw allow https
+ sudo ufw allow 2053/tcp
+
+ # Enable the firewall
+ sudo ufw --force enable
+ fi
+
+ # Prompt the user to enter a list of ports
+ read -p "Enter the ports you want to open (e.g. 80,443,2053 or range 400-500): " ports
+
+ # Check if the input is valid
+ if ! [[ $ports =~ ^([0-9]+|[0-9]+-[0-9]+)(,([0-9]+|[0-9]+-[0-9]+))*$ ]]; then
+ echo "Error: Invalid input. Please enter a comma-separated list of ports or a range of ports (e.g. 80,443,2053 or 400-500)." >&2; exit 1
+ fi
+
+ # Open the specified ports using ufw
+ IFS=',' read -ra PORT_LIST <<< "$ports"
+ for port in "${PORT_LIST[@]}"; do
+ if [[ $port == *-* ]]; then
+ # Split the range into start and end ports
+ start_port=$(echo $port | cut -d'-' -f1)
+ end_port=$(echo $port | cut -d'-' -f2)
+ # Loop through the range and open each port
+ for ((i=start_port; i<=end_port; i++)); do
+ sudo ufw allow $i
+ done
+ else
+ sudo ufw allow "$port"
+ fi
+ done
+ # Confirm that the ports are open
+ sudo ufw status | grep $ports
+}
+update_geo() {
+ local defaultBinFolder="/usr/local/x-ui/bin"
+ read -p "Please enter x-ui bin folder path. Leave blank for default. (Default: '${defaultBinFolder}')" binFolder
+ binFolder=${binFolder:-${defaultBinFolder}}
+ if [[ ! -d ${binFolder} ]]; then
+ LOGE "Folder ${binFolder} not exists!"
+ LOGI "making bin folder: ${binFolder}..."
+ mkdir -p ${binFolder}
+ fi
-update_geo(){
systemctl stop x-ui
- cd /usr/local/x-ui/bin
+ cd ${binFolder}
rm -f geoip.dat geosite.dat iran.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
wget -N https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat
systemctl start x-ui
- echo -e "${green}Geosite and Geoip have been updated successfully!${plain}"
-before_show_menu
+ echo -e "${green}Geosite.dat + Geoip.dat + Iran.dat have been updated successfully in bin folder '${binfolder}'!${plain}"
+ before_show_menu
}
install_acme() {
@@ -714,10 +716,11 @@ ssl_cert_issue_by_cloudflare() {
show_menu
fi
}
+
google_recaptcha() {
- curl -O https://raw.githubusercontent.com/jinwyp/one_click_script/master/install_kernel.sh && chmod +x ./install_kernel.sh && ./install_kernel.sh
- echo ""
- before_show_menu
+ curl -O https://raw.githubusercontent.com/jinwyp/one_click_script/master/install_kernel.sh && chmod +x ./install_kernel.sh && ./install_kernel.sh
+ echo ""
+ before_show_menu
}
run_speedtest() {