]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: add bind primary, secondary and primaries keywords
authorKees Monshouwer <mind04@monshouwer.org>
Wed, 12 Jul 2023 18:06:27 +0000 (20:06 +0200)
committermind04 <mind04@monshouwer.org>
Mon, 16 Oct 2023 21:42:28 +0000 (23:42 +0200)
26 files changed:
docs/backends/bind.rst
modules/bindbackend/bindbackend2.cc
pdns/bindlexer.l
pdns/bindparser.yy
pdns/named.conf.parsertest
pdns/test-bindparser_cc.cc
pdns/zone2json.cc
pdns/zone2ldap.cc
pdns/zone2sql.cc
regression-tests.auth-py/authtests.py
regression-tests.auth-py/test_ProxyProtocol.py
regression-tests.nobackend/counters/named.conf
regression-tests.nobackend/default-publish-cds/named.conf
regression-tests.nobackend/edns-packet-cache/named.conf
regression-tests.nobackend/negcache-tests-dotted-cname/named.conf
regression-tests.nobackend/rectify-axfr/command
regression-tests.nobackend/soa-edit/named.conf
regression-tests.nobackend/supermaster-signed/command
regression-tests.nobackend/supermaster-unsigned/command
regression-tests.recursor-dnssec/recursortests.py
regression-tests.recursor/config.sh
regression-tests.rootzone/named.conf
regression-tests/backends/bind-slave
regression-tests/ext/bind-master
regression-tests/ext/bind-slave
regression-tests/named.conf

index 7b3da21e39ab6271fd8f39319e39a120b2dce677..19d7021606f252c98e03918a1330e86769a4fea8 100644 (file)
@@ -53,8 +53,11 @@ It supports the following blocks and directives:
    * ``file``
    * ``type``
    * ``masters``
+   * ``primaries`` (added in version 4.9.0)
    * ``also-notify``
 
+Unknown directives will be ignored.
+
 .. _setting-bind-check-interval:
 
 ``bind-check-interval``
index 1a0b01a57886e219c5c6cdff19841992f670b4b8..c90ae0124509bd527f6ff37a004563b69cc58709 100644 (file)
@@ -935,7 +935,7 @@ void Bind2Backend::loadConfig(string* status)
       if (domain.type.empty()) {
         g_log << Logger::Notice << d_logprefix << " Zone '" << domain.name << "' has no type specified, assuming 'native'" << endl;
       }
-      if (domain.type != "master" && domain.type != "slave" && domain.type != "native" && !domain.type.empty()) {
+      if (domain.type != "primary" && domain.type != "secondary" && domain.type != "native" && !domain.type.empty() && domain.type != "master" && domain.type != "slave") {
         g_log << Logger::Warning << d_logprefix << " Warning! Skipping zone '" << domain.name << "' because type '" << domain.type << "' is invalid" << endl;
         rejected++;
         continue;
@@ -961,9 +961,9 @@ void Bind2Backend::loadConfig(string* status)
       bbd.d_also_notify = domain.alsoNotify;
 
       DomainInfo::DomainKind kind = DomainInfo::Native;
-      if (domain.type == "master")
+      if (domain.type == "primary" || domain.type == "master")
         kind = DomainInfo::Master;
-      if (domain.type == "slave")
+      if (domain.type == "secondary" || domain.type == "slave")
         kind = DomainInfo::Slave;
 
       bool kindChanged = (bbd.d_kind != kind);
@@ -1431,9 +1431,9 @@ bool Bind2Backend::createSlaveDomain(const string& ip, const DNSName& domain, co
     c_of << endl;
     c_of << "# Superslave zone '" << domain.toString() << "' (added: " << nowTime() << ") (account: " << account << ')' << endl;
     c_of << "zone \"" << domain.toStringNoDot() << "\" {" << endl;
-    c_of << "\ttype slave;" << endl;
+    c_of << "\ttype secondary;" << endl;
     c_of << "\tfile \"" << filename << "\";" << endl;
-    c_of << "\tmasters { " << ip << "; };" << endl;
+    c_of << "\tprimaries { " << ip << "; };" << endl;
     c_of << "};" << endl;
     c_of.close();
   }
index 65dfc4da02ca94d5f86d15c09916ee16f09f2fed..481e3b9f9345653043259d9a72d5e91a20fd35b1 100644 (file)
@@ -114,7 +114,8 @@ also-notify         return ALSONOTIFYTOK;
 acl                     return ACLTOK;
 logging                 return LOGGINGTOK;
 directory               return DIRECTORYTOK;
-masters                 return MASTERTOK;
+masters                 return PRIMARYTOK;
+primaries               return PRIMARYTOK;
 type                    return TYPETOK;
 \"                      yy_push_state(quoted);
 <quoted>[^\"]*          yylval=strdup(yytext); return QUOTEDWORD;
index 0b1056f2db6e6048cdd77b9fd6120745db452af7..9f6ba81fe61b33d21eae0f94d20faff2becfd909 100644 (file)
@@ -108,7 +108,7 @@ void BindParser::commit(BindDomainInfo DI)
 %}
 
 %token AWORD QUOTEDWORD OBRACE EBRACE SEMICOLON ZONETOK FILETOK OPTIONSTOK
-%token DIRECTORYTOK ACLTOK LOGGINGTOK CLASSTOK TYPETOK MASTERTOK ALSONOTIFYTOK
+%token DIRECTORYTOK ACLTOK LOGGINGTOK CLASSTOK TYPETOK PRIMARYTOK ALSONOTIFYTOK
 
 %%
 
@@ -230,10 +230,10 @@ zone_command: command | global_zone_command | zone_also_notify_command
        ;
 
 /* zone commands that also are available at global scope */
-global_zone_command: zone_file_command | zone_type_command | zone_masters_command
+global_zone_command: zone_file_command | zone_type_command | zone_primaries_command
        ;
 
-zone_masters_command: MASTERTOK OBRACE masters EBRACE
+zone_primaries_command: PRIMARYTOK OBRACE primaries EBRACE
        ;
 
 zone_also_notify_command: ALSONOTIFYTOK OBRACE zone_also_notify_list EBRACE
@@ -251,12 +251,12 @@ zone_also_notify: AWORD
         }
         ;
 
-masters: /* empty */
+primaries: /* empty */
        | 
-       masters master SEMICOLON 
+       primaries primary SEMICOLON
        ;
 
-master: AWORD
+primary: AWORD
        {
                s_di.masters.push_back(ComboAddress($1, 53));
                free($1);
index 4d38d223f7ecaf71ab7e8968ec28ca1e77adc8a2..b8b0e3599358252499bda39684af0beab40dddba 100644 (file)
@@ -30,41 +30,42 @@ zone "test.dyndns" {
 };
 
 zone "wtest.com"{
-       type master;
+       type primary;
        file "wtest.com";
 };
 
 zone "nztest.com"{
-       type master;
+       type secondary;
        file "nztest.com";
+       primaries { 1.2.3.4:5678; };
 };
 
 zone "dnssec-parent.com"{
-       type master;
+       type primary;
        file "dnssec-parent.com";
 };
 
 zone "delegated.dnssec-parent.com"{
-       type master;
+       type primary;
        file "delegated.dnssec-parent.com";
 };
 
 zone "secure-delegated.dnssec-parent.com"{
-       type master;
+       type primary;
        file "secure-delegated.dnssec-parent.com";
 };
 
 zone "minimal.com"{
-       type master;
+       type primary;
        file "minimal.com";
 };
 
 zone "tsig.com"{
-       type master;
+       type primary;
        file "tsig.com";
 };
 
 zone "stest.com"{
-       type master;
+       type primary;
        file "stest.com";
 };
index cd8fda27183c6b37094b13ca8e84b2c87f9d4ddf..bff31f21fc51689c37652cb9842526cdaa61b118 100644 (file)
@@ -48,14 +48,15 @@ BOOST_AUTO_TEST_CASE(test_parser)
   checkzone(1, "test.com", "./zones/test.com", slave, 1U);
   BOOST_CHECK_EQUAL(domains[1].masters[0].toString(), ComboAddress("1.2.3.4", 5678).toString());
   checkzone(2, "test.dyndns", "./zones/test.dyndns", garblewarble, 0U);
-  checkzone(3, "wtest.com", "./zones/wtest.com", master, 0U);
-  checkzone(4, "nztest.com", "./zones/nztest.com", master, 0U);
-  checkzone(5, "dnssec-parent.com", "./zones/dnssec-parent.com", master, 0U);
-  checkzone(6, "delegated.dnssec-parent.com", "./zones/delegated.dnssec-parent.com", master, 0U);
-  checkzone(7, "secure-delegated.dnssec-parent.com", "./zones/secure-delegated.dnssec-parent.com", master, 0U);
-  checkzone(8, "minimal.com", "./zones/minimal.com", master, 0U);
-  checkzone(9, "tsig.com", "./zones/tsig.com", master, 0U);
-  checkzone(10, "stest.com", "./zones/stest.com", master, 0U);
+  checkzone(3, "wtest.com", "./zones/wtest.com", primary, 0U);
+  checkzone(4, "nztest.com", "./zones/nztest.com", secondary, 1U);
+  BOOST_CHECK_EQUAL(domains[1].masters[0].toString(), ComboAddress("1.2.3.4", 5678).toString());
+  checkzone(5, "dnssec-parent.com", "./zones/dnssec-parent.com", primary, 0U);
+  checkzone(6, "delegated.dnssec-parent.com", "./zones/delegated.dnssec-parent.com", primary, 0U);
+  checkzone(7, "secure-delegated.dnssec-parent.com", "./zones/secure-delegated.dnssec-parent.com", primary, 0U);
+  checkzone(8, "minimal.com", "./zones/minimal.com", primary, 0U);
+  checkzone(9, "tsig.com", "./zones/tsig.com", primary, 0U);
+  checkzone(10, "stest.com", "./zones/stest.com", primary, 0U);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
index 9ef9fadb1896c3f9d803073c541a3bccb47d57f8..51e76fa03b429a2223f5f1ee7e09c0ea08f30202 100644 (file)
@@ -162,10 +162,10 @@ try
           i!=domains.end();
           ++i)
         {
-          if(i->type!="master" && i->type!="slave") {
-            cerr<<" Warning! Skipping '"<<i->type<<"' zone '"<<i->name<<"'"<<endl;
-            continue;
-          }
+        if (i->type != "primary" && i->type != "secondary" && !i->type.empty() && i->type != "master" && i->type != "slave") {
+          cerr << " Warning! Skipping '" << i->type << "' zone '" << i->name << "'" << endl;
+          continue;
+        }
           lines.clear();
           try {
             Json::object obj;
index f0c9059778248b4eede1398d37f4c75541904562..5752350e0df455ec483b726cc62b705f7340d6cc 100644 (file)
@@ -306,10 +306,10 @@ int main( int argc, char* argv[] )
 
                         for(const auto& i: domains)
                         {
-                                        if(i.type!="master" && i.type!="slave") {
-                                                cerr<<" Warning! Skipping '"<<i.type<<"' zone '"<<i.name<<"'"<<endl;
-                                                continue;
-                                        }
+                                if (i.type != "primary" && i.type != "secondary" && !i.type.empty() && i.type != "master" && i.type != "slave") {
+                                  cerr << " Warning! Skipping '" << i.type << "' zone '" << i.name << "'" << endl;
+                                  continue;
+                                }
                                 try
                                 {
                                   if( i.name != g_rootdnsname && i.name != DNSName("localhost") && i.name != DNSName("0.0.127.in-addr.arpa") )
index d6e61b4f89bf05b5913db3e6667b4623c4721a57..7a12f2df5780d0286c1f7fb5d9ae7ef45153ca4b 100644 (file)
@@ -285,10 +285,10 @@ try
 
       for(const auto & domain : domains)
         {
-          if(domain.type!="master" && domain.type!="slave") {
-            cerr<<" Warning! Skipping '"<<domain.type<<"' zone '"<<domain.name<<"'"<<endl;
-            continue;
-          }
+        if (domain.type != "primary" && domain.type != "secondary" && !domain.type.empty() && domain.type != "master" && domain.type != "slave") {
+          cerr << " Warning! Skipping '" << domain.type << "' zone '" << domain.name << "'" << endl;
+          continue;
+        }
           try {
             startNewTransaction();
 
index 06fc48b773e1ba26a00272a99bc3a74b4f00c44d..ef2bbe8132cde099b266818d48d2755f3cc80575 100644 (file)
@@ -103,7 +103,7 @@ options {
 
                 namedconf.write("""
         zone "%s" {
-            type master;
+            type primary;
             file "%s.zone";
         };""" % (zone, zonename))
 
index ee2bf50ecfe56c4d99840d70b1dfaec29c1557de..60127f22ffe5833ecd4ba036d739a78802354bd5 100644 (file)
@@ -142,7 +142,7 @@ options {
 
                 namedconf.write("""
         zone "%s" {
-            type slave;
+            type secondary;
             file "%s.zone";
             masters { %s; };
         };""" % (zone, zonename, cls._zones[zone]))
index 110e91523c712991c57641ee0c87adac533fbaed..8710e8e869f292be4d40b67ea8617991adb33a74 100644 (file)
@@ -9,6 +9,6 @@ options {
 };
 
 zone "test.com"{
-       type master;
+       type primary;
        file "./test.com";
 };
index e94fe49cf82129d2ffd60dfba90586d1b517da22..15e634623d7ccb974a2df262152741f384bf3557 100644 (file)
@@ -9,6 +9,6 @@ options {
 };
 
 zone "minimal.com"{
-       type master;
+       type primary;
        file "./minimal.com";
 };
index e94fe49cf82129d2ffd60dfba90586d1b517da22..15e634623d7ccb974a2df262152741f384bf3557 100644 (file)
@@ -9,6 +9,6 @@ options {
 };
 
 zone "minimal.com"{
-       type master;
+       type primary;
        file "./minimal.com";
 };
index da863379cc172db93dc220e8b5b083da087023cd..3ee408dbe9889604d66edf8cfcd2f71d935befac 100644 (file)
@@ -4,6 +4,6 @@ options {
 };
 
 zone "example.com" {
-  type master;
+  type primary;
   file "example.com.zone";
 };
index 906ab00fd25405f328b4d37c924b167d68298057..5cc875fc827c49a2c7ff30212df25827146a128f 100755 (executable)
@@ -9,7 +9,7 @@ sed '/directory/ { s@./zones@../regression-tests/zones@ }' ../regression-tests/n
 
 cat >> ./named.conf << __EOF__
 zone "."{
-       type master;
+       type primary;
        file "../../regression-tests.rootzone/zones/ROOT";
 };
 __EOF__
index e94fe49cf82129d2ffd60dfba90586d1b517da22..15e634623d7ccb974a2df262152741f384bf3557 100644 (file)
@@ -9,6 +9,6 @@ options {
 };
 
 zone "minimal.com"{
-       type master;
+       type primary;
        file "./minimal.com";
 };
index 30be471ef1f34b553c242936d1293ea976ecee9b..9829dbc8cf99c43c0006f8510198990536aad897 100755 (executable)
@@ -35,12 +35,12 @@ options {
         minimal-responses yes;
 };
 zone "example.com"{
-        type master;
+        type primary;
         file "example.com";
 };
 
 zone "test.com"{
-        type master;
+        type primary;
         file "test.com";
 };
 EOF
index 22935a93f6f0074c114ed0ec5977b9c3d673c5c6..53b6881c07b03100cd57ce3f5be6b7c0416663c6 100755 (executable)
@@ -30,12 +30,12 @@ options {
         minimal-responses yes;
 };
 zone "example.com"{
-        type master;
+        type primary;
         file "example.com";
 };
 
 zone "test.com"{
-        type master;
+        type primary;
         file "test.com";
 };
 EOF
index c19426965e0b892733af3bd26912b31667576584..93e68cc210dd2282337c68bd33b8340ba120f720 100644 (file)
@@ -474,7 +474,7 @@ options {
 
                 namedconf.write("""
         zone "%s" {
-            type master;
+            type primary;
             file "%s.zone";
         };""" % (zone, zonename))
 
index 480f1dd9ffa8682dc32870d234d83b82a7c3df9b..0e40c321542e6e086a4df951915b4ce491aad6b4 100755 (executable)
@@ -541,7 +541,7 @@ EOF
         fi
         cat >> $dir/named.conf <<EOF
 zone "$realzone"{
-    type master;
+    type primary;
     file "./$zone.zone";
 };
 EOF
index 544a05abdc1ae3150146542b565ccbcb5dd32176..ff4e72a31ba5462bd8250521bc84430d7d2cbb53 100644 (file)
@@ -8,7 +8,7 @@ options {
        minimal-responses yes;
 };
 zone "."{
-       type master;
+       type primary;
        file "ROOT";
 };
 
index c3423dba38fa81cea6c905d6d1e8a27dd88908dc..e002f53298415001297379ad032b6d4df0215cdb 100644 (file)
@@ -1,5 +1,5 @@
        context=${context}-presigned
-       perl -pe 's/type master;/type slave;\n\tmasters { 127.0.0.1:'$port'; };/ ;s/file "([^"]+)/file "$1-slave/' < named.conf > named-slave.conf
+       perl -pe 's/type primary;/type secondary;\n\tprimaries { 127.0.0.1:'$port'; };/ ;s/file "([^"]+)/file "$1-slave/' < named.conf > named-slave.conf
 
        for zone in $(grep 'zone ' named.conf  | cut -f2 -d\")
        do
index bd2fa1068f29e1e0ff22e3da4ed0ec2e563d58d6..01b677c418f9b5612d48eb5cec097462375c48a1 100644 (file)
@@ -75,7 +75,7 @@ __EOF__
 
                echo "" >> bind.conf
                echo "zone \"${zone}\" {" >> bind.conf
-               echo "  type master;" >> bind.conf
+               echo "  type primary;" >> bind.conf
                if [ "${zone}" = "tsig.com" ]
                then
                        echo "  allow-transfer { key test; none; };" >> bind.conf
index f0afa219810075214a7ed71aacd68099c070f0ef..20e7693d8bbc1c3327e97d1c96e6489f27bf4d23 100644 (file)
@@ -21,7 +21,7 @@ __EOF__
 
                echo "" >> bind-slave.conf
                echo "zone \"${zone}\" {" >> bind-slave.conf
-               echo "  type slave;" >> bind-slave.conf
+               echo "  type secondary;" >> bind-slave.conf
                echo "  file \"${zone}-slave\";" >> bind-slave.conf
                if [ "${zone}" = "tsig.com" ]
                then
index c1105a0891c1ae3db7d895de65a84f2186fa86c9..f1ba7d0b5af07e7099b737d7ef4e0fe64ac6e602 100644 (file)
@@ -8,17 +8,17 @@ options {
        minimal-responses yes;
 };
 zone "example.com"{
-       type master;
+       type primary;
        file "example.com";
 };
 
 zone "test.com"{
-       type master;
+       type primary;
        file "test.com";
 };
 
 zone "test.dyndns" {
-       type master;
+       type primary;
        file "test.dyndns";
        allow-update {
                127.0.0.0/8;
@@ -26,7 +26,7 @@ zone "test.dyndns" {
 };
 
 zone "sub.test.dyndns" {
-       type master;
+       type primary;
        file "sub.test.dyndns";
        allow-update {
                127.0.0.0/8;
@@ -34,67 +34,67 @@ zone "sub.test.dyndns" {
 };
 
 zone "wtest.com"{
-       type master;
+       type primary;
        file "wtest.com";
 };
 
 zone "nztest.com"{
-       type master;
+       type primary;
        file "nztest.com";
 };
 
 zone "dnssec-parent.com"{
-       type master;
+       type primary;
        file "dnssec-parent.com";
 };
 
 zone "insecure.dnssec-parent.com"{
-       type master;
+       type primary;
        file "insecure.dnssec-parent.com";
 };
 
 zone "delegated.dnssec-parent.com"{
-       type master;
+       type primary;
        file "delegated.dnssec-parent.com";
 };
 
 zone "secure-delegated.dnssec-parent.com"{
-       type master;
+       type primary;
        file "secure-delegated.dnssec-parent.com";
 };
 
 zone "minimal.com"{
-       type master;
+       type primary;
        file "minimal.com";
 };
 
 zone "tsig.com"{
-       type master;
+       type primary;
        file "tsig.com";
 };
 
 zone "stest.com"{
-       type master;
+       type primary;
        file "stest.com";
 };
 
 zone "cdnskey-cds-test.com"{
-       type master;
+       type primary;
        file "cdnskey-cds-test.com";
 };
 
 zone "2.0.192.in-addr.arpa"{
-       type master;
+       type primary;
        file "2.0.192.in-addr.arpa";
 };
 
 zone "cryptokeys.org"{
-    type master;
+    type primary;
     file "cryptokeys.org";
 };
 
 zone "hiddencryptokeys.org"{
-    type master;
+    type primary;
     file "hiddencryptokeys.org";
 };