diff options
| author | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-10-04 15:31:15 +0300 |
|---|---|---|
| committer | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-10-04 16:00:42 +0300 |
| commit | decac2ef74464de472ad36a650f886cd3a4bd55e (patch) | |
| tree | 92d891124384b57dcd97f72aad440e39dea240f1 | |
| parent | c3ce1da0d6090c2d6019dc2049dde908f7288a99 (diff) | |
Add version check (min v2.3.5)
| -rw-r--r-- | install.sh | 28 | ||||
| -rw-r--r-- | x-ui.sh | 16 |
2 files changed, 29 insertions, 15 deletions
@@ -199,24 +199,32 @@ install_x-ui() { cd /usr/local/ if [ $# == 0 ]; then - last_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') - if [[ ! -n "$last_version" ]]; then - echo -e "${red}Failed to fetch x-ui version, it maybe due to Github API restrictions, please try it later${plain}" + tag_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + if [[ ! -n "$tag_version" ]]; then + echo -e "${red}Failed to fetch x-ui version, it may be due to GitHub API restrictions, please try it later${plain}" exit 1 fi - echo -e "Got x-ui latest version: ${last_version}, beginning the installation..." - wget -N --no-check-certificate -O /usr/local/x-ui-linux-$(arch).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${last_version}/x-ui-linux-$(arch).tar.gz + echo -e "Got x-ui latest version: ${tag_version}, beginning the installation..." + wget -N --no-check-certificate -O /usr/local/x-ui-linux-$(arch).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz if [[ $? -ne 0 ]]; then - echo -e "${red}Downloading x-ui failed, please be sure that your server can access Github ${plain}" + echo -e "${red}Downloading x-ui failed, please be sure that your server can access GitHub ${plain}" exit 1 fi else - last_version=$1 - url="https://github.com/MHSanaei/3x-ui/releases/download/${last_version}/x-ui-linux-$(arch).tar.gz" + tag_version=$1 + tag_version_numeric=${tag_version#v} + min_version="2.3.5" + + if [[ "$(printf '%s\n' "$min_version" "$tag_version_numeric" | sort -V | head -n1)" != "$min_version" ]]; then + echo -e "${red}Please use a newer version (at least v2.3.5). Exiting installation.${plain}" + exit 1 + fi + + url="https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz" echo -e "Beginning to install x-ui $1" wget -N --no-check-certificate -O /usr/local/x-ui-linux-$(arch).tar.gz ${url} if [[ $? -ne 0 ]]; then - echo -e "${red}Download x-ui $1 failed,please check the version exists ${plain}" + echo -e "${red}Download x-ui $1 failed, please check if the version exists ${plain}" exit 1 fi fi @@ -247,7 +255,7 @@ install_x-ui() { systemctl daemon-reload systemctl enable x-ui systemctl start x-ui - echo -e "${green}x-ui ${last_version}${plain} installation finished, it is running now..." + 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 "----------------------------------------------" @@ -186,20 +186,26 @@ update_menu() { } custom_version() { - echo "Enter the panel version (like 2.0.0):" - read panel_version + echo "Enter the panel version (like 2.4.0):" + read tag_version - if [ -z "$panel_version" ]; then + if [ -z "$tag_version" ]; then echo "Panel version cannot be empty. Exiting." exit 1 fi + min_version="2.3.5" + if [[ "$(printf '%s\n' "$tag_version" "$min_version" | sort -V | head -n1)" == "$tag_version" && "$tag_version" != "$min_version" ]]; then + echo "Please use a newer version (at least 2.3.5). Exiting." + exit 1 + fi + download_link="https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh" # Use the entered panel version in the download link - install_command="bash <(curl -Ls $download_link) v$panel_version" + install_command="bash <(curl -Ls $download_link) v$tag_version" - echo "Downloading and installing panel version $panel_version..." + echo "Downloading and installing panel version $tag_version..." eval $install_command } |
