- 新增 webhttp 包: Router 最小路由接口(5 动词) + ServeMuxRouter 适配器 + WriteJSON 统一响应 - file/shell/process 三个被控能力包改以标准库 handler 形态注册, 不再绑死 gin - 由此 gin 及其连带重依赖(quic-go/http3、mongo bson、ugorji codec、goccy、validator)退出被控端二进制 - shell: recDir 死参数修复——原实现硬编码 ./rec, 传入的录制目录不生效; 现录制写入与记录列表同源 - shell: 终端创建失败由 panic 改为记日志后关连接(net/http 按连接兜底恢复, 不再依赖框架 Recovery) - file: 上传落盘不再沿用 SaveUploadedFile 的 MkdirAll+Chmod(Windows 盘根 Chmod 报参数不正确), 保留 MkdirAll 去掉 Chmod - 消费方: remote-client 纯 ServeMux 承载; remote-service 保留 gin 栈经 gin.WrapH 桥接(middle 链照常生效) 破坏性变更: RegisterRouters* 形参 gin.RouterGroup → webhttp.Router, 升级 tag v0.5.0
shell
被控端 Web 终端(自 remote-backend-server internal/handlers/shell 移植,去 DB 依赖):WebSocket 交互式终端(Windows ConPTY / Unix pty)+ asciinema 会话录制。
路由
import "git.zeroonesoft.cn/golib/remote-core/shell"
shell.RegisterRoutersWebShell(r *gin.RouterGroup, recDir)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /web/shell |
WebSocket 升级,启动终端(Windows 优先 powershell.exe,缺失回退 cmd.exe;Unix 为 bash) |
| GET | /web/shell/record |
录制文件列表 |
协议
WebSocket JSON 信封 OpDataType{op, data}:输入/输出流与 resize(ResizeDataType
调整行列)走同一连接。
注意
- 录制为 asciinema 格式,落盘
recDir,可用 asciinema 播放器回放审计。 CheckOrigin放开所有来源(跨域),接入公网必须由网关侧补鉴权。