common.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/sh
  2. # 公共变量
  3. VERSION_FILE="/app/version.txt"
  4. MIXAPI_BIN="/app/mixapi"
  5. MIXAPI_NEW="/app/mixapi.new"
  6. UPDATE_SCRIPT="/app/check_update.sh"
  7. CRON_FILE="/var/spool/cron/crontabs/root"
  8. DEFAULT_VERSION="v1.2"
  9. # 国内使用 GitHub 代理加速
  10. # 支持通过环境变量 GITHUB_PROXY 覆盖默认代理
  11. GITHUB_PROXY="${GITHUB_PROXY:-https://ghfast.top}"
  12. GITHUB_API_URL="${GITHUB_PROXY}/https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest"
  13. GITHUB_DOWNLOAD_BASE="${GITHUB_PROXY}/https://github.com/aiprodcoder/MIXAPI/releases/download"
  14. # 获取最新版本号
  15. get_latest_version() {
  16. wget -qO- "$GITHUB_API_URL" | sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p'
  17. }
  18. # 获取下载URL
  19. get_download_url() {
  20. local version=$1
  21. local arch="$(uname -m)"
  22. case "$arch" in
  23. 'x86_64')
  24. echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-amd64"
  25. ;;
  26. 'aarch64')
  27. echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-arm64"
  28. ;;
  29. *)
  30. echo ""
  31. ;;
  32. esac
  33. }
  34. # 下载指定版本
  35. # 参数: $1=版本号, $2=目标文件路径
  36. download_version() {
  37. local version=$1
  38. local target=$2
  39. local url=$(get_download_url "$version")
  40. if [ -z "$url" ]; then
  41. echo "不支持的架构: $(uname -m)"
  42. return 1
  43. fi
  44. echo "下载地址: ${url}"
  45. wget -qO "$target" "$url"
  46. if [ $? -eq 0 ] && [ -s "$target" ]; then
  47. chmod +x "$target"
  48. return 0
  49. else
  50. rm -f "$target"
  51. return 1
  52. fi
  53. }
  54. # 获取当前版本
  55. get_current_version() {
  56. if [ -f "$VERSION_FILE" ]; then
  57. cat "$VERSION_FILE"
  58. else
  59. echo ""
  60. fi
  61. }
  62. # 保存版本号
  63. save_version() {
  64. echo "$1" > "$VERSION_FILE"
  65. }
  66. # 查找 mixapi 进程 PID
  67. find_mixapi_pid() {
  68. local pid=""
  69. pid=$(ps aux 2>/dev/null | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1)
  70. if [ -z "$pid" ]; then
  71. # busybox ps 格式不同,尝试另一种方式
  72. pid=$(ps | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1)
  73. fi
  74. echo "$pid"
  75. }