common.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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_PROXY 设置代理
  10. # 海外版本默认不使用代理,如需代理可设置环境变量
  11. if [ -n "$GITHUB_PROXY" ]; then
  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. else
  15. GITHUB_API_URL="https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest"
  16. GITHUB_DOWNLOAD_BASE="https://github.com/aiprodcoder/MIXAPI/releases/download"
  17. fi
  18. # 获取最新版本号
  19. get_latest_version() {
  20. wget -qO- "$GITHUB_API_URL" | sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p'
  21. }
  22. # 获取下载URL
  23. get_download_url() {
  24. local version=$1
  25. local arch="$(uname -m)"
  26. case "$arch" in
  27. 'x86_64')
  28. echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-amd64"
  29. ;;
  30. 'aarch64')
  31. echo "${GITHUB_DOWNLOAD_BASE}/${version}/mixapi-${version}-linux-arm64"
  32. ;;
  33. *)
  34. echo ""
  35. ;;
  36. esac
  37. }
  38. # 下载指定版本
  39. # 参数: $1=版本号, $2=目标文件路径
  40. download_version() {
  41. local version=$1
  42. local target=$2
  43. local url=$(get_download_url "$version")
  44. if [ -z "$url" ]; then
  45. echo "不支持的架构: $(uname -m)"
  46. return 1
  47. fi
  48. echo "下载地址: ${url}"
  49. wget -qO "$target" "$url"
  50. if [ $? -eq 0 ] && [ -s "$target" ]; then
  51. chmod +x "$target"
  52. return 0
  53. else
  54. rm -f "$target"
  55. return 1
  56. fi
  57. }
  58. # 获取当前版本
  59. get_current_version() {
  60. if [ -f "$VERSION_FILE" ]; then
  61. cat "$VERSION_FILE"
  62. else
  63. echo ""
  64. fi
  65. }
  66. # 保存版本号
  67. save_version() {
  68. echo "$1" > "$VERSION_FILE"
  69. }
  70. # 查找 mixapi 进程 PID
  71. find_mixapi_pid() {
  72. local pid=""
  73. pid=$(ps aux 2>/dev/null | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1)
  74. if [ -z "$pid" ]; then
  75. # busybox ps 格式不同,尝试另一种方式
  76. pid=$(ps | grep "$MIXAPI_BIN" | grep -v grep | awk '{print $1}' | head -1)
  77. fi
  78. echo "$pid"
  79. }