101 lines
2.4 KiB
Bash
Executable File
101 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check Root User
|
|
|
|
# If you want to run as another user, please modify $EUID to be owned by this user
|
|
if [[ "$EUID" -ne '0' ]]; then
|
|
echo "$(tput setaf 1)Error: You must run this script as root!$(tput sgr0)"
|
|
exit 1
|
|
fi
|
|
|
|
# Set the desired GitHub repository
|
|
repo="go-gost/gost"
|
|
base_url="https://api.github.com/repos/$repo/releases"
|
|
|
|
# Function to download and install gost
|
|
install_gost() {
|
|
version=$1
|
|
# Detect the operating system
|
|
if [[ "$(uname)" == "Linux" ]]; then
|
|
os="linux"
|
|
elif [[ "$(uname)" == "Darwin" ]]; then
|
|
os="darwin"
|
|
elif [[ "$(uname)" == "MINGW"* ]]; then
|
|
os="windows"
|
|
else
|
|
echo "Unsupported operating system."
|
|
exit 1
|
|
fi
|
|
|
|
# Detect the CPU architecture
|
|
arch=$(uname -m)
|
|
case $arch in
|
|
x86_64)
|
|
cpu_arch="amd64"
|
|
;;
|
|
armv5*)
|
|
cpu_arch="armv5"
|
|
;;
|
|
armv6*)
|
|
cpu_arch="armv6"
|
|
;;
|
|
armv7*)
|
|
cpu_arch="armv7"
|
|
;;
|
|
aarch64)
|
|
cpu_arch="arm64"
|
|
;;
|
|
i686)
|
|
cpu_arch="386"
|
|
;;
|
|
mips64*)
|
|
cpu_arch="mips64"
|
|
;;
|
|
mips*)
|
|
cpu_arch="mips"
|
|
;;
|
|
mipsel*)
|
|
cpu_arch="mipsle"
|
|
;;
|
|
*)
|
|
echo "Unsupported CPU architecture."
|
|
exit 1
|
|
;;
|
|
esac
|
|
get_download_url="$base_url/tags/$version"
|
|
download_url=$(curl -s "$get_download_url" | grep -Eo "\"browser_download_url\": \".*${os}.*${cpu_arch}.*\"" | awk -F'["]' '{print $4}')
|
|
|
|
# Download the binary
|
|
echo "Downloading gost version $version..."
|
|
curl -fsSL -o gost.tar.gz $download_url
|
|
|
|
# Extract and install the binary
|
|
echo "Installing gost..."
|
|
tar -xzf gost.tar.gz
|
|
chmod +x gost
|
|
mv gost /usr/local/bin/gost
|
|
|
|
echo "gost installation completed!"
|
|
}
|
|
|
|
# Retrieve available versions from GitHub API
|
|
versions=$(curl -s "$base_url" | grep -oP 'tag_name": "\K[^"]+')
|
|
|
|
# Check if --install option provided
|
|
if [[ "$1" == "--install" ]]; then
|
|
# Install the latest version automatically
|
|
latest_version=$(echo "$versions" | head -n 1)
|
|
install_gost $latest_version
|
|
else
|
|
# Display available versions to the user
|
|
echo "Available gost versions:"
|
|
select version in $versions; do
|
|
if [[ -n $version ]]; then
|
|
install_gost $version
|
|
break
|
|
else
|
|
echo "Invalid choice! Please select a valid option."
|
|
fi
|
|
done
|
|
fi
|