From a7fb0019029991fe69be5ba9c5c9871c1a761501 Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Wed, 10 Jul 2024 22:13:01 +0200 Subject: [PATCH] support more os Co-Authored-By: mhsanaei --- .github/workflows/docker.yml | 2 +- .github/workflows/release.yml | 33 ++++++++++++++ README.md | 12 ++++- install.sh | 64 +++++++++++++++++++++----- x-ui.sh | 85 +++++++++++++++++++++++++++-------- 5 files changed, 164 insertions(+), 32 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1bba80a2..2a2f07ea 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -50,6 +50,6 @@ jobs: with: context: . push: true - platforms: linux/amd64,linux/arm64/v8, linux/arm/v7, linux/386 + platforms: linux/amd64, linux/arm64/v8, linux/arm/v7, linux/arm/v6, linux/386 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c45525d2..d168a4f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,10 @@ jobs: - amd64 - arm64 - armv7 + - armv6 + - armv5 - 386 + - s390x runs-on: ubuntu-20.04 steps: - name: Checkout repository @@ -32,8 +35,14 @@ jobs: sudo apt install gcc-aarch64-linux-gnu elif [ "${{ matrix.platform }}" == "armv7" ]; then sudo apt install gcc-arm-linux-gnueabihf + elif [ "${{ matrix.platform }}" == "armv6" ]; then + sudo apt install gcc-arm-linux-gnueabihf + elif [ "${{ matrix.platform }}" == "armv5" ]; then + sudo apt install gcc-arm-linux-gnueabi elif [ "${{ matrix.platform }}" == "386" ]; then sudo apt install gcc-i686-linux-gnu + elif [ "${{ matrix.platform }}" == "s390x" ]; then + sudo apt install gcc-s390x-linux-gnu fi - name: Build x-ui @@ -48,10 +57,22 @@ jobs: export GOARCH=arm export GOARM=7 export CC=arm-linux-gnueabihf-gcc + elif [ "${{ matrix.platform }}" == "armv6" ]; then + export GOARCH=arm + export GOARM=6 + export CC=arm-linux-gnueabihf-gcc + elif [ "${{ matrix.platform }}" == "armv5" ]; then + export GOARCH=arm + export GOARM=5 + export CC=arm-linux-gnueabi-gcc elif [ "${{ matrix.platform }}" == "386" ]; then export GOARCH=386 export CC=i686-linux-gnu-gcc + elif [ "${{ matrix.platform }}" == "s390x" ]; then + export GOARCH=s390x + export CC=s390x-linux-gnu-gcc fi + go build -o xui-release -v main.go mkdir x-ui @@ -76,10 +97,22 @@ jobs: wget ${Xray_URL}Xray-linux-arm32-v7a.zip unzip Xray-linux-arm32-v7a.zip rm -f Xray-linux-arm32-v7a.zip + elif [ "${{ matrix.platform }}" == "armv6" ]; then + wget ${Xray_URL}Xray-linux-arm32-v6.zip + unzip Xray-linux-arm32-v6.zip + rm -f Xray-linux-arm32-v6.zip + elif [ "${{ matrix.platform }}" == "armv5" ]; then + wget ${Xray_URL}Xray-linux-arm32-v5.zip + unzip Xray-linux-arm32-v5.zip + rm -f Xray-linux-arm32-v5.zip elif [ "${{ matrix.platform }}" == "386" ]; then wget ${Xray_URL}Xray-linux-32.zip unzip Xray-linux-32.zip rm -f Xray-linux-32.zip + elif [ "${{ matrix.platform }}" == "s390x" ]; then + wget ${Xray_URL}Xray-linux-s390x.zip + unzip Xray-linux-s390x.zip + rm -f Xray-linux-s390x.zip fi rm -f geoip.dat geosite.dat wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat diff --git a/README.md b/README.md index 407af191..01354f87 100644 --- a/README.md +++ b/README.md @@ -188,10 +188,18 @@ docker build -t x-ui . ## Recommended OS +- Ubuntu 20.04+ +- Debian 11+ - CentOS 8+ -- Ubuntu 20+ -- Debian 10+ - Fedora 36+ +- Arch Linux +- Parch Linux +- Manjaro +- Armbian +- AlmaLinux 9+ +- Rocky Linux 9+ +- Oracle Linux 8+ +- OpenSUSE Tubleweed ## Preview diff --git a/install.sh b/install.sh index b4928802..428120ac 100755 --- a/install.sh +++ b/install.sh @@ -29,46 +29,90 @@ arch() { i*86 | x86) echo '386' ;; armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;; armv7* | armv7 | arm) echo 'armv7' ;; + armv6* | armv6) echo 'armv6' ;; + armv5* | armv5) echo 'armv5' ;; + s390x) echo 's390x' ;; *) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;; esac } + 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}" == "parch" ]]; then + echo "Your OS is Parch linux" +elif [[ "${release}" == "manjaro" ]]; then + echo "Your OS is Manjaro" +elif [[ "${release}" == "armbian" ]]; then + echo "Your OS is Armbian" +elif [[ "${release}" == "opensuse-tumbleweed" ]]; then + echo "Your OS is OpenSUSE Tumbleweed" +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 10 ]]; then - echo -e "${red} Please use Debian 10 or higher ${plain}\n" && exit 1 + 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 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 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 "- Parch Linux" + echo "- Manjaro" + echo "- Armbian" + echo "- AlmaLinux 9+" + echo "- Rocky Linux 9+" + echo "- Oracle Linux 8+" + echo "- OpenSUSE Tumbleweed" + exit 1 fi install_dependencies() { case "${release}" in - centos) + centos | almalinux | rocky | oracle) yum -y update && yum install -y -q wget curl tar tzdata ;; fedora) dnf -y update && dnf install -y -q wget curl tar tzdata ;; + arch | manjaro | parch) + pacman -Syu && pacman -Syu --noconfirm wget curl tar tzdata + ;; + opensuse-tumbleweed) + zypper refresh && zypper -q install -y wget curl tar timezone + ;; *) - apt-get update && apt install -y -q wget curl tar tzdata + apt-get update && apt-get install -y -q wget curl tar tzdata ;; esac } diff --git a/x-ui.sh b/x-ui.sh index b5bbd96b..23afec23 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -38,24 +38,61 @@ 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}" == "parch" ]]; then + echo "Your OS is Parch linux" +elif [[ "${release}" == "manjaro" ]]; then + echo "Your OS is Manjaro" +elif [[ "${release}" == "armbian" ]]; then + echo "Your OS is Armbian" +elif [[ "${release}" == "opensuse-tumbleweed" ]]; then + echo "Your OS is OpenSUSE Tumbleweed" +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 +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 + 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 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 +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 "- Parch Linux" + echo "- Manjaro" + echo "- Armbian" + echo "- AlmaLinux 9+" + echo "- Rocky Linux 9+" + echo "- Oracle Linux 8+" + echo "- OpenSUSE Tumbleweed" + exit 1 + fi confirm() { @@ -460,15 +497,22 @@ ssl_cert_issue() { fi # install socat second case "${release}" in - ubuntu|debian) - apt update && apt install socat -y ;; - centos) - yum -y update && yum -y install socat ;; - fedora) - dnf -y update && dnf -y install socat ;; - *) - echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" - exit 1 ;; + ubuntu | debian | armbian) + apt update && apt install socat -y + ;; + centos | almalinux | rocky | oracle) + yum -y update && yum -y install socat + ;; + fedora) + dnf -y update && dnf -y install socat + ;; + arch | manjaro | parch) + pacman -Sy --noconfirm socat + ;; + *) + echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n" + exit 1 + ;; esac if [ $? -ne 0 ]; then LOGE "install socat failed, please check logs" @@ -782,15 +826,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 | parch) + 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