{"id":31396218,"url":"https://github.com/0ldm0s/rat_quickdns","last_synced_at":"2026-05-17T15:41:58.372Z","repository":{"id":316673077,"uuid":"1064373724","full_name":"0ldm0s/rat_quickdns","owner":"0ldm0s","description":"高性能DNS查询库，基于Rust开发，支持多种协议和智能决策。","archived":false,"fork":false,"pushed_at":"2025-09-26T01:39:48.000Z","size":370,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-26T03:28:04.285Z","etag":null,"topics":["async","dns","dns-resolver","doh","dotnet","high-performance","load-balancing","networking","python-bindings","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0ldm0s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-26T00:12:07.000Z","updated_at":"2025-09-26T01:42:46.000Z","dependencies_parsed_at":"2025-09-26T03:28:12.187Z","dependency_job_id":"e185eee0-95db-4954-9f1e-6bde3cab30f5","html_url":"https://github.com/0ldm0s/rat_quickdns","commit_stats":null,"previous_names":["0ldm0s/rat_quickdns"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/0ldm0s/rat_quickdns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0ldm0s%2Frat_quickdns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0ldm0s%2Frat_quickdns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0ldm0s%2Frat_quickdns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0ldm0s%2Frat_quickdns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0ldm0s","download_url":"https://codeload.github.com/0ldm0s/rat_quickdns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0ldm0s%2Frat_quickdns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277120672,"owners_count":25764449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-26T02:00:09.010Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","dns","dns-resolver","doh","dotnet","high-performance","load-balancing","networking","python-bindings","rust"],"created_at":"2025-09-29T11:08:41.860Z","updated_at":"2025-09-29T11:08:44.857Z","avatar_url":"https://github.com/0ldm0s.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rat_quickdns\n\n[![Crates.io](https://img.shields.io/crates/v/rat_quickdns.svg)](https://crates.io/crates/rat_quickdns)\n[![Crates.io](https://img.shields.io/crates/d/rat_quickdns.svg)](https://crates.io/crates/rat_quickdns)\n[![Crates.io](https://img.shields.io/crates/l/rat_quickdns.svg)](https://crates.io/crates/rat_quickdns)\n[![GitHub](https://img.shields.io/github/stars/0ldm0s/rat_quickdns.svg?style=social)](https://github.com/0ldm0s/rat_quickdns)\n\n高性能DNS查询库，基于Rust开发，支持多种协议和智能决策。\n\n## 特性\n\n- 🚀 **高性能**: 基于Tokio异步运行时，支持并发查询\n- 🌐 **多协议支持**: UDP、TCP、DoH (HTTPS)、DoT (TLS)\n- 🎯 **智能负载均衡**: 多种策略自动选择最优服务器\n- 🔄 **容错机制**: 自动重试、健康检查、故障转移\n- 🗄️ **缓存支持**: 内置DNS缓存，减少重复查询\n- 🔌 **跨语言集成**: 支持Python绑定\n- 📊 **调用者初始化日志系统**: 使用rat_logger高性能日志库\n- 🧠 **智能内存管理**: 集成rat_quick_threshold内存管理\n\n## 快速开始\n\n### 调用者初始化模式\n\n本库使用调用者初始化模式，用户必须先初始化日志系统，然后才能使用DNS查询功能。\n\n```rust\nuse rat_quickdns::{DnsResolverBuilder, QueryStrategy};\nuse rat_quickdns::builder::types::{DnsQueryRequest, DnsRecordType};\nuse rat_logger::{LoggerBuilder, LevelFilter, handler::term::TermConfig};\nuse std::time::Duration;\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    // 1. 调用者初始化日志系统\n    LoggerBuilder::new()\n        .with_level(LevelFilter::Info)\n        .add_terminal_with_config(TermConfig::default())\n        .init_global_logger()?;\n\n    // 2. 创建并配置DNS解析器\n    let resolver = DnsResolverBuilder::new(\n        QueryStrategy::Smart,\n        true,  // 启用 EDNS\n        \"global\".to_string(),\n    )\n    .add_udp_upstream(\"阿里DNS\", \"223.5.5.5\")\n    .add_udp_upstream(\"腾讯DNS\", \"119.29.29.29\")\n    .with_timeout(Duration::from_secs(5))\n    .with_verbose_logging()  // 启用详细日志\n    .build()\n    .await?;\n\n    // 3. 执行DNS查询\n    let request = DnsQueryRequest {\n        domain: \"example.com\".to_string(),\n        record_type: DnsRecordType::A,\n        query_id: Some(\"test-query\".to_string()),\n        enable_edns: true,\n        client_address: None,\n        timeout_ms: None,\n        disable_cache: false,\n        enable_dnssec: false,\n    };\n\n    let response = resolver.query(request).await?;\n    println!(\"DNS查询结果: {:?}\", response.records);\n    Ok(())\n}\n```\n\n### 严格配置模式\n\n```rust\nuse rat_quickdns::{StrictDnsConfig, QueryStrategy, UpstreamSpec};\nuse std::time::Duration;\n\nlet config = StrictDnsConfig::builder()\n    .strategy(QueryStrategy::Smart)\n    .timeout(Duration::from_secs(5))\n    .retry_count(3)\n    .enable_cache(true)\n    .cache_ttl(Duration::from_secs(3600))\n    .enable_upstream_monitoring(true)\n    .upstream_monitoring_interval(Duration::from_secs(30))\n    .port(53)\n    .concurrent_queries(10)\n    .buffer_size(4096)\n    .enable_stats(true)\n    .emergency_threshold(0.3)\n    .add_upstream(UpstreamSpec::new(\"8.8.8.8:53\".to_string(), \"udp\".to_string(), 1))\n    .build()?;\n\nlet resolver = SmartDnsResolver::from_config(config)?;\n```\n\n### 日志系统\n\n本库使用rat_logger高性能日志库，支持调用者初始化模式和专用DNS日志格式：\n\n```rust\nuse rat_quickdns::{logger::init_dns_logger, dns_query, dns_response, dns_error};\nuse rat_logger::{LoggerBuilder, LevelFilter, handler::term::TermConfig};\n\n// 1. 调用者初始化基础日志系统\nLoggerBuilder::new()\n    .with_level(LevelFilter::Info)\n    .add_terminal_with_config(TermConfig::default())\n    .init_global_logger()?;\n\n// 2. 初始化DNS专用日志格式\ninit_dns_logger(LevelFilter::Info)?;\n\n// 3. 使用专用DNS日志宏\ndns_query!(\"example.com\", \"A\");\ndns_response!(\"example.com\", 2, 45);\ndns_error!(\"查询失败: 超时\");\n```\n\n## Python绑定\n\n```python\nimport rat_quickdns\n\n# 创建解析器\nresolver = rat_quickdns.DnsResolverBuilder.new() \\\n    .with_strategy(\"Smart\") \\\n    .with_timeout(5) \\\n    .add_udp_upstream(\"阿里DNS\", \"223.5.5.5\") \\\n    .build()\n\n# 执行查询\nresponse = await resolver.query(\"example.com\", \"A\")\nprint(f\"查询结果: {response.records}\")\n```\n\n## 架构设计\n\n### 核心模块\n\n- **传输层**: `src/transport/` - UDP/TCP/DoH/DoT协议实现\n- **解析器**: `src/resolver/` - 核心DNS解析逻辑\n- **构建器**: `src/builder/` - DnsResolverBuilder统一构建接口\n- **配置**: `src/config/` - 严格配置模式（无兜底默认值）\n- **Python绑定**: `src/python_api/` - PyO3集成\n\n### 关键特性\n\n- **调用者初始化**: 用户必须明确初始化日志系统\n- **零成本抽象**: 所有配置都由用户明确指定\n- **类型安全**: 强类型系统确保配置正确性\n- **线程安全**: 所有组件都支持多线程并发\n- **异步优先**: 基于Tokio的异步运行时\n\n## 构建和测试\n\n```bash\n# 构建主库\ncargo build\n\n# 构建发布版本\ncargo build --release\n\n# 运行所有测试\ncargo test\n\n# 运行基准测试\ncargo bench\n\n# 构建Python绑定\ncargo build --features python-bindings\n```\n\n## 示例程序\n\n查看 `examples/` 目录中的完整示例：\n\n- `smart_dns_example.rs` - 智能DNS查询示例\n- `mixed_protocol_test.rs` - 混合协议测试\n- `dns_logger_example.rs` - 日志系统使用\n- `caller_init_dns_example.rs` - 调用者初始化模式\n- `dns_resolver_with_logging.rs` - DNS解析器日志配置\n- `mx_record_test_udp.rs` - MX记录查询测试\n\n运行示例：\n\n```bash\n# 智能DNS解析器示例\ncargo run --example smart_dns_example\n\n# 混合协议测试\ncargo run --example mixed_protocol_test\n\n# 日志系统示例\ncargo run --example dns_logger_example\n\n# 调用者初始化示例\ncargo run --example caller_init_dns_example\n\n# DNS解析器日志配置\ncargo run --example dns_resolver_with_logging\n\n# MX记录查询测试\ncargo run --example mx_record_test_udp\n```\n\n## 许可证\n\n本项目采用 LGPL v3 许可证。详见 [LICENSE](LICENSE) 文件。\n\n## 贡献\n\n欢迎提交Issue和Pull Request！\n\n## 路线图\n\n- [ ] 完整的DNS-over-QUIC (DoQ) 支持\n- [ ] DNSSEC验证\n- [ ] 更详细的性能监控\n- [ ] 更多负载均衡策略\n- [ ] 插件系统\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003e🚀 高性能DNS查询库 - 让 DNS 查询更快、更安全、更可靠！\u003c/strong\u003e\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0ldm0s%2Frat_quickdns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0ldm0s%2Frat_quickdns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0ldm0s%2Frat_quickdns/lists"}