- Go 91.5%
- Shell 8.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
nagonag (Push) / nagonag (push) Successful in 3m39s
Adopt gogogo config schema v2 (version: 2) and move joker.1.gz/ joker.conf.5.gz from the generic artifacts.deb.files list to the dedicated artifacts.deb.manpages list, which auto-detects the name.N.gz naming convention and derives /usr/share/man/manN/name.N.gz destinations instead of requiring them spelled out by hand. Verified with a real local package build (gogogo pack --no-network --allow-unclean): dpkg-deb -c confirms both pages land at the expected paths with mode 0644, and both render correctly via man -l after extraction. |
||
| .forgejo/workflows | ||
| assets | ||
| cmd/joker | ||
| debian | ||
| dmapi | ||
| doc | ||
| internal | ||
| scratch | ||
| .gitignore | ||
| .gogogo.conf | ||
| .golangci.yml | ||
| AGENTS.md | ||
| go.mod | ||
| go.sum | ||
| joker.conf.example | ||
| LICENSE.txt | ||
| Makefile | ||
| README.md | ||
Joker DMAPI Client
Domain operations, one command away.
A Go client library and operator-focused CLI for the Joker.com DMAPI. Query domains, change delegation, manage DNSSEC, and validate nameservers without stitching together raw API requests by hand.
Developed by schlittermann.de, with AI assistance.
joker is for Joker.com resellers who want direct API access when they
need it, and safer high-level workflows when an operation needs more than
one request. The reusable dmapi package stays independent of the CLI.
Why joker?
- Work at the right level.
joker apiexposes the DMAPI directly; otherjokercommands offer high-level operator workflows, such asjoker status,joker ns,joker whois, andjoker dnssec. - Change delegation with confidence. Nameserver workflows check DNS
delegation plausibility, wait for asynchronous results, and retain a
one-hour domain completion cache.
joker nastcompares Joker's registrar data, the authoritative zone, and DENIC's resolved proposal before running DENIC's API-backed pre-delegation check. - See DNSSEC as it is. DNSSEC status reconciles Joker data, live authoritative DNSKEY/CDNSKEY/CDS records, and the parent zone's DS records per key.
- Make rollovers deliberate. Add, set, or remove DS records by key tag; parameters are derived from live SEP DNSKEYs for the domain's TLD.
- Stay in the terminal. Bash, Zsh, Fish, and PowerShell completion;
embedded
joker(1)andjoker.conf(5)manuals; compact color-aware WHOIS summaries.
A quick look
# Reconcile registrar, authoritative DNS, parent DNSSEC, and DENIC state.
joker status example.de
# Use the same diagnostic data in automation.
joker status --output-format json example.de
# Explore direct, one-request DMAPI commands.
joker api query-whois --domain example.com
# Set a delegation, wait for Joker's asynchronous result, and show its summary.
joker ns set example.com ns1.example.net ns2.example.net
# Check the delegation against DENIC's NAST service before you submit it.
joker nast example.de
# Discover DNSSEC state from the live zone, parent zone, and Joker.
joker dnssec status example.de
# Publish a new DS key, then retire the old one by key tag.
joker dnssec ds add example.de 12345
joker dnssec ds del example.de 26155
# Get a concise domain summary.
joker whois example.com
Get started
Build the CLI from this checkout:
go build -o joker ./cmd/joker
./joker --help
Create joker.conf in the current directory,
$XDG_CONFIG_HOME/joker/, or $HOME/.config/joker/:
apikey: env:JOKER_APIKEY
# Optional: defaults to $XDG_STATE_HOME/joker/cookies, or
# $HOME/.local/state/joker/cookies when XDG_STATE_HOME is unset.
# cookiefile: $XDG_STATE_HOME/joker/cookies
Set the API key only for the command that needs it:
JOKER_APIKEY='your-joker-api-key' ./joker auth login
./joker auth status
apikey also supports plain values, protected files, .netrc,
pass, and fallback chains. Read
joker.conf(5) before choosing a secret
source: each option has different operational and security tradeoffs.
For interactive use, enable shell completion:
source <(./joker completion bash)
The Debian package installs Bash, Zsh, and Fish completion scripts in their
standard system-wide locations. See joker(1)
for shell-specific manual-install instructions.
Library use
The reusable client lives in dmapi/. Its supported endpoints
are declared in dmapi/api.yaml, from which the typed API
surface is generated. The CLI is an example consumer, not a requirement for
using the library.
Build and contribute
go build ./...
go test ./...
# Regenerate the typed DMAPI API, manuals, static completions, and NAST code map.
go generate ./...
Generated files are tracked. When you change dmapi/api.yaml, command
behaviour, completion metadata, or manual sources, run go generate ./...
and include the resulting changes.
Documentation
joker(1)source — commands, workflows, and shell completionjoker.conf(5)source — configuration and API-key sources- Joker.com DMAPI documentation
- DMAPI interface description
License
Apache-2.0. See LICENSE.txt.