$ sudo -u pdns pdnsutil create-zone example.com ns1.example.com
Creating empty zone 'example.com'
Also adding one NS record
- $ sudo -u pdns pdnsutil add-record example.com '' MX '25 mail.example.com'
+ $ sudo -u pdns pdnsutil add-record example.com example.com MX '25 mail.example.com'
New rrset:
example.com. 3005 IN MX 25 mail.example.com
- $ sudo -u pdns pdnsutil add-record example.com. www A 192.0.2.1
+ $ sudo -u pdns pdnsutil add-record example.com www.example.com A 192.0.2.1
New rrset:
www.example.com. 3005 IN A 192.0.2.1
Add one or more records of *NAME* and *TYPE* to *ZONE* with *CONTENT*
and optional *TTL*. If *TTL* is not set, the configured *default-ttl* will be used.
+ *NAME* must be absolute.
add-autoprimary *IP* *NAMESERVER* [*ACCOUNT*]
delete-rrset *ZONE* *NAME* *TYPE*
Delete named RRSET from zone.
+ *NAME* must be absolute.
delete-zone *ZONE*
DNSResourceRecord rr;
vector<DNSResourceRecord> newrrs;
ZoneName zone(cmds.at(1));
- DNSName name;
- if (cmds.at(2) == "@")
- name=zone.operator const DNSName&();
- else
- name = DNSName(cmds.at(2)) + zone.operator const DNSName&();
+ DNSName name = DNSName(cmds.at(2));
+ if (!name.isPartOf(zone)) {
+ throw PDNSException("Name \"" + name.toString() + "\" to add is not part of zone \"" + zone.toString() + "\".");
+ }
UtilBackend B; //NOLINT(readability-identifier-length)
DomainInfo di;
throw PDNSException("Operation on a secondary zone is not allowed unless --force");
}
- DNSName name;
- if(name_=="@")
- name=zone.operator const DNSName&();
- else
- name=DNSName(name_)+zone.operator const DNSName&();
+ DNSName name = DNSName(name_);
+ if (!name.isPartOf(zone)) {
+ throw PDNSException("Name \"" + name.toString() + "\" to remove is not part of zone \"" + zone.toString() + "\".");
+ }
QType qt(QType::chartocode(type_.c_str()));
di.backend->startTransaction(zone, UnknownDomainID);
os.system("$PDNSUTIL --config-dir=configs/auth create-zone noacceptor.net")
os.system("$PDNSUTIL --config-dir=configs/auth create-zone wrongacceptor.net")
- os.system("$PDNSUTIL --config-dir=configs/auth add-record example.net . SOA 3600 'ns1.example.net otto.example.net 2022010403 10800 3600 604800 3600'")
- os.system("$PDNSUTIL --config-dir=configs/auth add-record noacceptor.net . SOA 3600 'ns1.noacceptor.net otto.example.net 2022010403 10800 3600 604800 3600'")
- os.system("$PDNSUTIL --config-dir=configs/auth add-record wrongacceptor.net . SOA 3600 'ns1.wrongacceptor.net otto.example.net 2022010403 10800 3600 604800 3600'")
+ os.system("$PDNSUTIL --config-dir=configs/auth add-record example.net example.net SOA 3600 'ns1.example.net otto.example.net 2022010403 10800 3600 604800 3600'")
+ os.system("$PDNSUTIL --config-dir=configs/auth add-record noacceptor.net noacceptor.net SOA 3600 'ns1.noacceptor.net otto.example.net 2022010403 10800 3600 604800 3600'")
+ os.system("$PDNSUTIL --config-dir=configs/auth add-record wrongacceptor.net wrongacceptor.net SOA 3600 'ns1.wrongacceptor.net otto.example.net 2022010403 10800 3600 604800 3600'")
os.system("$PDNSUTIL --config-dir=configs/auth set-meta example.net GSS-ACCEPTOR-PRINCIPAL DNS/ns1.example.net@EXAMPLE.COM")
os.system("$PDNSUTIL --config-dir=configs/auth set-meta wrongacceptor.net GSS-ACCEPTOR-PRINCIPAL DNS/ns1.example.net@EXAMPLE.COM")
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb create-zone example.com..$variant
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb list-all-zones
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb show-zone example.com..$variant
- $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant '' TXT '"hello from the '$variant' variant"'
- $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant cname CNAME target.example.org
- $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant cname-nxd CNAME nxd.example.org
+ $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant example.com TXT '"hello from the '$variant' variant"'
+ $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant cname.example.com CNAME target.example.org
+ $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.com..$variant cname-nxd.example.com CNAME nxd.example.org
done
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb view-add-zone view1 example.com..foo
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb view-add-zone view2 example.com..bar
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb create-zone example.org..foo
- $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.org..foo target TXT '"hello from target..foo"'
+ $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-record example.org..foo target.example.org TXT '"hello from target..foo"'
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb view-add-zone view1 example.org..foo
$RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-network 192.0.2.0/24 view1
ZONE=bug.less
pdnsutil_wrapper zone create ${ZONE} > /dev/null
-pdnsutil_wrapper record add ${ZONE} cname CNAME host
-pdnsutil_wrapper record add ${ZONE} host A 127.0.0.1
+pdnsutil_wrapper record add ${ZONE} cname.${ZONE} CNAME host
+pdnsutil_wrapper record add ${ZONE} host.${ZONE} A 127.0.0.1
# Duplicate records should be omitted
-pdnsutil_wrapper record add ${ZONE} host2 A 127.0.0.2 127.0.0.2
+pdnsutil_wrapper record add ${ZONE} host2.${ZONE} A 127.0.0.2 127.0.0.2
# Can't add non-CNAME record to a CNAME record
-pdnsutil_wrapper record add ${ZONE} cname A 127.0.0.1
+pdnsutil_wrapper record add ${ZONE} cname.${ZONE} A 127.0.0.1
# Can't add CNAME record if other records exist
-pdnsutil_wrapper record add ${ZONE} host CNAME host2
+pdnsutil_wrapper record add ${ZONE} host.${ZONE} CNAME host2
# Adding existing record should ignore duplicates
-pdnsutil_wrapper record add ${ZONE} host2 A 127.0.0.2 127.0.0.3 | LC_ALL=C sort
+pdnsutil_wrapper record add ${ZONE} host2.${ZONE} A 127.0.0.2 127.0.0.3 | LC_ALL=C sort
# Deleting rrset with ANY should delete all entries regardless of their type
-pdnsutil_wrapper record add ${ZONE} no A 1.2.3.4
-pdnsutil_wrapper record add ${ZONE} no TXT '"insert your favorite zen quote here"'
-pdnsutil_wrapper rrset delete ${ZONE} no ANY
+pdnsutil_wrapper record add ${ZONE} no.${ZONE} A 1.2.3.4
+pdnsutil_wrapper record add ${ZONE} no.${ZONE} TXT '"insert your favorite zen quote here"'
+pdnsutil_wrapper rrset delete ${ZONE} no.${ZONE} ANY
# Display zone contents for final verification
pdnsutil_wrapper zone list ${ZONE} | LC_ALL=C sort
pdnsutil_wrapper list-all-zones | LC_ALL=C sort
-pdnsutil_wrapper add-record example.com..variant1 uniquename A 1.2.3.4
+pdnsutil_wrapper add-record example.com..variant1 uniquename.example.com A 1.2.3.4
pdnsutil_wrapper backend-lookup $backend uniquename.example.com..variant1