## Chapter 5. Using ZoneCheck

## Input

### Command Line Interface (CLI)

- `--lang`

  Select another language (en, fr, ...). The syntax is the same as for the environment variable `LANG`.

- `-d `lvl``, `--debug `lvl``

  Select the debugging messages to print or activate debugging code. This parameter will override the value of the environment variable `ZC_DEBUG`.

  The available options are:

  Code | Description
  --- | ---
  0x0001 | Initialisation
  0x0002 | Localization / Internationalisation
  0x0004 | Configuration
  0x0008 | Autoconf
  0x0010 | Loading tests
  0x0020 | Tests performed
  0x0040 | Debugging messages from tests
  0x0400 | Information about cached object
  0x0800 | Debugger itself
  0x1000 | Crazy Debug, don't try this at home!
  0x2000 | Dnsruby library debugging messages
  0x4000 | Disable caching
  0x8000 | Don't try to rescue exceptions

- `-h`, `--help`

  Show a short description of the different options available in ZoneCheck

- `-V`, `--version`

  print the ZoneCheck version and exit

- `-q`, `--quiet`

  don't display extra titles

- `-c `cfgfile``, `--config `cfgfile``

  specify the location of the configuration file (default is `etc/zonecheck/zc.conf`)

- `--testdir `directory``

  specify the `directory` where all the tests are located

- `-C `catlist``, `--category `catlist``

  limit the test to the specified category list (`catlist`); the list is comma separeted and we stop on the first match. If the category start with `-` or `!` the test should not belong to that category, if it starts with nothing or `+` the test should belong to it. It is possible to have subcategories which are delimited by `:`. Here is an example that says don't perform DNS tests that are not SOA related: `dns:soa,!dns,+`

- `-T `testname``, `--test `testname``

  only the test `testname` will be performed and its severity will default to `fatal`

- `-r `host``, `--resolver `host``

  the nameserver running on `host` will be used as the local resolver instead of taking this information from `/etc/resolv.conf`

- `-n `nameservers``, `--ns `nameservers``

  `nameservers` is the exhaustive list of nameservers that are primary or secondary for the zone, they are separated by a semicolon, if IP addresses should be specified the hostname must be followed by the equal sign and a coma separated list of IP addresses. For example: `ns1.toto.fr=192.168.1.5,192.168.1.6;ns2.toto.fr`

- `-1`, `--one`

  only display the most relevant message

- `-g`, `--tagonly`

  display tag instead of sentences, this option should be used when writing scripts

- `-e `list``, `--error `list``

- `-t `list``, `--transp `list``

  `list`

- `-v `list``, `--verbose `list``

  `list`

- `-o `list``, `--output `list``

  `list`

- `-4`, `--ipv4`

  use IPv4 connectivity only

- `-6`, `--ipv6`

  use IPv6 connectivity only

- `--testlist`

  list all the available tests

- `--testdesc `type``

  `type`s is one of the keyword `name` `expl` `error`

    % zc -4 -v c,x,d,i afnic.fr
    ZONE  : afnic.fr.
    NS <= : ns1.nic.fr. [192.93.0.1]
    NS    : ns2.nic.fr. [192.93.0.4]
    NS    : ns3.nic.fr. [192.134.0.49, 2001:660:1180:1:192:134::49]

    ==> SUCCED

### Common Gateway Interface (CGI)

- `lang` = [ fr | en | ... ]

- quiet

- - one\n

- - verbose = [ i|intro, n|testname, x|explain, d|details,\n\ t|testdesc, c|counter, o|reportok ]\n\

  - - intro\n\

  - - testname\n\

  - - explain\n\

  - - details\n\

  - - progress = [ t|testdesc | c|counter ]\n\

  - - reportok\n\

- - output = [ bs|byseverity, bh|byhost, t|text, h|html ]\n\ - report = bs|byseverity | bh|byhost\n\ - format = h|html | text\n\

- - error = [ af|allfatal, aw|allwarning, std|standard,\n\ s|stop, ns|nostop ]\n\ - errorlvl = [ af|allfatal | aw|allwarning | std|standard ]\n\ - dontstop \n\

- - transp = [ ipv4, ipv6, udp, tcp, std ]\n\ - transp3 = [ ipv4, ipv6 ]\n\ - transp4 = [ udp | tcp | std ]\n\

- - category = cat1,!cat2:subcat1,cat2,!cat3,+\n\ - chkmail (!mail)\n\ - chkrir (!rir)\n\ - chkzone (!dns:axfr)\n\

- - ns = ns1=ip1,ip2;ns2=ip3;ns3\n\ (WARNING: in URL '%3b' should be used instead of ';')\n\ - ns0 .. nsX = nameserver name\n\ - ips0 .. ipsX = coma separated ip addresses\n\

- - zone = zone to test\n\