common.sh 1.9 KB

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