diff --git a/README.md b/README.md index 9209d44..7710860 100755 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Setup DNS Records point to machine which runs `GoDoxy`, e.g. 2. Run setup script inside the directory, or [set up manually](#manual-setup) ```shell - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/go-proxy/v0.9/scripts/setup.sh)" + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/go-proxy/main/scripts/setup.sh)" ``` 3. Start the container `docker compose up -d` and wait for it to be ready @@ -86,15 +86,15 @@ Setup DNS Records point to machine which runs `GoDoxy`, e.g. 1. Make `config` directory then grab `config.example.yml` into `config/config.yml` - `mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/config.example.yml -O config/config.yml` + `mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/main/config.example.yml -O config/config.yml` 2. Grab `.env.example` into `.env` - `wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/.env.example -O .env` + `wget https://raw.githubusercontent.com/yusing/go-proxy/main/.env.example -O .env` 3. Grab `compose.example.yml` into `compose.yml` - `wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/compose.example.yml -O compose.yml` + `wget https://raw.githubusercontent.com/yusing/go-proxy/main/compose.example.yml -O compose.yml` ### Folder structrue diff --git a/README_CHT.md b/README_CHT.md index d997221..a3613c6 100644 --- a/README_CHT.md +++ b/README_CHT.md @@ -73,7 +73,7 @@ 2. 在目錄內運行安裝腳本,或[手動安裝](#手動安裝) ```shell - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/go-proxy/v0.9/scripts/setup.sh)" + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/go-proxy/main/scripts/setup.sh)" ``` 3. 啟動容器 `docker compose up -d` 並等待就緒 @@ -86,15 +86,15 @@ 1. 建立 `config` 目錄,然後將 `config.example.yml` 下載到 `config/config.yml` - `mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/config.example.yml -O config/config.yml` + `mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/main/config.example.yml -O config/config.yml` 2. 將 `.env.example` 下載到 `.env` - `wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/.env.example -O .env` + `wget https://raw.githubusercontent.com/yusing/go-proxy/main/.env.example -O .env` 3. 將 `compose.example.yml` 下載到 `compose.yml` - `wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/compose.example.yml -O compose.yml` + `wget https://raw.githubusercontent.com/yusing/go-proxy/main/compose.example.yml -O compose.yml` ### 資料夾結構 diff --git a/scripts/setup.sh b/scripts/setup.sh index b1a8cad..8de2c11 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -1,46 +1,46 @@ #!/bin/bash -set -e # Exit on error +set -e # Exit on error # Detect download tool if command -v curl >/dev/null 2>&1; then - DOWNLOAD_TOOL="curl" - DOWNLOAD_CMD="curl -fsSL -o" + DOWNLOAD_TOOL="curl" + DOWNLOAD_CMD="curl -fsSL -o" elif command -v wget >/dev/null 2>&1; then - DOWNLOAD_TOOL="wget" - DOWNLOAD_CMD="wget -qO" + DOWNLOAD_TOOL="wget" + DOWNLOAD_CMD="wget -qO" else - read -p "Neither curl nor wget is installed, install curl? (y/n): " INSTALL - if [ "$INSTALL" == "y" ]; then - install_pkg "curl" - else - echo "Error: Neither curl nor wget is installed. Please install one of them and try again." - exit 1 - fi + read -p "Neither curl nor wget is installed, install curl? (y/n): " INSTALL + if [ "$INSTALL" == "y" ]; then + install_pkg "curl" + else + echo "Error: Neither curl nor wget is installed. Please install one of them and try again." + exit 1 + fi fi echo "Using ${DOWNLOAD_TOOL} for downloads" -get_default_branch() { - local repo="$1" # Format: owner/repo - local branch - - if [ "$DOWNLOAD_TOOL" = "curl" ]; then - branch=$(curl -sL "https://api.github.com/repos/${repo}" | grep -o '"default_branch": *"[^"]*"' | cut -d'"' -f4) - elif [ "$DOWNLOAD_TOOL" = "wget" ]; then - branch=$(wget -qO- "https://api.github.com/repos/${repo}" | grep -o '"default_branch": *"[^"]*"' | cut -d'"' -f4) - fi - - if [ -z "$branch" ]; then - echo "main" # Fallback to 'main' if detection fails - else - echo "$branch" - fi -} +# get_default_branch() { +# local repo="$1" # Format: owner/repo +# local branch + +# if [ "$DOWNLOAD_TOOL" = "curl" ]; then +# branch=$(curl -sL "https://api.github.com/repos/${repo}" | grep -o '"default_branch": *"[^"]*"' | cut -d'"' -f4) +# elif [ "$DOWNLOAD_TOOL" = "wget" ]; then +# branch=$(wget -qO- "https://api.github.com/repos/${repo}" | grep -o '"default_branch": *"[^"]*"' | cut -d'"' -f4) +# fi + +# if [ -z "$branch" ]; then +# echo "main" # Fallback to 'main' if detection fails +# else +# echo "$branch" +# fi +# } # Environment variables with defaults REPO="yusing/go-proxy" -BRANCH=${BRANCH:-$(get_default_branch "$REPO")} +BRANCH=${BRANCH:-"main"} REPO_URL="https://github.com/$REPO" WIKI_URL="${REPO_URL}/wiki" BASE_URL="${REPO_URL}/raw/${BRANCH}" @@ -58,96 +58,96 @@ echo "Setting up GoDoxy" echo "Branch: ${BRANCH}" install_pkg() { - # detect package manager - if command -v apt >/dev/null 2>&1; then - apt install -y "$1" - elif command -v yum >/dev/null 2>&1; then - yum install -y "$1" - elif command -v pacman >/dev/null 2>&1; then - pacman -S --noconfirm "$1" - else - echo "Error: No supported package manager found" - exit 1 - fi + # detect package manager + if command -v apt >/dev/null 2>&1; then + apt install -y "$1" + elif command -v yum >/dev/null 2>&1; then + yum install -y "$1" + elif command -v pacman >/dev/null 2>&1; then + pacman -S --noconfirm "$1" + else + echo "Error: No supported package manager found" + exit 1 + fi } check_pkg() { - local cmd="$1" - local pkg="$2" - if ! command -v "$cmd" >/dev/null 2>&1; then - # check if user is root - if [ "$EUID" -ne 0 ]; then - echo "Error: $pkg is not installed and you are not running as root. Please install it and try again." - exit 1 - fi - read -p "$pkg is not installed, install it? (y/n): " INSTALL - if [ "$INSTALL" == "y" ]; then - install_pkg "$pkg" - else - echo "Error: $pkg is not installed. Please install it and try again." - exit 1 - fi - fi + local cmd="$1" + local pkg="$2" + if ! command -v "$cmd" >/dev/null 2>&1; then + # check if user is root + if [ "$EUID" -ne 0 ]; then + echo "Error: $pkg is not installed and you are not running as root. Please install it and try again." + exit 1 + fi + read -p "$pkg is not installed, install it? (y/n): " INSTALL + if [ "$INSTALL" == "y" ]; then + install_pkg "$pkg" + else + echo "Error: $pkg is not installed. Please install it and try again." + exit 1 + fi + fi } # Function to check if file/directory exists has_file_or_dir() { - [ -e "$1" ] + [ -e "$1" ] } # Function to create directory mkdir_if_not_exists() { - if [ ! -d "$1" ]; then - echo "Creating directory \"$1\"" - mkdir -p "$1" - fi + if [ ! -d "$1" ]; then + echo "Creating directory \"$1\"" + mkdir -p "$1" + fi } # Function to create empty file touch_if_not_exists() { - if [ ! -f "$1" ]; then - echo "Creating file \"$1\"" - touch "$1" - fi + if [ ! -f "$1" ]; then + echo "Creating file \"$1\"" + touch "$1" + fi } # Function to download file fetch_file() { - local remote_file="$1" - local out_file="$2" - - if has_file_or_dir "$out_file"; then - if [ "$remote_file" = "$out_file" ]; then - echo "\"$out_file\" already exists, not overwriting" - return - fi - read -p "Do you want to overwrite \"$out_file\"? (y/n): " OVERWRITE - if [ "$OVERWRITE" != "y" ]; then - echo "Skipping \"$remote_file\"" - return - fi - fi - - echo "Downloading \"$remote_file\" to \"$out_file\"" - if ! $DOWNLOAD_CMD "$out_file" "${BASE_URL}/${remote_file}"; then - echo "Error: Failed to download ${remote_file}" - rm -f "$out_file" # Clean up partial download - exit 1 - fi - echo "Done" + local remote_file="$1" + local out_file="$2" + + if has_file_or_dir "$out_file"; then + if [ "$remote_file" = "$out_file" ]; then + echo "\"$out_file\" already exists, not overwriting" + return + fi + read -p "Do you want to overwrite \"$out_file\"? (y/n): " OVERWRITE + if [ "$OVERWRITE" != "y" ]; then + echo "Skipping \"$remote_file\"" + return + fi + fi + + echo "Downloading \"$remote_file\" to \"$out_file\"" + if ! $DOWNLOAD_CMD "$out_file" "${BASE_URL}/${remote_file}"; then + echo "Error: Failed to download ${remote_file}" + rm -f "$out_file" # Clean up partial download + exit 1 + fi + echo "Done" } ask_while_empty() { - local prompt="$1" - local var_name="$2" - local value="" - while [ -z "$value" ]; do - read -p "$prompt" value - if [ -z "$value" ]; then - echo "Error: $var_name cannot be empty, please try again" - fi - done - eval "$var_name=\"$value\"" + local prompt="$1" + local var_name="$2" + local value="" + while [ -z "$value" ]; do + read -p "$prompt" value + if [ -z "$value" ]; then + echo "Error: $var_name cannot be empty, please try again" + fi + done + eval "$var_name=\"$value\"" } check_pkg "openssl" "openssl" @@ -187,20 +187,20 @@ ask_while_empty "Do you want to enable autocert? (y/n): " ENABLE_AUTOCERT # quit if not using autocert if [ "$ENABLE_AUTOCERT" == "y" ]; then - # ask for domain - echo "Setting up autocert" - ask_while_empty "Enter domain (e.g. example.com): " DOMAIN + # ask for domain + echo "Setting up autocert" + ask_while_empty "Enter domain (e.g. example.com): " DOMAIN - # ask for email - ask_while_empty "Enter email for Let's Encrypt: " EMAIL + # ask for email + ask_while_empty "Enter email for Let's Encrypt: " EMAIL - # ask if using cloudflare - ask_while_empty "Are you using cloudflare? (y/n): " USE_CLOUDFLARE + # ask if using cloudflare + ask_while_empty "Are you using cloudflare? (y/n): " USE_CLOUDFLARE - # ask for cloudflare api key - if [ "$USE_CLOUDFLARE" = "y" ]; then - ask_while_empty "Enter cloudflare api key: " CLOUDFLARE_API_KEY - cat <> "$CONFIG_BASE_PATH/$CONFIG_FILE_NAME" + # ask for cloudflare api key + if [ "$USE_CLOUDFLARE" = "y" ]; then + ask_while_empty "Enter cloudflare api key: " CLOUDFLARE_API_KEY + cat <>"$CONFIG_BASE_PATH/$CONFIG_FILE_NAME" autocert: provider: cloudflare email: $EMAIL @@ -210,10 +210,10 @@ autocert: options: auth_token: "$CLOUDFLARE_API_KEY" EOF - else - echo "Not using cloudflare, skipping autocert setup" - echo "Please refer to ${WIKI_URL}/Supported-DNS-01-Providers for more information" - fi + else + echo "Not using cloudflare, skipping autocert setup" + echo "Please refer to ${WIKI_URL}/Supported-DNS-01-Providers for more information" + fi fi echo "Setup finished"