mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 18:08:04 +00:00
feat(cli): /plugin install 真正可用(直连 pluginmgr 回环端点,与 WebUI 同实现)
原来 CLI 的 /plugin install 只打印“请去 WebUI”。插件安装逻辑在 pluginmgr 插件里(回环 HTTP,默认 127.0.0.1:9876,无鉴权),WebUI 也是转发到它; CLI 插件改为直连同一端点,能力对齐。
This commit is contained in:
@ -4,8 +4,10 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
@ -532,10 +534,24 @@ func (p *Plugin) cmdPlugin(conn net.Conn, parts []string, s *sdk.PluginSDK) {
|
|||||||
writeLine(conn, map[string]interface{}{"type": "response", "content": "用法: /plugin install <url>"})
|
writeLine(conn, map[string]interface{}{"type": "response", "content": "用法: /plugin install <url>"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
writeLine(conn, map[string]interface{}{
|
// 与 WebUI 同一实现:插件安装/升级逻辑在 pluginmgr 插件里,它监听一个
|
||||||
"type": "response",
|
// 回环 HTTP 地址(默认 127.0.0.1:9876,无鉴权)。WebUI 也是转发到它,
|
||||||
"content": "安装插件需要网络,本环境可能受限。请通过 WebUI 或使用 agent 对话安装。",
|
// 这里直连同一端点,不再只打印一句“请去 WebUI”。
|
||||||
})
|
addr := "127.0.0.1:9876"
|
||||||
|
if v, err := s.Settings().GetPlugin("pluginmgr", "http_addr"); err == nil {
|
||||||
|
if str, ok := v.(string); ok && str != "" {
|
||||||
|
addr = str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reqBody, _ := json.Marshal(map[string]interface{}{"url": parts[2]})
|
||||||
|
resp, err := http.Post("http://"+addr+"/plugins", "application/json", strings.NewReader(string(reqBody)))
|
||||||
|
if err != nil {
|
||||||
|
writeLine(conn, map[string]interface{}{"type": "error", "error": "无法连接 pluginmgr(" + addr + "): " + err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
data, _ := io.ReadAll(resp.Body)
|
||||||
|
writeLine(conn, map[string]interface{}{"type": "response", "content": string(data)})
|
||||||
|
|
||||||
case "remove":
|
case "remove":
|
||||||
if len(parts) < 3 {
|
if len(parts) < 3 {
|
||||||
|
|||||||
Reference in New Issue
Block a user