#!/bin/sh # 公共变量 VERSION_FILE="/app/version.txt" MIXAPI_BIN="/app/mixapi" MIXAPI_NEW="/app/mixapi.new" UPDATE_SCRIPT="/app/check_update.sh" CRON_FILE="/var/spool/cron/crontabs/root" DEFAULT_VERSION="v1.2" # 支持通过环境变量 GITHUB_PROXY 设置代理 # 海外版本默认不使用代理,如需代理可设置环境变量 if [ -n "$GITHUB_PROXY" ]; then GITHUB_API_URL="${GITHUB_PROXY}/https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest" GITHUB_DOWNLOAD_BASE="${GITHUB_PROXY}/https://github.com/aiprodcoder/MIXAPI/releases/download" else GITHUB_API_URL="https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest" GITHUB_DOWNLOAD_BASE="https://github.com/aiprodcoder/MIXAPI/releases/download" fi # 获取最新版本号 get_latest_version() { wget -qO- "$GITHUB_API_URL" | sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p' } # 获取下载URL get_download_url() { local version=$1 local arch="$(uname -m)" case "$arch" in 'x86_64') echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-amd64" ;; 'aarch64') echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-arm64" ;; *) echo "" ;; esac } # 下载指定版本 # 参数: $1=版本号, $2=目标文件路径 download_version() { local version=$1 local target=$2 local url=$(get_download_url "$version") if [ -z "$url" ]; then echo "不支持的架构: $(uname -m)" return 1 fi echo "下载地址: ${url}" wget -qO "$target" "$url" if [ $? -eq 0 ] && [ -s "$target" ]; then chmod +x "$target" return 0 else rm -f "$target" return 1 fi } # 获取当前版本 get_current_version() { if [ -f "$VERSION_FILE" ]; then cat "$VERSION_FILE" else echo "" fi } # 保存版本号 save_version() { echo "$1" > "$VERSION_FILE" } # 查找 mixapi 进程 PID find_mixapi_pid() { local pid="" pid=$(ps aux 2>/dev/null | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1) if [ -z "$pid" ]; then # busybox ps 格式不同,尝试另一种方式 pid=$(ps | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1) fi echo "$pid" }