init: 自 zomaintain/backend/rdplib 平移独立成库; module path 从上游 github.com/nakagami/grdp 改为 git.zeroonesoft.cn/golib/rdplib

This commit is contained in:
w11
2026-09-19 18:55:43 +08:00
commit 1096fbce9d
94 changed files with 36790 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
// Package grdp 实现微软 RDP(远程桌面协议)的纯 Go 客户端协议栈。
//
// 本包是 nakagami/grdp 的深度 fork(MIT,保留上游版权),由 webrdp
// 项目扩展维护:NLA/CredSSP 认证、RDPGFX/H.264 多形态回调、动态分辨率、
// Unicode 输入、多形态剪贴板、音频、驱动器重定向(rdpdr)等能力
// 均在原生 Go API 之下,同一套协议栈可同时编译为原生程序与
// GOOS=js GOARCH=wasm 的浏览器模块。
//
// # 基本用法
//
// client := grdp.NewRdpClient("host:3389", 1280, 800,
// func(addr string) (net.Conn, error) { return net.Dial("tcp", addr) })
// client.OnError(func(e error) { ... }).
// OnReady(func() { ... }).
// OnBitmap(func(bits []grdp.Bitmap) { ... })
// err := client.Login(domain, user, password)
//
// 所有 On* 回调在协议栈读循环 goroutine 内同步触发,回调不得长时间
// 阻塞;Login 阻塞直到能力协商完成(会话就绪以 OnReady 为准)。
//
// # 渲染模型
//
// 传统管线经 OnBitmap 交付 Bitmap(RGBA()/FillRGBA 解码);GFX 管线经
// OnH264Raw/OnH264I420/OnH264NV12 交付 H.264 NAL 或原始平面——解码
// 由宿主负责(浏览器 WebCodecs、FFmpeg 均可),纯 Go 构建即可使用。
//
// # 虚拟通道
//
// 内置 rdpsnd/cliprdr/rdpdr/rdpgfx/rdpedisp/drdynvc(plugin 子包),
// 自定义通道实现 plugin.ChannelTransport 三方法后经 Channels.Register
// 注册,见 plugin/channel.go。
//
// 目录导览:core/(传输抽象与工具)、emission/(事件发射器)、
// protocol/(x224/tpkt/t125/sec/nla/pdu/lic/gcc 协议层)、
// plugin/(虚拟通道框架与内置通道)。
package grdp