1个不稳定版本
0.1.0 | 2023年3月28日 |
---|
#4 在 #mobility
21KB
296 行
turntie-cli
此工具演示了使用turntie
库的用法,该库允许启用Mobility扩展将两个TURN分配绑定在一起,以便端点可以移动到其他位置并用于通信。
功能
- 在由IP、端口、用户名和密码指定的TURN服务器上创建一对分配,并将中继地址作为权限添加到对方。
- 将TURN客户端状态(包括凭据)序列化为不太长的base64行。
- 从这些行中恢复TURN客户端,并将stdin行作为UDP数据包发送到另一个对等方到TURN服务器。
- 序列化的TURN客户端状态(指定器)可以移动到另一个主机/网络。
- 作为Rust库(适用于Tokio)提供
限制
- 安全性不确定:指定的行包含明文中的TURN凭据,通信通道不可靠和不安全(基本上是原始UDP数据包)
- TURN客户端实现简化 - 不检查TURN服务器的身份验证,可能不是生产就绪。我在实现它时没有完全阅读RFC。
- 未连接的通道相对较快过期
- 连接后,端点不能再移动到下一个主机(在此实现中)
安装
从GitHub发行版下载预构建的可执行文件或使用源代码通过cargo install --path crates/turntie-cli
或cargo install turntie-cli
安装。
示例
hostA$ turntie tie 203.0.113.65:3478 myuser mypassword
eJwtj?REDACTED?kvUYOw==
eJwtj?REDACTED?xjF6Y=
hostB$ turntie connect eJwtj?REDACTED?kvUYOw==
> 12345
< QQQQQ
^C
hostC$ turntie connect eJwtj?REDACTED?xjF6Y=
< 12345
> QQQQQ
^C
两个turntie connect
都应该同时运行才能工作。
完整的未编辑的指定器通常由约150个base64字符组成。
CLI选项
turntie --help 输出
Usage: turntie <command> [<args>]
Use TURN server as a communication channel with movable ends Top-level command.
Options:
--help display usage information
Commands:
tie Create two allocation and return two specifier lines for
their resumption
connect Connect to one of the lines
Usage: turntie tie <turn_server> <username> <password>
Create two tied allocations and print two specifier lines for usage with 'turntie connect'.
Positional Arguments:
turn_server address of TURN server to create allocations in
username username to authenticate on TURN server with
password password to authenticate on TURN server with
Options:
--help display usage information
Usage: turntie connect <specifier>
Connect to one of the endpoints created by 'turntie tie' and exchange stdin/stdout lines with the peer which connected to the other endpoint.
Positional Arguments:
specifier serialized data describing the channel end
Options:
--help display usage information
依赖关系
~6–18MB
~200K SLoC