mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 17:38:10 +00:00
feat: 设备鉴权迁移至客户端 + 插件卸载保护
安全修复(客户端鉴权): - remotedevice 服务端移除授权状态存储(authorized map/SetAuthorized/handleDeviceAuth) - DeviceMeta.Authorized 改为设备 hello 自报,服务端仅透传展示 - device_ctl_* 工具移除服务端授权检查,无条件转发,设备端自行决定是否执行 - 共享设备桥库 Bridge 新增本地 authorized 状态,未授权收到 cmd 直接拒绝 - waiter: --device-authorized / device_authorized 配置控制本地授权 - GUI: 授权存 gui-prefs 本地文件;设备页仅本机可切换开关 - webui /device/auth 旧路径返回 410 Gone - 根因:agent 可经 config_set 篡改服务端授权配置自行授权设备 插件管理强化: - 内置插件禁止卸载(IsBuiltinPlugin + 409),外部插件卸载即时生效 - 卸载不存在插件返回 404;移除误导性 reload_required 提示 - webui 插件路由:名称白名单校验防路径穿越、保留字路径保护
This commit is contained in:
@ -112,7 +112,7 @@ func NewRegistry() *Registry {
|
||||
pluginAutoRestart: make(map[string]bool),
|
||||
sdkRefs: make(map[string]*sdk.PluginSDK),
|
||||
knownDisabled: make(map[string]bool),
|
||||
pluginHashes: make(map[string]string),
|
||||
pluginHashes: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
||||
@ -646,6 +646,24 @@ func (r *Registry) Disable(name string) error {
|
||||
|
||||
// ---- PluginManager interface ----
|
||||
|
||||
// PluginManager interface
|
||||
|
||||
// IsBuiltinPlugin 判断插件是否为内置插件(有编译期工厂,由 init() 注册)。
|
||||
// 内置插件只能禁用/启用,不能卸载。
|
||||
func (r *Registry) IsBuiltinPlugin(name string) bool {
|
||||
if r == nil {
|
||||
return false
|
||||
}
|
||||
r.mu.RLock()
|
||||
_, ok := r.factories[name]
|
||||
r.mu.RUnlock()
|
||||
if ok {
|
||||
return true
|
||||
}
|
||||
_, ok = globalFactories.Load(name)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (r *Registry) ListLoadedPlugins() []string { return r.List() }
|
||||
|
||||
func (r *Registry) ListDisabledPlugins() []sdk.DisabledPluginInfo {
|
||||
|
||||
Reference in New Issue
Block a user