CLI 层(cmd/crtsh-cli/)
CLI 用 cobra 把 SDK 方法包装成人类可读命令。设计目标:脚本友好、输出可管道、参数直觉。
cmd/crtsh-cli 26 命令 JSON/表格/CSV根命令与全局 flag
bash
crtsh-cli [--timeout 30s] [--debug] [--output json|table|csv] command [flags]--timeout:覆盖默认 30s--debug:打印 crt.sh 请求/响应原文--output / -o:json(机读)、table(人读,默认)、csv(Excel/管道)
命令的三种角色
flowchart LR subgraph 查询["查询类(→ SDK 方法)"] S1[search] S2[get-cert] S3[get-asn1] end subgraph 列举["列举类(→ registry 辅助函数)"] L1[list-types] L2[list-linters] L3[list-match-modes] end subgraph 输出["输出格式化"] F1[JSON] F2[表格] F3[CSV] end 查询 --> 输出 列举 --> 输出
26 条命令
查询类(对应 SDK 方法):search、export-json、export-csv、export-atom、get-cert、get-ct-entry、atom-feed、get-raw-cert、gen-add-chain、get-asn1、get-hierarchy、get-graph、get-pv、advanced-search-page、cert-populations、info-page、get-ca、issuer-certificates、censys。
列举类(对应 registry):list-types、list-pages、list-linters、list-match-modes、list-lint-types、list-group-modes、list-cert-population-groups、list-sort-directions。
搜索显示 flag
search 命令特有的:
--issuer-ca-id id:按 issuer CA ID 过滤--group none|icaid:结果分组--sort <列号>+--dir ^|v:排序方向
一条命令的内部流程
flowchart TD P[cobra 解析 flag] --> M[映射到 QueryParams] M --> SDK["client.SearchCertificates(ctx, params)"] SDK --> O{--output} O -->|json| J[json.Marshal] O -->|csv| C[csv.Writer] O -->|table| T[tabwriter] J --> STDOUT C --> STDOUT T --> STDOUT
CLI 的命令处理函数与 MCP 工具处理函数一样,只做"flag→params→SDK→格式化",不含业务逻辑。这就是为什么加一个能力四层能快速同步。
最后一层:Skills 层