dnl ###
dnl ### NSC -- Zone File Generator
-dnl ### (c) 1997--2003 Martin Mares <mj@ucw.cz>
+dnl ### (c) 1997--2011 Martin Mares <mj@ucw.cz>
dnl ###
-dnl ### Usage: m4 nsc.m4 domain-source-files >zone-file -DVERS=path-to-version-file
+dnl ### Usage: m4 -DVERS=path-to-version-file nsc.m4 domain-source-files >zone-file
+dnl ### or: m4 -DHASHING nsc.m4 domain-source-files | md5sum
dnl ###
include(m4/dnslib.m4)
# Version number
+ifdef(`HASHING', `define(`VERSION',`YYYYMMDDNN')', `
+
ifdef(`VERS',`',`nsc_fatal_error(`VERS macro not defined')')
define(TODAY_CODE, translit(esyscmd(`date +"%Y%m%d"'),`
ifelse(eval(SUBVER_NUM > 99),1,`nsc_fatal_error(`Too many zone changes in a single day, you must tweak 'VERS` manually')')
define(`VERSION',TODAY_CODE`'format(`%02d', SUBVER_NUM))
+')
+
# Record names
define(nsc_set_name, `define(`CURRENT_NAME', nsc_corr_dot($1))define(`PRINT_NAME', CURRENT_NAME)')
# SOA record
-define(nsc_SOA, `divert; Primary file for the CURRENT_DOMAIN domain
-; Generated by NSCVER (nsc.m4) on CURRENT_DATE
-; Please do not edit manually
-
-$ORIGIN CURRENT_DOMAIN
+define(nsc_SOA, `
+ifelse(CURRENT_DOMAIN,@,`',$ORIGIN CURRENT_DOMAIN)
$TTL MINTTL
nsc_emit_name `SOA' nsc_corr_dot(NSNAME) MAINTNAME (
VERSION REFRESH RETRY EXPIRE MINTTL )')
define(SOA, `ifdef(`CURRENT_DOMAIN',`ifdef(`REVERSE_MODE',,`nsc_fatal_error(`SOA record defined twice')')')dnl
-define(`CURRENT_DOMAIN',$1.)dnl
+define(`CURRENT_DOMAIN',ifelse($1,@,@,$1.))dnl
nsc_set_name(CURRENT_DOMAIN)dnl
ifdef(`REVERSE_MODE',,`nsc_SOA')')
define(nsc_ALIAS, `$1 `CNAME' CURRENT_NAME
')
-define(ALIAS, `nsc_iterate(`nsc_ALIAS', $@)dnl')
+define(ALIAS, `nsc_iterate(`nsc_ALIAS', $@)nsc_set_name(CURRENT_NAME)dnl')
+
+# TXT records
+
+define(TXT, `nsc_emit_name `TXT' "$1"')
+
+# RP (responsible person) records
+
+define(RP, `nsc_emit_name `RP' nsc_corr_dot($1) nsc_corr_dot($2)')
+
+# SRV records
+
+define(SRV, `_`'$1`'._`'$2`'.CURRENT_NAME `SRV' $3 $4 $5 nsc_corr_dot($6)`'nsc_set_name(CURRENT_NAME)')
# CNAME records
# Cleanup actions
define(nsc_cleanup, `ifdef(`DISABLE_LOCALHOST',,`
+; Added automatically (required by RFC 1912)
localhost A 127.0.0.1
')')
m4wrap(`nsc_cleanup')
+
+divert(0)dnl
+`;;;' Primary zone file
+`;;;' Generated by NSCVER (nsc.m4) on ifdef(`HASHING', ``CURRENT_DATE'', `CURRENT_DATE')
+`;;;' Please do not edit manually
+`;;;' `VERSION': VERSION
+`'