Add ctail, refactor README
This commit is contained in:
57
docs/ctail.md
Normal file
57
docs/ctail.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# ctail
|
||||
|
||||
Tail a Static CT log, printing a one-liner per new certificate or precertificate as it arrives.
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
GOPRIVATE=git.ipng.ch go install git.ipng.ch/certificate-transparency/ctfetch/cmd/ctail@latest
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
ctail [flags] <log-url>
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
ctail https://halloumi2026h1.mon.ct.ipng.ch
|
||||
```
|
||||
|
||||
By default `ctail` starts at the current tree tip and prints new entries as they appear. Use `--from-leaf 0` to replay from the beginning.
|
||||
|
||||
## Output format
|
||||
|
||||
One line per entry:
|
||||
|
||||
```
|
||||
leaf-index type validity-range issuer (up to 40 chars) subject name
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
1440154358 cert 2026-03-31..2026-06-29 Let's Encrypt R13 bereavementcounselling.uk
|
||||
1440154359 pre 2026-03-31..2026-06-29 ZeroSSL ECC Domain Secured Ce... alpenglowforeverfilms.com
|
||||
```
|
||||
|
||||
- **type**: `cert` for a final certificate, `pre` for a precertificate
|
||||
- **issuer**: CommonName, prefixed with the organisation name when the CN alone is terse (e.g. `R13` → `Let's Encrypt R13`)
|
||||
- **subject name**: first DNS SAN, falling back to the certificate's CommonName
|
||||
|
||||
## Flags
|
||||
|
||||
| Flag | Default | Description |
|
||||
|---|---|---|
|
||||
| `--interval` | `15s` | How often to poll the checkpoint (minimum 1s) |
|
||||
| `--from-leaf` | `-1` | Start from this leaf index; `-1` means current tree tip |
|
||||
| `--rate-limit` | `2s` | Minimum time between HTTP requests (minimum 100ms) |
|
||||
| `--user-agent` | `ctail/VERSION (https://git.ipng.ch/certificate-transparency/)` | User-Agent header sent with every request |
|
||||
|
||||
## Notes
|
||||
|
||||
- The interval timer starts when the checkpoint is fetched, so tile-fetch time counts against the interval and the next poll stays on schedule.
|
||||
- A tile is only fetched once the checkpoint confirms it is complete (256 entries). This avoids unnecessary 404s at the tree tip.
|
||||
- Status and error messages go to stderr; the entry one-liners go to stdout.
|
||||
Reference in New Issue
Block a user