6个版本
0.3.1 | 2023年12月13日 |
---|---|
0.3.0 | 2023年12月12日 |
0.2.0 | 2023年6月3日 |
0.1.1 | 2023年5月28日 |
0.1.0-alpha | 2022年12月4日 |
#504 in 网络编程
80KB
1.5K SLoC
GitHub | crates.io | 问题 | 变更日志
confab
是一个支持TLS的异步行向交互式TCP客户端。使用它连接到TCP服务器,您将能够逐行发送消息,而来自远程服务器的接收到的行将被打印在提示符上方。
安装
发布资产
最常见的平台上的预构建二进制文件作为GitHub发布资产提供。 最新发布页面 在 "资产" 下列出这些,以及适用于Unix-like系统和Windows的安装脚本。
作为安装脚本的替代方案,如果您系统上有 cargo-binstall
,您可以使用它通过运行 cargo binstall confab
下载并安装适用于您的系统的最新版本的 confab
的适当发布资产。
Cargo
如果您已安装 Rust和Cargo,您可以通过运行以下命令构建 confab
的最新版本并将其安装到 ~/.cargo/bin
中:
cargo install confab
confab
具有以下Cargo功能,可通过 --features <LIST>
选项选择,在 cargo install
中:
-
rustls
— 使用rustls
以支持TLS。-
该功能默认启用,并覆盖任何其他功能;因此,为了启用
native
或vendored-openssl
功能,必须将--no-default-features
选项传递给cargo install
,并附加--features ...
选项。 -
发布资源是以启用此功能的方式构建的。
-
-
native
— 使用native-tls
提供TLS支持。 -
vendored-openssl
— 将OpenSSL的私有副本编译进confab
,而不是在运行时使用平台的副本。这使得可以在一个系统上构建confab
并在具有不同OpenSSL版本的另一个系统上运行它。-
此功能意味着启用了
native
功能。 -
在macOS或Windows上,此选项没有意义,因为在这两个系统上
confab
不使用OpenSSL进行TLS连接。
-
用法
confab [<options>] <host> <port>
打开到指定主机和端口的TCP连接。用户在 confab
提示符中输入的行发送到远程服务器,并以 ">
" 前缀在本地回显,而来自远程服务器的行则以 "<
" 前缀打印在提示符上方。当远程服务器关闭连接或用户按下Ctrl-D时,通信停止。
confab
依赖于 rustyline-async
来实现类似readline的功能;有关支持的控制序列,请参阅那里。
选项
-
--build-info
— 显示程序的构建信息摘要和依赖关系,然后退出 -
--crlf
— 在发送到远程服务器的每一行后面附加 CR LF ("\r\n"
) 而不是仅LF ("\n"
) -
-E <encoding>
,--encoding <encoding>
— 设置连接的文本编码。可用选项包括-
utf8
(默认) — 使用 UTF-8。如果从远程服务器接收到的行包含无效的UTF-8序列,则序列将替换为 U+FFFD 替换字符 (�
)。 -
utf8-latin1
— 使用 UTF-8。如果从远程服务器接收到的行包含无效的UTF-8序列,则整个行将解码为 Latin-1。(对IRC很有用!) -
latin1
— 使用 Latin-1(也称为ISO-8859-1)。如果发送到远程服务器的行包含非Latin-1字符,则它们将被问号 (?
) 替换。
-
-
-h
,--help
— 显示命令行选项摘要,然后退出 -
--max-line-length <LIMIT>
— 设置从远程服务器读取的每一行的最大字节长度(包括终止换行符)。如果服务器发送的行超过此长度,则前<LIMIT>
字节将被分割并作为一个完整的行处理,剩余的字节将作为新行的开始处理。[默认值:65535] -
--servername <域名>
— (与--tls
一起使用) 使用指定的域名进行SNI和证书主机名验证;默认为远程主机名 -
--startup-wait-ms <整数>
— 指定发送启动脚本每一行前等待的毫秒数 [默认值:500] -
-S <文件>
,--startup-script <文件>
— 在启动时,从指定的文件中读取行并将其逐行发送到服务器。用户只有在达到文件末尾后才会被提示输入。 -
-t
,--show-times
— 在打印到终端的每一行前添加时间戳,格式为[HH:MM:SS]
-
--tls
— 使用SSL/TLS连接 -
-T <文件>
,--transcript <文件>
— 将事件记录追加到指定的文件。有关更多信息,请参阅下面的 事件记录格式。 -
-V
,--version
— 显示程序版本并退出
事件记录格式
--transcript
选项生成会话事件记录的格式为JSON Lines(即换行分隔的JSON),即每行包含一个JSON对象。每个JSON对象代表一个事件,如发送的行、接收的行或连接的开始或结束。
每个对象至少包含一个包含事件时间戳的 "timestamp"
字段,格式为 "YYYY-MM-DDTHH:MM:SS.ssssss+HH:MM"
,以及一个标识事件类型的 "event"
字段。该字段的可能值以及任何附加字段如下所示
-
"connection-start"
— 在开始连接到远程服务器之前发出。事件对象还包含"host"
和"port"
字段,列出命令行上指定的远程主机和端口。 -
"connection-complete"
— 在成功连接后(但在协商TLS之前,如果适用)发出。事件对象还包含一个"peer_ip"
字段,列出连接到的远程IP地址。 -
"tls-start"
— 在开始TLS握手之前发出。事件对象没有其他字段。 -
"tls-complete"
— 在完成TLS握手后发出。事件对象没有其他字段。 -
"recv"
— 每当从远程服务器接收到一行时触发。事件对象还包含一个"data"
字段,给出接收到的行,包括尾随换行符(如果有)。 -
"send"
— 每当向远程服务器发送一行时触发。事件对象还包含一个"data"
字段,给出发送的行,包括尾随换行符(如果有)。 -
"disconnect"
— 当连接正常关闭时触发。事件对象没有其他字段。 -
"error"
— 当发生致命错误时触发。事件对象还包含一个"data"
字段,给出一个可读的错误消息。
依赖关系
~10-22MB
~314K SLoC