2个版本
0.1.1 | 2023年10月18日 |
---|---|
0.1.0 | 2023年10月3日 |
#17 in #hub
8KB
124 代码行
udpexchange
此程序遵循以下算法
- 监听指定地址的UDP套接字
- 对于每个传入的UDP数据报,记住源地址在LRU缓存中
- 将空数据报返回给发送者(ping/keepalives)
- 将非空数据报转发到每个已知未过期的地址(除发送者外)。
可选地,它可以记住一些最近的消息并将它们发送给新出现的客户端。
安全性
此服务可能会允许DDoS放大,因此不应公开运行。
小型可执行文件大小
该项目部分是一个实验,旨在使用Rust创建小型可执行文件,同时(部分?)访问libstd并使用合理的命令行参数解析器。
cargo build --release -Zbuild-std=std,panic_abort -Zbuild-std-features=panic_immediate_abort --target=x86_64-unknown-linux-musl --features=mini
应生成一个51千字节的可执行文件。
请注意,通过--features=mini
激活的破解可能不稳定且不太便携。还可以通过使用eyra进一步减小尺寸。
安装
从Github发行版下载预构建的可执行文件或使用源代码通过cargo install --path .
或cargo install udpexchange
进行安装。
CLI选项
udpexchange --help 输出
Usage: udpexchange <listen_addr> [-t <timeout>] [-r]
Simple UDP service which replies to all other known clients
Positional Arguments:
listen_addr socket address to bind UDP to
Options:
-t, --timeout timeout, in seconds, to expire clients.
-r, --replay send recent accumulated messages to newly seen clients
--help display usage information
依赖项
~0.7–1.4MB
~29K SLoC