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

@@ -574,6 +574,49 @@ func (s *Server) GetClientStatus(clientID string) (online bool, lastPing string,
return false, "", ""
}
// GetClientPluginStatus 获取客户端插件运行状态
func (s *Server) GetClientPluginStatus(clientID string) ([]protocol.PluginStatusEntry, error) {
s.mu.RLock()
cs, ok := s.clients[clientID]
s.mu.RUnlock()
if !ok {
return nil, fmt.Errorf("client %s not online", clientID)
}
stream, err := cs.Session.Open()
if err != nil {
return nil, err
}
defer stream.Close()
// 发送查询请求
msg, err := protocol.NewMessage(protocol.MsgTypePluginStatusQuery, nil)
if err != nil {
return nil, err
}
if err := protocol.WriteMessage(stream, msg); err != nil {
return nil, err
}
// 读取响应
resp, err := protocol.ReadMessage(stream)
if err != nil {
return nil, err
}
if resp.Type != protocol.MsgTypePluginStatusQueryResp {
return nil, fmt.Errorf("unexpected response type: %d", resp.Type)
}
var statusResp protocol.PluginStatusQueryResponse
if err := resp.ParsePayload(&statusResp); err != nil {
return nil, err
}
return statusResp.Plugins, nil
}
// GetAllClientStatus 获取所有客户端状态
func (s *Server) GetAllClientStatus() map[string]struct {
Online bool