feat: 脚本
这个提交包含在:
@@ -64,13 +64,14 @@ bash <(curl -fsSL https://git.suhang.me/suhang/scripts/raw/branch/release/realm/
|
|||||||
|
|
||||||
## GitHub 代理
|
## GitHub 代理
|
||||||
|
|
||||||
安装时会提示输入 GitHub 代理域名(**默认直连,不使用代理**;如需走代理推荐填 `ghfast.top`,输入 `none` 也表示直连)。脚本会把代理拼接到 GitHub API 与 release 下载地址前,例如:
|
安装时会提示输入 GitHub 代理域名(**默认直连,不使用代理**;如需走代理推荐填 `ghfast.top`)。代理只作用于 release 二进制下载地址,例如:
|
||||||
|
|
||||||
```
|
```
|
||||||
https://ghfast.top/https://github.com/zhboner/realm/releases/download/...
|
https://ghfast.top/https://github.com/zhboner/realm/releases/download/...
|
||||||
https://ghfast.top/https://api.github.com/repos/zhboner/realm/releases/latest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> `api.github.com`(用于查询最新版本号)不会走代理 —— 该接口大多数 GitHub 反代都无法转发。如果你的网络无法直连 `api.github.com`,需自行解决(例如通过 hosts 或本机代理)。
|
||||||
|
|
||||||
选择会保存到 `<INSTALL_DIR>/.proxy`,更新内核(菜单 `10`)时会沿用。如需更换代理,可直接编辑该文件后再执行更新。
|
选择会保存到 `<INSTALL_DIR>/.proxy`,更新内核(菜单 `10`)时会沿用。如需更换代理,可直接编辑该文件后再执行更新。
|
||||||
|
|
||||||
## 调试
|
## 调试
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ REALM_LOG=""
|
|||||||
REALM_SERVICE="/etc/systemd/system/realm.service"
|
REALM_SERVICE="/etc/systemd/system/realm.service"
|
||||||
SCRIPT_RAW_URL="https://git.suhang.me/suhang/scripts/raw/branch/release/realm/realm.sh"
|
SCRIPT_RAW_URL="https://git.suhang.me/suhang/scripts/raw/branch/release/realm/realm.sh"
|
||||||
GITHUB_API="https://api.github.com/repos/zhboner/realm/releases/latest"
|
GITHUB_API="https://api.github.com/repos/zhboner/realm/releases/latest"
|
||||||
DEFAULT_PROXY=""
|
|
||||||
GITHUB_PROXY=""
|
GITHUB_PROXY=""
|
||||||
DEBUG=false
|
DEBUG=false
|
||||||
|
|
||||||
@@ -64,19 +63,15 @@ function load_proxy() {
|
|||||||
|
|
||||||
function prompt_proxy() {
|
function prompt_proxy() {
|
||||||
local p
|
local p
|
||||||
local hint="默认不使用代理"
|
|
||||||
[[ -n "$DEFAULT_PROXY" ]] && hint="默认 ${DEFAULT_PROXY}"
|
|
||||||
echo -e "${CYAN}提示${NC}: 当前可用的 GitHub 代理推荐 ${YELLOW}ghfast.top${NC}"
|
echo -e "${CYAN}提示${NC}: 当前可用的 GitHub 代理推荐 ${YELLOW}ghfast.top${NC}"
|
||||||
read -p "请输入 GitHub 代理域名(${hint},输入 none 强制不使用代理): " p
|
read -p "请输入 GitHub 代理域名(直接回车不使用代理): " p
|
||||||
p="${p:-$DEFAULT_PROXY}"
|
p="${p#http://}"
|
||||||
if [[ -z "$p" || "$p" == "none" || "$p" == "NONE" ]]; then
|
p="${p#https://}"
|
||||||
GITHUB_PROXY=""
|
p="${p%/}"
|
||||||
|
GITHUB_PROXY="$p"
|
||||||
|
if [[ -z "$GITHUB_PROXY" ]]; then
|
||||||
echo "GitHub proxy: disabled"
|
echo "GitHub proxy: disabled"
|
||||||
else
|
else
|
||||||
p="${p#http://}"
|
|
||||||
p="${p#https://}"
|
|
||||||
p="${p%/}"
|
|
||||||
GITHUB_PROXY="$p"
|
|
||||||
echo "GitHub proxy: ${GITHUB_PROXY}"
|
echo "GitHub proxy: ${GITHUB_PROXY}"
|
||||||
fi
|
fi
|
||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
@@ -135,17 +130,15 @@ function detect_arch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_latest_version() {
|
function get_latest_version() {
|
||||||
local api_url v
|
local v
|
||||||
api_url=$(gh_url "$GITHUB_API")
|
dbg "get_latest_version: GET ${GITHUB_API} (direct, api.github.com 不走代理)"
|
||||||
dbg "get_latest_version: GET ${api_url}"
|
|
||||||
local stderr_redirect="2>/dev/null"
|
|
||||||
if [[ "$DEBUG" == "true" ]]; then
|
if [[ "$DEBUG" == "true" ]]; then
|
||||||
v=$(curl -fSL "$api_url" | grep -oE '"tag_name":\s*"[^"]+"' | head -n1 | sed -E 's/.*"([^"]+)"$/\1/')
|
v=$(curl -fSL "$GITHUB_API" | grep -oE '"tag_name":\s*"[^"]+"' | head -n1 | sed -E 's/.*"([^"]+)"$/\1/')
|
||||||
else
|
else
|
||||||
v=$(curl -fsSL "$api_url" 2>/dev/null | grep -oE '"tag_name":\s*"[^"]+"' | head -n1 | sed -E 's/.*"([^"]+)"$/\1/')
|
v=$(curl -fsSL "$GITHUB_API" 2>/dev/null | grep -oE '"tag_name":\s*"[^"]+"' | head -n1 | sed -E 's/.*"([^"]+)"$/\1/')
|
||||||
fi
|
fi
|
||||||
if [[ -z "$v" ]]; then
|
if [[ -z "$v" ]]; then
|
||||||
echo -e "${RED}Failed to fetch latest realm version from GitHub (proxy: ${GITHUB_PROXY:-none}).${NC}" >&2
|
echo -e "${RED}Failed to fetch latest realm version from api.github.com (该接口不走代理,请检查直连)。${NC}" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
dbg "get_latest_version: ${v}"
|
dbg "get_latest_version: ${v}"
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户