update
All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 34s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 5m6s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 1m39s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 5m8s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 2m45s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 5m50s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 2m20s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 4m25s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 5m1s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 1m4s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 5m16s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 5m13s

This commit is contained in:
2026-01-03 21:00:05 +08:00
parent ae6cb9d422
commit 08262654d6
5 changed files with 118 additions and 5 deletions

View File

@@ -9,6 +9,7 @@ import (
"os/exec"
"path/filepath"
"runtime"
"strings"
"sync"
"time"
@@ -248,6 +249,8 @@ func (c *Client) handleStream(stream net.Conn) {
go c.handleLogRequest(stream, msg)
case protocol.MsgTypeLogStop:
c.handleLogStop(stream, msg)
case protocol.MsgTypePluginStatusQuery:
c.handlePluginStatusQuery(stream, msg)
}
}
@@ -913,6 +916,30 @@ func restartClientProcess(path, serverAddr, token, id string) {
os.Exit(0)
}
// handlePluginStatusQuery 处理插件状态查询
func (c *Client) handlePluginStatusQuery(stream net.Conn, msg *protocol.Message) {
defer stream.Close()
c.pluginMu.RLock()
plugins := make([]protocol.PluginStatusEntry, 0, len(c.runningPlugins))
for key := range c.runningPlugins {
// key 格式为 "pluginName:ruleName",只提取 pluginName
parts := strings.SplitN(key, ":", 2)
pluginName := parts[0]
plugins = append(plugins, protocol.PluginStatusEntry{
PluginName: pluginName,
Running: true,
})
}
c.pluginMu.RUnlock()
resp := protocol.PluginStatusQueryResponse{
Plugins: plugins,
}
respMsg, _ := protocol.NewMessage(protocol.MsgTypePluginStatusQueryResp, resp)
protocol.WriteMessage(stream, respMsg)
}
// handleLogRequest 处理日志请求
func (c *Client) handleLogRequest(stream net.Conn, msg *protocol.Message) {
if c.logger == nil {