summarylogtreecommitdiffstats
path: root/uuplugin_monitor.sh
blob: 0b0ff996c4da950fcac6be72263bd5de68cda74c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash

# 简化版 UU 加速器监控脚本

# 基本配置
INSTALL_DIR="/usr/lib/uu"
CONFIG_DIR="/etc/uu"
RUNNING_DIR="/tmp/uu"
PLUGIN_TAR="uu.tar.gz"
PLUGIN_EXE="uuplugin"
PLUGIN_CONF="uu.conf"
PID_FILE="/var/run/uuplugin.pid"
PLUGIN_TAR_MD5_FILE="uu.tar.gz.md5"
DOWNLOAD_URL="https://router.uu.163.com/api/plugin?type=steam-deck-plugin-x86_64"

# 确保目录存在
mkdir -p "$INSTALL_DIR" "$CONFIG_DIR" "$RUNNING_DIR"

# 下载插件包
download_plugin() {
    local tmp_file="$RUNNING_DIR/$PLUGIN_TAR"
    local plugin_info=$(curl -s -k -H "Accept:text/plain" "$DOWNLOAD_URL")

    [ -z "$plugin_info" ] && return 1

    local plugin_url=$(echo "$plugin_info" | cut -d',' -f1)
    local plugin_md5=$(echo "$plugin_info" | cut -d',' -f2)

    if ! curl -s -k "$plugin_url" -o "$tmp_file"; then
        rm -f "$tmp_file"
        return 1
    fi

    local download_md5=$(md5sum "$tmp_file" | awk '{print $1}')
    if [ "$download_md5" != "$plugin_md5" ]; then
        rm -f "$tmp_file"
        return 1
    fi

    # 解压并安装
    if tar -xzf "$tmp_file" -C "$RUNNING_DIR"; then
        chmod +x "$RUNNING_DIR/$PLUGIN_EXE"
        mv "$tmp_file" "$INSTALL_DIR/"
        echo "$plugin_md5" > "$INSTALL_DIR/$PLUGIN_TAR_MD5_FILE"
        return 0
    fi

    rm -f "$tmp_file"
    return 1
}

# 检查是否运行
is_running() {
    if [ -f "$PID_FILE" ]; then
        local pid=$(cat "$PID_FILE")
        if ps -p "$pid" >/dev/null 2>&1; then
            return 0
        fi
    fi
    return 1
}

# 启动插件
start_plugin() {
    if [ -f "$RUNNING_DIR/$PLUGIN_EXE" ]; then
        "$RUNNING_DIR/$PLUGIN_EXE" "$CONFIG_DIR/$PLUGIN_CONF" >/dev/null 2>&1 &
        return 0
    elif [ -f "$INSTALL_DIR/$PLUGIN_TAR" ]; then
        if tar -xzf "$INSTALL_DIR/$PLUGIN_TAR" -C "$RUNNING_DIR"; then
            chmod +x "$RUNNING_DIR/$PLUGIN_EXE"
            "$RUNNING_DIR/$PLUGIN_EXE" "$CONFIG_DIR/$PLUGIN_CONF" >/dev/null 2>&1 &
            return 0
        fi
    fi
    return 1
}

# 主循环
while true; do
    if ! is_running; then
        if ! start_plugin; then
            if ! download_plugin; then
                echo "无法下载或启动插件,将在5秒后重试..."
                sleep 5
                continue
            fi
            start_plugin
        fi
    fi
    sleep 60
done