4个版本

0.2.3 2024年4月9日
0.2.2 2024年4月9日
0.2.1 2024年3月28日
0.2.0 2024年3月28日
0.1.0 2022年4月26日

#1176 in 网络编程

Download history 30/week @ 2024-05-10 137/week @ 2024-05-17 53/week @ 2024-05-24 32/week @ 2024-05-31 6/week @ 2024-06-07 2/week @ 2024-06-14 11/week @ 2024-06-21 9/week @ 2024-06-28 4/week @ 2024-07-05 10/week @ 2024-07-12 15/week @ 2024-07-19 68/week @ 2024-07-26 37/week @ 2024-08-02 28/week @ 2024-08-09 60/week @ 2024-08-16

每月195次下载

Apache-2.0

93KB
1.5K SLoC

dns-server

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

线程化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