diff --git a/README.md b/README.md index fd207123..a77c8835 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,8 @@ remove 3x-ui from docker - Manjaro - Armbian - AlmaLinux 9+ -- Rockylinux 9+ +- Rocky Linux 9+ +- Oracle Linux 8+ ## Supported Architectures and Devices diff --git a/install.sh b/install.sh index a9b6711b..692e9e7e 100644 --- a/install.sh +++ b/install.sh @@ -23,7 +23,7 @@ else fi echo "The OS release is: $release" -arch3xui() { +arch() { case "$(uname -m)" in x86_64 | x64 | amd64) echo 'amd64' ;; i*86 | x86) echo '386' ;; @@ -35,12 +35,18 @@ arch3xui() { esac } -echo "arch: $(arch3xui)" +echo "arch: $(arch)" os_version="" os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1) -if [[ "${release}" == "centos" ]]; then +if [[ "${release}" == "arch" ]]; then + echo "Your OS is Arch Linux" +elif [[ "${release}" == "manjaro" ]]; then + echo "Your OS is Manjaro" +elif [[ "${release}" == "armbian" ]]; then + echo "Your OS is Armbian" +elif [[ "${release}" == "centos" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 fi @@ -48,40 +54,46 @@ elif [[ "${release}" == "ubuntu" ]]; then if [[ ${os_version} -lt 20 ]]; then 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 fi - elif [[ "${release}" == "debian" ]]; then if [[ ${os_version} -lt 11 ]]; then echo -e "${red} Please use Debian 11 or higher ${plain}\n" && exit 1 fi - elif [[ "${release}" == "almalinux" ]]; then if [[ ${os_version} -lt 9 ]]; then echo -e "${red} Please use AlmaLinux 9 or higher ${plain}\n" && exit 1 fi - elif [[ "${release}" == "rocky" ]]; then if [[ ${os_version} -lt 9 ]]; then - echo -e "${red} Please use RockyLinux 9 or higher ${plain}\n" && exit 1 + echo -e "${red} Please use Rocky Linux 9 or higher ${plain}\n" && exit 1 + fi +elif [[ "${release}" == "oracle" ]]; then + if [[ ${os_version} -lt 8 ]]; then + echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1 fi -elif [[ "${release}" == "arch" ]]; then - echo "Your OS is ArchLinux" -elif [[ "${release}" == "manjaro" ]]; then - echo "Your OS is Manjaro" -elif [[ "${release}" == "armbian" ]]; then - echo "Your OS is Armbian" - else - echo -e "${red}Failed to check the OS version, please contact the author!${plain}" && exit 1 + echo -e "${red}Your operating system is not supported by this script.${plain}\n" + echo "Please ensure you are using one of the following supported operating systems:" + echo "- Ubuntu 20.04+" + echo "- Debian 11+" + echo "- CentOS 8+" + echo "- Fedora 36+" + echo "- Arch Linux" + echo "- Manjaro" + echo "- Armbian" + echo "- AlmaLinux 9+" + echo "- Rocky Linux 9+" + echo "- Oracle Linux 8+" + exit 1 + fi install_base() { case "${release}" in - centos | almalinux | rocky) + centos | almalinux | rocky | oracle) yum -y update && yum install -y -q wget curl tar tzdata ;; fedora) @@ -141,16 +153,16 @@ install_x-ui() { 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-$(arch3xui).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${last_version}/x-ui-linux-$(arch3xui).tar.gz + 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 if [[ $? -ne 0 ]]; then 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-$(arch3xui).tar.gz" + url="https://github.com/MHSanaei/3x-ui/releases/download/${last_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-$(arch3xui).tar.gz ${url} + 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}" exit 1 @@ -162,18 +174,18 @@ install_x-ui() { rm /usr/local/x-ui/ -rf fi - tar zxvf x-ui-linux-$(arch3xui).tar.gz - rm x-ui-linux-$(arch3xui).tar.gz -f + tar zxvf x-ui-linux-$(arch).tar.gz + rm x-ui-linux-$(arch).tar.gz -f cd x-ui chmod +x x-ui # Check the system's architecture and rename the file accordingly - if [[ $(arch3xui) == "armv5" || $(arch3xui) == "armv6" || $(arch3xui) == "armv7" ]]; then - mv bin/xray-linux-$(arch3xui) bin/xray-linux-arm + if [[ $(arch) == "armv5" || $(arch) == "armv6" || $(arch) == "armv7" ]]; then + mv bin/xray-linux-$(arch) bin/xray-linux-arm chmod +x bin/xray-linux-arm fi - chmod +x x-ui bin/xray-linux-$(arch3xui) + chmod +x x-ui bin/xray-linux-$(arch) cp -f x-ui.service /etc/systemd/system/ wget --no-check-certificate -O /usr/bin/x-ui https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh chmod +x /usr/local/x-ui/x-ui.sh diff --git a/x-ui.sh b/x-ui.sh index a94852f2..8581a302 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -38,17 +38,23 @@ echo "The OS release is: $release" os_version="" os_version=$(grep -i version_id /etc/os-release | cut -d \" -f2 | cut -d . -f1) -if [[ "${release}" == "centos" ]]; then +if [[ "${release}" == "arch" ]]; then + echo "Your OS is Arch Linux" +elif [[ "${release}" == "manjaro" ]]; then + echo "Your OS is Manjaro" +elif [[ "${release}" == "armbian" ]]; then + echo "Your OS is Armbian" +elif [[ "${release}" == "centos" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 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 11 ]]; then @@ -56,18 +62,31 @@ elif [[ "${release}" == "debian" ]]; then fi elif [[ "${release}" == "almalinux" ]]; then if [[ ${os_version} -lt 9 ]]; then - echo -e "${red} Please use Almalinux 9 or higher ${plain}\n" && exit 1 + echo -e "${red} Please use AlmaLinux 9 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "rocky" ]]; then if [[ ${os_version} -lt 9 ]]; then - echo -e "${red} Please use Rockylinux 9 or higher ${plain}\n" && exit 1 + echo -e "${red} Please use Rocky Linux 9 or higher ${plain}\n" && exit 1 fi -elif [[ "${release}" == "arch" ]]; then - echo "Your OS is ArchLinux" -elif [[ "${release}" == "manjaro" ]]; then - echo "Your OS is Manjaro" -elif [[ "${release}" == "armbian" ]]; then - echo "Your OS is Armbian" +elif [[ "${release}" == "oracle" ]]; then + if [[ ${os_version} -lt 8 ]]; then + echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1 + fi +else + echo -e "${red}Your operating system is not supported by this script.${plain}\n" + echo "Please ensure you are using one of the following supported operating systems:" + echo "- Ubuntu 20.04+" + echo "- Debian 11+" + echo "- CentOS 8+" + echo "- Fedora 36+" + echo "- Arch Linux" + echo "- Manjaro" + echo "- Armbian" + echo "- AlmaLinux 9+" + echo "- Rocky Linux 9+" + echo "- Oracle Linux 8+" + exit 1 + fi # Declare Variables @@ -394,15 +413,18 @@ enable_bbr() { # Check the OS and install necessary packages case "${release}" in - ubuntu | debian) + ubuntu | debian | armbian) apt-get update && apt-get install -yqq --no-install-recommends ca-certificates ;; - centos | almalinux | rocky) + centos | almalinux | rocky | oracle) yum -y update && yum -y install ca-certificates ;; fedora) dnf -y update && dnf -y install ca-certificates ;; + arch | manjaro) + pacman -Sy --noconfirm ca-certificates + ;; *) echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" exit 1 @@ -721,12 +743,15 @@ ssl_cert_issue() { ubuntu | debian | armbian) apt update && apt install socat -y ;; - centos | almalinux | rocky) + centos | almalinux | rocky | oracle) yum -y update && yum -y install socat ;; fedora) dnf -y update && dnf -y install socat ;; + arch | manjaro) + pacman -Sy --noconfirm socat + ;; *) echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" exit 1 @@ -1082,16 +1107,19 @@ install_iplimit() { # Check the OS and install necessary packages case "${release}" in - ubuntu | debian) + ubuntu | debian | armbian) apt update && apt install fail2ban -y ;; - centos | almalinux | rocky) + centos | almalinux | rocky | oracle) yum update -y && yum install epel-release -y yum -y install fail2ban ;; fedora) dnf -y update && dnf -y install fail2ban ;; + arch | manjaro) + pacman -Syu --noconfirm fail2ban + ;; *) echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" exit 1 @@ -1158,12 +1186,12 @@ remove_iplimit() { rm -rf /etc/fail2ban systemctl stop fail2ban case "${release}" in - ubuntu | debian) + ubuntu | debian | armbian) apt-get remove -y fail2ban apt-get purge -y fail2ban -y apt-get autoremove -y ;; - centos | almalinux | rocky) + centos | almalinux | rocky | oracle) yum remove fail2ban -y yum autoremove -y ;; @@ -1171,6 +1199,9 @@ remove_iplimit() { dnf remove fail2ban -y dnf autoremove -y ;; + arch | manjaro) + pacman -Rns --noconfirm fail2ban + ;; *) echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n" exit 1