Skip to main content

Crate gout_api

Crate gout_api 

Source
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 响应外壳。
CreateKeyRequest
创建 API key 请求体。
CreateKeyResponse
创建 API key 响应体。
CreateTunnelRequest
创建隧道请求体。
KeyInfo
API key 基本信息(列表展示时使用)。
TunnelListEntry
隧道列表条目,由 GET /api/v1/tunnels 返回。
TunnelResponse
创建隧道响应体。

Enums§

TunnelType
隧道传输协议类型。

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。