- 驱动/名称/次默认路由/非默认口 评分探测 - install.sh 无参数:探测→写配置→装内核→启动→验证 - cpxy rebind 重插卡后重新绑定 - 自动生成 PANEL_SECRET;可选 apt 装依赖
57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 仅下载 sing-box(轻量核心)
|
|
set -euo pipefail
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
# shellcheck source=lib.sh
|
|
source "$ROOT_DIR/scripts/lib.sh"
|
|
load_config
|
|
need_root
|
|
ensure_dirs
|
|
mkdir -p /var/lib/cellular-proxy
|
|
|
|
ARCH="$(arch_go)"
|
|
TMP="$(mktemp -d)"
|
|
trap 'rm -rf "$TMP"' EXIT
|
|
|
|
download() {
|
|
local url="$1" dest="$2"
|
|
info "下载: $url"
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fL --retry 3 --connect-timeout 20 -o "$dest" "$url"
|
|
elif command -v wget >/dev/null 2>&1; then
|
|
wget -O "$dest" "$url"
|
|
else
|
|
die "需要 curl 或 wget"
|
|
fi
|
|
}
|
|
|
|
if [[ "$SING_BOX_SOURCE" == "local" ]]; then
|
|
[[ -n "$SING_BOX_BIN" && -x "$SING_BOX_BIN" ]] || die "SING_BOX_SOURCE=local 但 SING_BOX_BIN 无效"
|
|
install -m 0755 "$SING_BOX_BIN" "$INSTALL_DIR/bin/sing-box"
|
|
info "已安装本地 sing-box"
|
|
elif command -v sing-box >/dev/null 2>&1 && [[ -z "${FORCE_DOWNLOAD:-}" ]]; then
|
|
install -m 0755 "$(command -v sing-box)" "$INSTALL_DIR/bin/sing-box"
|
|
info "复用系统 sing-box: $(command -v sing-box)"
|
|
else
|
|
ver="$SING_BOX_VERSION"
|
|
name="sing-box-${ver}-linux-${ARCH}"
|
|
url="https://github.com/SagerNet/sing-box/releases/download/v${ver}/${name}.tar.gz"
|
|
download "$url" "$TMP/sb.tgz"
|
|
tar -xzf "$TMP/sb.tgz" -C "$TMP"
|
|
install -m 0755 "$TMP/${name}/sing-box" "$INSTALL_DIR/bin/sing-box"
|
|
info "已安装 sing-box v${ver}"
|
|
fi
|
|
|
|
# 安装中文静态 UI
|
|
mkdir -p "$INSTALL_DIR/ui"
|
|
if [[ -f "$ROOT_DIR/ui/index.html" ]]; then
|
|
cp -a "$ROOT_DIR/ui/." "$INSTALL_DIR/ui/"
|
|
info "已安装内置中文面板 -> $INSTALL_DIR/ui"
|
|
else
|
|
warn "未找到 ui/index.html"
|
|
fi
|
|
|
|
info "二进制就绪:"
|
|
ls -la "$INSTALL_DIR/bin"
|
|
du -sh "$INSTALL_DIR/bin" "$INSTALL_DIR/ui" 2>/dev/null || true
|