Expand description
§Gout API
Gout 的 Rust SDK。
包含共享协议类型和两个客户端:
| 模块 | 用途 | 认证 |
|---|---|---|
client | 隧道操作(创建/列出/删除) | 普通 api-key |
admin | 管理操作(创建/列出/删除 API key) | admin-api-key |
data_channel | 数据通道握手和 TCP 转发(底层协议) | token 认证 |
§快速开始
use gout_api::client::GoutClient;
use gout_api::admin::GoutAdminClient;
use gout_api::TunnelType;
let gout = GoutClient::new("server:8080", "sk-xxx");
let tun = gout.create_tunnel(TunnelType::Tcp, 4000).await.unwrap();
gout.delete_tunnel(tun.token).await.unwrap();
let admin = GoutAdminClient::new("server:8080", "admin-key");
let key = admin.create_key("my laptop").await.unwrap();Modules§
- admin
GoutAdminClient— 使用 admin key 管理 goutd。- client
GoutClient— 使用普通api-key与 goutd 通信。- data_
channel - 数据通道协议 — 握手、确认、双向 pipe。
- serde_
u64_ str - 将
u64序列化为 JSON 字符串的 serde 辅助模块。
Structs§
- ApiResponse
- 通用 REST API 响应外壳。
- Create
KeyRequest - 创建 API key 请求体。
- Create
KeyResponse - 创建 API key 响应体。
- Create
Tunnel Request - 创建隧道请求体。
- KeyInfo
- API key 基本信息(列表展示时使用)。
- Tunnel
List Entry - 隧道列表条目,由
GET /api/v1/tunnels返回。 - Tunnel
Response - 创建隧道响应体。
Enums§
- Tunnel
Type - 隧道传输协议类型。
Constants§
- HANDSHAKE_
SIZE - 握手帧字节数:
[token: u64 BE]+[tunnel_type: u8]= 9 字节。 - SIGNAL_
NEW_ CONN - 信号通道通知字节:服务端→客户端,表示有新的外部连接。
- STATUS_
ERR - 握手失败状态码。
- STATUS_
OK - 握手成功状态码。
- UDP_
FRAME_ HEADER - UDP 帧头字节数:
[len: u16 BE]= 2 字节。
Functions§
- api_ok
- 构造一个无数据的成功响应
{"success": true, "data": null}。 - decode_
handshake - 解码客户端握手帧,返回
(token, tunnel_type)。 - decode_
udp_ header - 解码 UDP 帧头,返回 payload 长度。
- encode_
handshake - 编码客户端握手帧。
- encode_
udp_ frame - 编码 UDP 帧:
[len: u16 BE][data]。 - generate_
api_ key - 生成一个随机的 API key,格式为
sk-+ 24 位十六进制字符。 - generate_
token - 生成一个随机的 64 位隧道 token。