8 个版本 (4 个重大更新)
0.6.2 | 2023 年 3 月 5 日 |
---|---|
0.6.1 | 2023 年 3 月 5 日 |
0.5.1 | 2022 年 12 月 9 日 |
0.5.0 | 2022 年 8 月 24 日 |
0.2.0 | 2022 年 5 月 2 日 |
在 网络编程 中排名第 880
每月下载量 24 次
69KB
1K SLoC
〰️ pantrace
与 Pandoc 转换文档格式的方式类似,Pantrace 转换 traceroute 格式。
每种格式只需要实现两种转换:到和从内部格式。
快速入门
Cargo
cargo install pantrace && pantrace --help
Docker
docker run ghcr.io/dioptra-io/pantrace:main --help
Nix
nix run github:dioptra-io/pantrace -- --help
使用方法
# Fetch traceroute results from the RIPE Atlas API
curl -L -o example.ndjson \
"https://atlas.ripe.net/api/v2/measurements/23119199/results/?start=1625097600&stop=1625788799&format=txt&probe_ids=6479"
# Convert from the standard input to the standard output
cat example.ndjson | pantrace --standalone --from atlas --to scamper-trace-warts > example.warts
# Convert from a file to a file
pantrace --standalone --from atlas --to scamper-trace-warts --input example.ndjson --output example.warts
格式
atlas
: RIPE Atlas JSONL (读写)flat
: 每个回复一个文档的 JSONL (只写)internal
: Pantrace 内部格式 (读写)iris
: Iris JSONL 格式 (读写)scamper-trace-warts
: Scamper traceroute 的 warts 格式 (读写)
实现新格式
要向 pantrace CLI 添加新的 CustomFormat
(main.rs
),必须实现两个结构
CustomTracerouteReader
,它实现了Iterator<Item = Result<Traceroute>>
特性。CustomTracerouteWriter
实现了TracerouteWriter
特性,特别是包含fn write_traceroute(&mut self, traceroute: &Traceroute) -> Result<()>
函数,其中Traceroute
是 pantrace 的内部 traceroute 格式。
CustomFormat
和 Traceroute
之间的转换可以以任何方式实现,但当前的格式实现如下:
CustomFormat
到Traceroute
的转换在to_internal
模块中impl From<CustomFormat> for Traceroute { ... }
CustomFormat
从Traceroute
的转换在from_internal
模块中impl From<Traceroute> for CustomFormat { ... }
- 或者
impl From<Traceroute> for Vec<CustomFormat> { ... }
如果CustomFormat
是单个路径的 traceroute 格式
依赖项
~5.5MB
~103K SLoC