111
Some checks failed
Build Multi-Platform Binaries / build-frontend (push) Successful in 1m7s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 1m33s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 2m52s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m54s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 3m15s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 2m8s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 2m24s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 2m46s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 3m33s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Has been cancelled

This commit is contained in:
2026-01-11 22:51:16 +08:00
parent 1c190330d9
commit cb0f8df0d8
2 changed files with 9 additions and 4 deletions

View File

@@ -601,7 +601,6 @@ func (c *Client) handleJSPluginInstall(stream net.Conn, msg *protocol.Message) {
} }
c.logf("[Client] JS plugin %s installed", req.PluginName) c.logf("[Client] JS plugin %s installed", req.PluginName)
c.sendJSPluginResult(stream, req.PluginName, true, "")
// 保存版本信息(防止降级攻击) // 保存版本信息(防止降级攻击)
if c.versionStore != nil { if c.versionStore != nil {
@@ -611,10 +610,13 @@ func (c *Client) handleJSPluginInstall(stream net.Conn, msg *protocol.Message) {
} }
} }
// 自动启动 // 先启动插件,再发送安装结果
// 这样服务端收到结果后启动监听器时,客户端插件已经准备好了
if req.AutoStart { if req.AutoStart {
c.startJSPlugin(jsPlugin, req) c.startJSPlugin(jsPlugin, req)
} }
c.sendJSPluginResult(stream, req.PluginName, true, "")
} }
// sendJSPluginResult 发送 JS 插件安装结果 // sendJSPluginResult 发送 JS 插件安装结果

View File

@@ -1607,13 +1607,15 @@ func (s *Server) reinstallJSPlugin(clientID, pluginName, ruleName string) error
return fmt.Errorf("client not found: %w", err) return fmt.Errorf("client not found: %w", err)
} }
// 合并配置 // 合并配置并获取 PluginID
config := jsPlugin.Config config := jsPlugin.Config
if config == nil { if config == nil {
config = make(map[string]string) config = make(map[string]string)
} }
var pluginID string
for _, cp := range client.Plugins { for _, cp := range client.Plugins {
if cp.Name == pluginName { if cp.Name == pluginName {
pluginID = cp.ID
for k, v := range cp.Config { for k, v := range cp.Config {
config[k] = v config[k] = v
} }
@@ -1621,9 +1623,10 @@ func (s *Server) reinstallJSPlugin(clientID, pluginName, ruleName string) error
} }
} }
log.Printf("[Server] Reinstalling JS plugin %s to client %s", pluginName, clientID) log.Printf("[Server] Reinstalling JS plugin %s (ID: %s) to client %s", pluginName, pluginID, clientID)
req := router.JSPluginInstallRequest{ req := router.JSPluginInstallRequest{
PluginID: pluginID,
PluginName: pluginName, PluginName: pluginName,
Source: jsPlugin.Source, Source: jsPlugin.Source,
Signature: jsPlugin.Signature, Signature: jsPlugin.Signature,