What's Changed
- 新增 NextTrace API v4 HTTP GeoIP provider:当数据源为
LeoMoeAPI且配置了NEXTTRACE_API_V4_TOKEN时,GeoIP 查询会改用GET https://api.nxtrace.org/v4/ipGeo?ip=<ip>,并通过X-NextTrace-Token请求头传 token - 新增
-x/--setup-api-v4-token:可在当前 shell 会话中粘贴并保存 NextTrace API v4 token,后续从该 shell 启动的nexttrace会自动加载 nexttrace -x使用临时 token 文件,不写 shell profile、永久环境变量或nt_config.yaml;同时提供 parent-PID session 文件和 same-user fallback 文件,兼容go run等 wrapper 启动方式- 没有可用 v4 token 时,
LeoMoeAPI默认仍走旧 v3 WebSocket / PoW 流程;配置 v4 token 后会跳过 v3 WebSocket 初始化 - 优化 NextTrace API v4 GeoIP 性能:缓存并复用 HTTP client / keep-alive 连接,减少连续 GeoIP 查询时的重复 client 创建
- v4 client cache 按 endpoint、token、timeout、当前 GeoDNS resolver 区分,并限制最多 32 个缓存项;淘汰旧项时会关闭 idle connections
- 规范化 v4 endpoint 与 GeoDNS resolver:自动 trim endpoint,GeoDNS resolver 名称统一 trim + lowercase,避免缓存键和嵌套 resolver 作用域因大小写/空格不一致而分裂
- 加固 v4 token 文件处理:使用临时文件原子写入,校验 token 目录 owner、权限、symlink 和文件类型,Unix 下要求同用户拥有且目录权限为
0700 - 加固 v4 GeoIP 请求:补齐最小超时、总耗时限制、网络/超时/5xx 重试、响应体大小限制、错误响应解析和 token 脱敏
- 解析 NextTrace API v4 quota headers:支持读取
X-NextTrace-Quota-Remaining、X-NextTrace-Quota-Expires-At、X-NextTrace-Quota-Cost、X-NextTrace-Quota-Source,但不改变默认输出格式 - 修复 MTR TCP / UDP GeoIP 补全:按 GeoIP / RDNS 配置决定是否标记 pending metadata 与启动异步补全,避免关闭 metadata 时留下无意义的 Geo 占位
- 调整 MTR metadata 立即重试与并发
- 新增 MTR TUI 历史视图:交互式 MTR 中按
d/D可在经典指标表与 History 视图间切换,默认仍保持经典表格 - 新增 History 图表模式切换:历史视图下按
g/G可在 heatmap、bars、sparkline 三种图表间循环 - History 视图会保留最近 3 分钟、按探测时间戳归窗的延迟与超时样本,并显示
Host、Last、Avg、Loss、History - 优化 MTR history 布局、取样、配色与渲染性能,改善宽终端显示、未来时间戳、无色输出、超时样本和临时分配
- 更新依赖:
modelcontextprotocol/go-sdk1.6.0、golang.org/x/net0.54.0、tidwall/gjson1.19.0 等
额外的:
这是集成 nexttrace api v4 的首个版本;未配置 NEXTTRACE_API_V4_TOKEN 时默认行为仍保持旧 v3 WebSocket / PoW。
历史视图只在 TTY 交互式 MTR 下启用;非 TTY / report / raw 输出保持原有行为。
History 列使用固定 100ms 延迟刻度;启用 --no-color 时使用 ASCII,并以 x 表示超时样本。
Full Changelog: v1.6.5...v1.7.0