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

MIT 许可证

69KB
1K SLoC

〰️ pantrace

Coverage crates.io docs.rs Tests

与 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 格式。

CustomFormatTraceroute 之间的转换可以以任何方式实现,但当前的格式实现如下:

  • CustomFormatTraceroute 的转换在 to_internal 模块中
    • impl From<CustomFormat> for Traceroute { ... }
  • CustomFormatTraceroute 的转换在 from_internal 模块中
    • impl From<Traceroute> for CustomFormat { ... }
    • 或者 impl From<Traceroute> for Vec<CustomFormat> { ... } 如果 CustomFormat 是单个路径的 traceroute 格式

依赖项

~5.5MB
~103K SLoC