#tor #document #arti #descriptor #relay #parser #object

tor-netdoc

与 Tor 协议一起使用的网络文档格式

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解析器实现

Download history 521/week @ 2024-04-27 324/week @ 2024-05-04 210/week @ 2024-05-11 279/week @ 2024-05-18 829/week @ 2024-05-25 703/week @ 2024-06-01 389/week @ 2024-06-08 1368/week @ 2024-06-15 1319/week @ 2024-06-22 1499/week @ 2024-06-29 314/week @ 2024-07-06 462/week @ 2024-07-13 758/week @ 2024-07-20 1442/week @ 2024-07-27 1316/week @ 2024-08-03 1184/week @ 2024-08-10

每月 4,770 次下载
32 个crate(11 个直接) 中使用

MIT/Apache

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