25 lines
1.0 KiB
Bash
25 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# 一键更新本地 acme.sh。
|
|
# 使用 jsDelivr CDN 获取 acmesh-official/acme.sh 的 master 最新版本,
|
|
# 不执行 GitHub clone,也不依赖 GitHub 下载地址;脚本保存到 API/acme/。
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
API_ROOT="$(realpath "$SCRIPT_DIR/..")"
|
|
ACME_DIR="$API_ROOT/acme"
|
|
ACME_FILE="$ACME_DIR/acme.sh"
|
|
SOURCE_URL="https://cdn.jsdelivr.net/gh/acmesh-official/acme.sh@master/acme.sh"
|
|
mkdir -p "$ACME_DIR"
|
|
TEMP_FILE="$(mktemp "$ACME_DIR/acme.sh.XXXXXX")"
|
|
trap 'rm -f "$TEMP_FILE"' EXIT
|
|
|
|
command -v curl >/dev/null 2>&1 || { echo "缺少 curl,请先安装 curl。" >&2; exit 1; }
|
|
echo "正在从非 GitHub CDN 下载 acme.sh 最新版本..."
|
|
curl -fsSL --retry 3 --connect-timeout 15 "$SOURCE_URL" -o "$TEMP_FILE"
|
|
grep -q '^VER=' "$TEMP_FILE" || { echo "下载内容不是有效的 acme.sh 文件。" >&2; exit 1; }
|
|
chmod 755 "$TEMP_FILE"
|
|
mv -f "$TEMP_FILE" "$ACME_FILE"
|
|
echo "acme.sh 已更新到:$ACME_FILE"
|
|
grep '^VER=' "$ACME_FILE" | head -n 1
|