33 个版本 (17 个破坏性更新)
0.21.0 | 2024 年 8 月 1 日 |
---|---|
0.20.0 | 2024 年 6 月 27 日 |
0.19.0 | 2024 年 6 月 5 日 |
0.12.1 | 2024 年 3 月 4 日 |
0.0.0 | 2021 年 6 月 24 日 |
133 在 解析器实现 中
每月 4,770 次下载
在 32 个crate(11 个直接) 中使用
1.5MB
24K SLoC
tor-netdoc
解析并表示 Tor 中使用的目录对象。
概述
Tor 有几个“目录对象”,它使用这些对象在网络中传达有关中继的信息。这些对象在 dir-spec.txt 中进行了说明。
此 crate 包含解析和验证这些文档的常用代码。目前,它可以处理元格式以及路由描述类型的一些部分。我们最终需要处理更多类型。
此 crate 是 Arti 的一部分,Arti 是一个在 Rust 中实现 Tor 的项目。
设计笔记
该 crate 被分为三个主要部分。在(私有)parse
模块中,我们具有用于解析不同类型网络文档的通用代码。在 types
模块中,我们具有用于解析目录文档中使用的特定数据结构的实现。最后,[doc
] 模块定义了文档本身的解析器。
功能
build_docs
:启用构建表示不同网络文档的对象的代码。
routerdesc
:启用对“路由描述”文档类型的支持,这是桥接客户端和中继所需。
ns-consensus
:启用对“ns 协议”文档类型的支持,一些中继会缓存并提供服务。
注意:限制和不便之处
待办事项:此 crate 要求所有输入都必须是有效的 UTF-8:这只在假设提案 285 已在 Tor 的主线中实现的情况下才可行。
待办事项:此 crate 有几块可能被分割成其他更小的部分,包括处理版本号和退出策略。
待办事项:此 crate 中许多最终应该是公共的部分目前还不是。
待办事项:此 crate 需要更多的测试!
许可证:MIT OR Apache-2.0
依赖关系
~20–32MB
~506K SLoC