2 个不稳定版本
新 0.2.0 | 2024年8月15日 |
---|---|
0.1.0 | 2024年7月9日 |
#10 在 #chat
57 每月下载次数
390KB
10K SLoC
chatd
实时通信的 SSH 服务器实现,它提供聊天室服务而不是 shell,并支持通过 SSH 进行加密消息传递。
致谢
本项目深受 shazow/ssh-chat 的影响。
核心功能
- 公开和私有的点对点对话
- 颜色主题
- 内置聊天命令
- Emacs 风格的键绑定
- 命令历史记录
- 可配置的 motd(每日消息)
- 命令自动完成
- 从 ENV 加载用户配置覆盖
- 自动检测和处理空闲用户
安全和控制
- 仅允许授权用户连接的选项
- 消息速率限制以防止垃圾邮件
- 操作员的特殊命令(如
/kick
、/ban
、/mute
等)
下载发布版本
chatd
的预构建二进制文件适用于各种平台,包括 Windows (x86_64/ARM64)、Linux (32 位/x86_64/ARM64) 和 macOS (x86_64/ARM64),可通过 GitHub 发布 获取。这些二进制文件会随着每个标记提交自动生成。
如果您是已安装 Cargo 的 Rust 开发者,您可以跳过下载,直接从 crates.io 安装守护进程:cargo install chatd
编译/开发
要从源代码构建守护进程,请按照以下步骤操作
$ git clone [email protected]:unrenamed/chatd.git
$ cd chatd
$ make release
$ ./target/release/chatd --version
chatd 0.2.0
对于持续开发,您可以使用 Makefile
执行常见任务,或者如果缺少所需的 make 规则,可以直接调用 cargo <command>
此外,如果您更喜欢容器化开发和部署,我们已提供 Dockerfile
和 compose.yaml
以轻松在 Docker 容器中运行 chatd
。
快速入门
chatd is an implementation of an SSH server for real-time communication that
serves a chat room instead of a shell and provides encrypted messaging over
SSH.
Usage: chatd [OPTIONS]
Options:
--port <PORT> Port to listen on [default: 22]
-i, --identity <KEY> Private key to identify server with. Defaults to a temporary ed25519 key
--oplist <FILE> Optional file of public keys who are operators
--whitelist <FILE> Optional file of public keys who are allowed to connect
--motd <FILE> Optional file with a message of the day or welcome message
--log <FILE> Write chat log to this file
-d, --debug... Turn debugging information on
-h, --help Print help
-V, --version Print version
现在,运行
$ chatd
这将运行监听默认端口的守护进程,并创建一个临时的ed25519密钥来标识服务器。对于生产用途,您应该绑定一个生成的密钥,如下所示
$ chatd -i ~/.ssh/id_dsa
环境变量
由于chatd(这是故意的)中缺乏用户配置的持久存储,每次用户连接时都需要重新应用他们的设置。这可能会非常不方便,不是吗?
使用环境变量可以解决这个问题。
CHATD_THEME
此变量允许您设置会话的主题。您不必通过运行/theme hacker
手动配置它,可以这样做:
$ ssh -o SetEnv "CHATD_THEME=hacker" username@<your_server_hostname>
CHATD_TIMESTAMP
此变量启用在每条接收到的消息旁边记录日期时间或时间前缀。您不必手动运行/timestamp datetime
,可以在连接之前设置它:
$ ssh -o SetEnv "CHATD_TIMESTAMP=datetime" username@<your_server_hostname>
如果您觉得在ssh
命令中设置额外的选项很麻烦,您可以使用SSH客户端支持的配置文件。对于OpenSSH客户端,有.ssh/config
文件。如果您没有,可以自由创建并提供读写访问权限chmod 600 .ssh/config
。
现在将以下行添加到配置文件中:
Host <your_server_hostname>
SendEnv CHATD_*
现在,将环境变量添加到您的shell配置文件中。然后,您只需运行
$ ssh username@<your_server_hostname>
自动完成
chatd
的自动完成功能旨在为终端用户设计,直观且方便,能识别您是在完成命令、其子命令还是它们的参数。
例如
[用户] /opl | [用户] /oplist |
[用户] /oplist l | [用户] /oplist load |
[用户] /oplist load m | [用户] /oplist load merge |
[用户] /oplist add al | [用户] /oplist add alice |
所以,不要犹豫,在您想节省输入时按下Tab键 😉
依赖项
~24-42MB
~628K SLoC