2017-04-21 16:27:56 -07:00
#!/usr/bin/perl
#
2018-02-23 09:53:12 +01:00
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2017-04-21 16:27:56 -07:00
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
2018-02-23 09:53:12 +01:00
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
2017-04-21 16:27:56 -07:00
use warnings ;
use strict ;
use Time::Piece ;
if ( @ ARGV < 1 ) {
print STDERR << 'END' ;
usage:
perl docbook - options . pl options_file [ YYYY /MM/ DD ] > named . conf . docbook
END
exit 1 ;
}
my $ FILE = shift ;
my $ DATE ;
if ( @ ARGV >= 2 ) {
2017-10-25 11:02:26 -07:00
$ DATE = shift
2017-04-21 16:27:56 -07:00
} else {
2017-10-25 11:02:26 -07:00
$ DATE = `git log --max-count=1 --date=short --format='%cd' $FILE` or die "unable to determine last modification date of '$FILE'; specify on command line\nexiting" ;
2017-04-21 16:27:56 -07:00
}
chomp $ DATE ;
open ( FH , "<" , $ FILE ) or die "Can't open $FILE" ;
my $ t = Time::Piece - > new ( ) ;
my $ year = $ t - > year ;
print << END ;
< ! - -
- Copyright ( C ) 2004 - $ year Internet Systems Consortium , Inc . ( "ISC" )
-
- This Source Code Form is subject to the terms of the Mozilla Public
- License , v . 2.0 . If a copy of the MPL was not distributed with this
- file , You can obtain one at http: //mo zilla . org /MPL/ 2.0 / .
- - >
< ! - - Generated by doc /misc/ docbook - options . pl - - >
< refentry xmlns:db = "http://docbook.org/ns/docbook" version = "5.0" xml:id = "man.named.conf" >
<info>
<date> $ DATE </date>
</info>
<refentryinfo>
<corpname> ISC </corpname>
<corpauthor> Internet Systems Consortium , Inc . </corpauthor>
</refentryinfo>
<refmeta>
<refentrytitle> <filename> named . conf </filename> </refentrytitle>
<manvolnum> 5 </manvolnum>
<refmiscinfo> BIND9 </refmiscinfo>
</refmeta>
<refnamediv>
<refname> <filename> named . conf </filename> </refname>
<refpurpose> configuration file for <command> named </command> </refpurpose>
</refnamediv>
<docinfo>
<copyright>
END
for ( my $ y = 2004 ; $ y <= $ year ; $ y + + ) {
print " <year>$y</year>\n" ;
}
print << END ;
<holder> Internet Systems Consortium , Inc . ( "ISC" ) </holder>
</copyright>
</docinfo>
<refsynopsisdiv>
< cmdsynopsis sepchar = " " >
<command> named . conf </command>
</cmdsynopsis>
</refsynopsisdiv>
<refsection> <info> <title> DESCRIPTION </title> </info>
<para> <filename> named . conf </filename> is the configuration file
for
<command> named </command> . Statements are enclosed
in braces and terminated with a semi - colon . Clauses in
the statements are also semi - colon terminated . The usual
comment styles are supported:
</para>
<para>
C style: /* */
</para>
<para>
C + + style: // to end of line
</para>
<para>
Unix style: # to end of line
</para>
</refsection>
END
# skip preamble
my $ preamble = 0 ;
while ( <FH> ) {
if ( m {^\s*$} ) {
last if $ preamble > 0 ;
} else {
$ preamble + + ;
}
}
2017-10-25 11:02:26 -07:00
my $ blank = 0 ;
2017-04-21 16:27:56 -07:00
while ( <FH> ) {
2017-10-25 11:02:26 -07:00
if ( m {// not.*implemented} || m {// obsolete} || m {// test.*only} ) {
next ;
}
2017-04-21 16:27:56 -07:00
s{ // not configured} {} ;
2018-01-22 11:00:45 -08:00
s{ // non-operational} {} ;
2017-04-21 16:27:56 -07:00
s{ // may occur multiple times} {} ;
s{<([a-z0-9_-]+)>} {<replaceable>$1</replaceable>}g ;
2017-10-25 11:02:26 -07:00
s{[[]} {[}g ;
s{[]]} {]}g ;
2017-04-21 16:27:56 -07:00
s{ } {\t}g ;
if ( m {^([a-z0-9-]+) } ) {
my $ HEADING = uc $ 1 ;
print << END ;
<refsection> <info> <title> $ HEADING </title> </info>
< literallayout class = "normal" >
END
}
2017-10-25 11:02:26 -07:00
if ( m {^\s*$} && ! $ blank ) {
$ blank = 1 ;
2017-04-21 16:27:56 -07:00
print << END ;
</literallayout>
</refsection>
END
2017-10-25 11:02:26 -07:00
} else {
$ blank = 0 ;
2017-04-21 16:27:56 -07:00
}
print ;
}
print << END ;
<refsection> <info> <title> FILES </title> </info>
<para> <filename> /etc/ named . conf </filename>
</para>
</refsection>
<refsection> <info> <title> SEE ALSO </title> </info>
<para> <citerefentry>
<refentrytitle> ddns - confgen </refentrytitle> <manvolnum> 8 </manvolnum>
</citerefentry> ,
<citerefentry>
<refentrytitle> named </refentrytitle> <manvolnum> 8 </manvolnum>
</citerefentry> ,
<citerefentry>
<refentrytitle> named - checkconf </refentrytitle> <manvolnum> 8 </manvolnum>
</citerefentry> ,
<citerefentry>
<refentrytitle> rndc </refentrytitle> <manvolnum> 8 </manvolnum>
</citerefentry> ,
<citerefentry>
<refentrytitle> rndc - confgen </refentrytitle> <manvolnum> 8 </manvolnum>
</citerefentry> ,
<citetitle> BIND 9 Administrator Reference Manual </citetitle> .
</para>
</refsection>
</refentry>
END