4个版本
0.2.3 | 2024年4月9日 |
---|---|
0.2.2 | 2024年4月9日 |
0.2.1 | 2024年3月28日 |
0.2.0 |
|
0.1.0 | 2022年4月26日 |
#1176 in 网络编程
每月195次下载
93KB
1.5K SLoC
dns-server
线程化DNS服务器库。
用例
- 使您的API服务器成为其自己的DNS服务器。这样可以消除DNS服务器作为一个单独的故障点。
- 将您的DNS配置保留在代码中,与服务器代码放在一起。将其纳入代码审查和集成测试中。
- 基于DNS的免费ACME证书域名验证。这对于监听80端口的服务器很有用。监听80端口的可以采用HTTP进行域名验证,不需要使用此功能。
特性
- 仅依赖于
std
禁止(不安全代码)
- ?% 测试覆盖率
限制
- 全新的。
示例
use dns_server::DnsRecord;
use permit::Permit;
use signal_hook::consts::{SIGHUP, SIGINT, SIGQUIT, SIGTERM};
use signal_hook::iterator::Signals;
let top_permit = Permit::new();
let permit = top_permit.new_sub();
std::thread::spawn(move || {
Signals::new([SIGHUP, SIGINT, SIGQUIT, SIGTERM])
.unwrap()
.forever()
.next();
drop(top_permit);
});
let records = vec![
DnsRecord::new_a("aaa.example.com", "10.0.0.1").unwrap(),
DnsRecord::new_aaaa("aaa.example.com", "2606:2800:220:1:248:1893:25c8:1946").unwrap(),
DnsRecord::new_cname("bbb.example.com", "ccc.example.com").unwrap(),
];
dns_server::Builder::new_port(8053)
.unwrap()
.with_permit(permit)
.serve_static(&records)
.unwrap();
相关Crate
Cargo Geiger安全报告
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)]
❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)]
☢️ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 🔒 dns-server 0.2.3
0/0 0/0 0/0 0/0 0/0 🔒 ├── prob-rate-limiter 0.1.1
0/0 0/0 0/0 0/0 0/0 🔒 │ └── oorandom 11.1.3
0/0 0/0 0/0 0/0 0/0 🔒 ├── fixed-buffer 0.3.1
0/0 0/0 0/0 0/0 0/0 🔒 ├── oorandom 11.1.3
0/0 0/0 0/0 0/0 0/0 🔒 └── permit 0.1.5
0/0 0/0 0/0 0/0 0/0
变更日志
- v0.2.3 - 删除一个依赖
- v0.2.2 - 支持随机化大小写。
- v0.2.1
- 支持动态响应的新API。
- 随机化静态响应的顺序。
- v0.1.0 - 初始版本
待办事项
- 消息压缩
- 决定是否发送错误响应。
- 用于使用环境变量的
OsStr
的易于使用的构造函数 - 自定义TTLs
- NS记录(和glue)
- 客户端
- 缓存客户端
- 递归解析器
替代方案
许可证:Apache-2.0
依赖项
~80KB