fn zone_list()
List every zone with its type and DNSSEC status.
fn zone_create(zone: string, type?: string, primaryNameServerAddresses?: string, catalog?: string)
Create a zone (Primary, Secondary, Forwarder, Catalog, …).
| Argument | Type | Required | Description |
|---|
| zone | string | yes | |
| type? | string | no | Primary | Secondary | Stub | Forwarder | Catalog | SecondaryCatalog |
| primaryNameServerAddresses? | string | no | |
| catalog? | string | no | |
fn zone_delete(zone: string)
Delete a zone. Destructive — confirm WHICH copy you are deleting
| Argument | Type | Required | Description |
|---|
| zone | string | yes | |
fn record_list(zone: string)
List every record in a zone.
| Argument | Type | Required | Description |
|---|
| zone | string | yes | |
fn record_get(domain: string, zone?: string)
Get the records at one owner name.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
| zone? | string | no | |
fn record_ensure(zone?: string, records: array)
Idempotently ensure records exist with the given values (upsert),
| Argument | Type | Required | Description |
|---|
| zone? | string | no | |
| records | array | yes | |
fn record_update(zone?: string, domain: string, type: string, ttl?: number, rData: record, newRData?: record)
Change an existing record's value or TTL. `rData` identifies it,
| Argument | Type | Required | Description |
|---|
| zone? | string | no | |
| domain | string | yes | |
| type | string | yes | |
| ttl? | number | no | |
| rData | record | yes | |
| newRData? | record | no | |
fn record_delete(zone?: string, domain: string, type: string, rData: record)
Delete one record, identified by its rData.
| Argument | Type | Required | Description |
|---|
| zone? | string | no | |
| domain | string | yes | |
| type | string | yes | |
| rData | record | yes | |
fn settings_get()
Read the server settings subset that matters after a rebuild:
fn settings_backup()
Download a COMPLETE settings backup. Every section is included by
fn settings_restore(filePath: string, deleteExistingFiles: boolean)
Restore settings from a local backup zip. Sections default TRUE,
| Argument | Type | Required | Description |
|---|
| filePath | string | yes | Absolute path to the backup zip |
| deleteExistingFiles | boolean | yes | Delete config files not present in the backup. Leave false unless |
fn web_service_set_tls(enableTls?: boolean, useSelfSignedCertificate?: boolean, tlsPort?: number, certificatePath?: string, certificatePassword?: string, httpToTlsRedirect?: boolean)
Configure the admin web service HTTPS listener. Needed after every
| Argument | Type | Required | Description |
|---|
| enableTls? | boolean | no | |
| useSelfSignedCertificate? | boolean | no | |
| tlsPort? | number | no | |
| certificatePath? | string | no | |
| certificatePassword? | string | no | Export password for the PKCS#12 file. |
| httpToTlsRedirect? | boolean | no | Enable only AFTER verifying the certificate serves correctly — |
fn zone_enable(zone: string)
Enable a disabled zone.
| Argument | Type | Required | Description |
|---|
| zone | string | yes | |
fn zone_disable(zone: string)
Disable a zone without deleting it. The server stops answering
| Argument | Type | Required | Description |
|---|
| zone | string | yes | |
fn record_add(zone?: string, domain: string, type: string, ttl?: number, rData: record)
Add a record, failing if one already exists. Prefer record_ensure
| Argument | Type | Required | Description |
|---|
| zone? | string | no | |
| domain | string | yes | |
| type | string | yes | |
| ttl? | number | no | |
| rData | record | yes | |
fn blocking_get_settings()
Read the blocking-relevant settings: enable state, any temporary
fn blocking_set_state(enable: boolean)
Turn blocking on or off.
| Argument | Type | Required | Description |
|---|
| enable | boolean | yes | |
fn blocking_temporary_disable(minutes: number)
Disable blocking for N minutes, after which the server re-enables it
| Argument | Type | Required | Description |
|---|
| minutes | number | yes | Minutes to disable blocking, e.g. 5, 15, 30, 60, 1440. |
fn blocking_set_lists(blockListUrls?: array, allowListUrls?: array)
Replace the block and/or allow list URLs. Whichever array you pass
| Argument | Type | Required | Description |
|---|
| blockListUrls? | array | no | |
| allowListUrls? | array | no | |
fn blocking_force_update_lists()
Force an immediate re-download of the block lists rather than
fn dnssec_validation_set(enable: boolean)
Enable or disable DNSSEC validation of upstream answers. Note this
| Argument | Type | Required | Description |
|---|
| enable | boolean | yes | |
fn allowed_add(domain: string)
Add a domain to the allowed list.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
fn allowed_delete(domain: string)
Remove a domain from the allowed list.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
fn allowed_list(domain?: string)
List the allowed-list entries, optionally under a sub-tree.
| Argument | Type | Required | Description |
|---|
| domain? | string | no | Sub-tree to list; root if omitted |
fn allowed_flush()
Empty the allowed list entirely. Destructive.
fn blocked_add(domain: string)
Add a domain to the blocked list.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
fn blocked_delete(domain: string)
Remove a domain from the blocked list.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
fn blocked_list(domain?: string)
List the blocked-list entries, optionally under a sub-tree.
| Argument | Type | Required | Description |
|---|
| domain? | string | no | Sub-tree to list; root if omitted |
fn blocked_flush()
Empty the blocked list entirely. Destructive.
fn client_resolve(domain: string, type: string, server: string, protocol: enum, dnssecValidation?: boolean)
Resolve a name through the server's own DNS client — the honest way
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
| type | string | yes | |
| server | string | yes | this-server | recursive-resolver | system-dns | <ip or hostname> |
| protocol | enum | yes | |
| dnssecValidation? | boolean | no | |
fn logs_query(appName: string, classPath: string, pageNumber?: number, entriesPerPage?: number, descendingOrder?: boolean, start?: string, end?: string, clientIpAddress?: string, protocol?: string, responseType?: string, qname?: string, qtype?: string, qclass?: string)
Query the query-log app. Depends on a logging app being installed —
| Argument | Type | Required | Description |
|---|
| appName | string | yes | |
| classPath | string | yes | |
| pageNumber? | number | no | |
| entriesPerPage? | number | no | |
| descendingOrder? | boolean | no | |
| start? | string | no | ISO 8601 start time |
| end? | string | no | ISO 8601 end time |
| clientIpAddress? | string | no | |
| protocol? | string | no | |
| responseType? | string | no | |
| qname? | string | no | |
| qtype? | string | no | |
| qclass? | string | no | |
fn dashboard_stats(start?: string, end?: string)
Dashboard counters and top-N lists for a time range.
| Argument | Type | Required | Description |
|---|
| start? | string | no | ISO 8601 start (when type=Custom) |
| end? | string | no | ISO 8601 end (when type=Custom) |
fn cache_flush()
Flush the entire resolver cache. Harmless but not free — the server
fn cache_list(domain?: string)
List cached zones and records, optionally under a sub-tree.
| Argument | Type | Required | Description |
|---|
| domain? | string | no | Sub-tree to list; root if omitted |
fn cache_delete(domain: string)
Drop one name from the cache, leaving the rest intact.
| Argument | Type | Required | Description |
|---|
| domain | string | yes | |
fn cluster_state(node?: string, includeServerIpAddresses?: boolean)
Report cluster membership as THIS node sees it. Read-only. Call it
| Argument | Type | Required | Description |
|---|
| node? | string | no | |
| includeServerIpAddresses? | boolean | no | |
fn cluster_init(clusterDomain: string, primaryNodeIpAddresses: string)
Initialize a NEW cluster with this node as Primary. MINTS A FRESH
| Argument | Type | Required | Description |
|---|
| clusterDomain | string | yes | |
| primaryNodeIpAddresses | string | yes | Comma-separated addresses secondaries will reach this primary on. |
fn cluster_join(primaryNodeIpAddress: string, primaryNodeUrl: string, primaryNodeUsername: string, primaryNodePassword: string, secondaryNodeIpAddresses?: string, primaryNodeTotp?: string, ignoreCertificateErrors?: boolean)
Join this node to an existing cluster as a Secondary, authenticating
| Argument | Type | Required | Description |
|---|
| primaryNodeIpAddress | string | yes | |
| primaryNodeUrl | string | yes | MUST carry the primary's DOMAIN NAME, e.g. |
| primaryNodeUsername | string | yes | An Administrator ON THE PRIMARY — a username and password, not an |
| primaryNodePassword | string | yes | Password for primaryNodeUsername, on the primary node. |
| secondaryNodeIpAddresses? | string | no | |
| primaryNodeTotp? | string | no | |
| ignoreCertificateErrors? | boolean | no | Technitium clusters commonly run self-signed certificates pinned |