From: Sergey Matveev Date: Sun, 21 Aug 2022 11:15:16 +0000 (+0300) Subject: README X-Git-Url: http://www.git.stargrave.org/?p=zdns.git;a=commitdiff_plain;h=74a9ba010f72c9f220d50d184804b5c5ac234be3 README --- diff --git a/README b/README new file mode 100644 index 0000000..065a8e4 --- /dev/null +++ b/README @@ -0,0 +1,100 @@ +zdns -- DNS zones creator helper + +This is very simple zsh-based helper functions to create DNS zones. +Many things are hardcoded there. Basically you just write ordinary +zsh script, sourcing the rc.zsh, containing various helper functions. +It expects DOMAIN variable to be set. + +* fqdn(domain) -- prints fully-qualified domain name, taking either + "domain.", or "@", or "subdomain" names +* shortened(domain) -- prints $DOMAIN-relative shortened name, printing + only subdomain parts or "@" +* zone_start(serial) -- prints SOA record with two predefined (hardcoded) + nameservers and none DMARC policy +* add_mx(domain) -- add predefined MX records for given domain, with + predefined redirect-based SPF policy +* add_dane(domain) -- add DANE records for given domain. You have to + have tls/ subdirectory, containing zeasypki's state + (http://www.git.stargrave.org/?p=zeasypki.git;a=blob;f=README) + It looks in each CA's subdirectory if keypair exists for the domain, + printing necessary CAA and TLSA records +* add_ssh(domain) -- searches for corresponding public key in ssh/ + subdirectory and (if it exists) prints corresponding SSHFP record +* add_subdomain(domain, addresses) -- adds specified domain with + provided space-separated addresses. It automatically calls add_dane + and add_ssh helpers. Unless $NOSPF=1 is specified, it prints "-all" + SPF policy. If $Y=1 is specified, then it adds "y.domain" address with + predefined $Y6 address and "-all" SPF policy +* add_pgp(keyid, uid) -- prints _openpgpkey DANE record for given + OpenPGP key of desired UID. "uid" is optional and useful only if your + key have got multiple UIDs and you need to add only the single + specified one + +To omit burden of sourcing rc.zsh, setting $DOMAIN and rebuilding zones +after its change, there is default.zone.do redo (http://cr.yp.to/redo.html) +target, expecting your script in $domain.zsh file. + +For example the zone for nncpgo.org domain with mail-capabilities, WWW +subdomain (available via Yggdrasil network), OpenPGP DANE key, +openpgp-subdomain for WKD and necessary DANE/SSH records could be +created the following way: + + $ ln -fs /path/to/zeasypki/state tls + $ [[ -d tls/ee/ecdsa/ca.cypherpunks.ru/openpgpkey.nncpgo.org ]] + $ [[ -d tls/ee/gost/cagost.cypherpunks.ru/openpgpkey.nncpgo.org ]] + $ [[ -d tls/ee/ecdsa/ca.cypherpunks.ru/www.nncpgo.org ]] + $ [[ -d tls/ee/gost/cagost.cypherpunks.ru/www.nncpgo.org ]] + + $ mkdir -p ssh + $ print ssh-ed25519 AAAA... > ssh/www.nncpgo.org + + $ cat > nncpgo.org.zsh < + 2019...15ac._openpgpkey TYPE61 \# 655 (...) diff --git a/rc.zsh b/rc.zsh index 31a6113..b3e32a6 100644 --- a/rc.zsh +++ b/rc.zsh @@ -46,6 +46,16 @@ shortened() { esac } +add_mx() { + local shorten=`shortened $1` + cat <