]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
don't import supermaster ips from other accounts 1710/head
authorKees Monshouwer <mind04@monshouwer.org>
Mon, 8 Sep 2014 18:46:51 +0000 (20:46 +0200)
committermind04 <mind04@monshouwer.org>
Wed, 17 Sep 2014 22:54:50 +0000 (00:54 +0200)
15 files changed:
modules/gmysqlbackend/dnssec-3.x_to_3.4.0_schema.mysql.sql
modules/gmysqlbackend/gmysqlbackend.cc
modules/gmysqlbackend/nodnssec-3.x_to_3.4.0_schema.mysql.sql
modules/gmysqlbackend/schema.mysql.sql
modules/goraclebackend/goraclebackend.cc
modules/goraclebackend/schema.goracle.sql
modules/gpgsqlbackend/dnssec-3.x_to_3.4.0_schema.pgsql.sql
modules/gpgsqlbackend/gpgsqlbackend.cc
modules/gpgsqlbackend/nodnssec-3.x_to_3.4.0_schema.pgsql.sql
modules/gpgsqlbackend/schema.pgsql.sql
modules/gsqlite3backend/dnssec-3.x_to_3.4.0_schema.sqlite3.sql
modules/gsqlite3backend/gsqlite3backend.cc
modules/gsqlite3backend/nodnssec-3.x_to_3.4.0_schema.sqlite3.sql
modules/gsqlite3backend/schema.sqlite3.sql
pdns/backends/gsql/gsqlbackend.cc

index c2645c8496631be148e27cbd1b8a58a8cce12f35..c65c865dc3d8cdee9f61f4f3c61ee25d8ae96119 100644 (file)
@@ -10,6 +10,7 @@ ALTER TABLE records MODIFY auth TINYINT(1) DEFAULT 1;
 ALTER TABLE records MODIFY type VARCHAR(10);
 ALTER TABLE supermasters MODIFY ip VARCHAR(64) NOT NULL;
 ALTER TABLE supermasters ADD PRIMARY KEY(ip, nameserver);
+ALTER TABLE supermasters MODIFY account VARCHAR(40) NOT NULL;
 ALTER TABLE domainmetadata MODIFY kind VARCHAR(32);
 ALTER TABLE tsigkeys MODIFY algorithm VARCHAR(50);
 ALTER TABLE domainmetadata ENGINE=InnoDB;
index c73cedae44f4ceba3bac150c725cfbd3a96dd431..949194c5cefb887a55ce72e6f3970fb1d4973361 100644 (file)
@@ -70,7 +70,7 @@ public:
 
     declare(suffix,"info-all-slaves-query","","select id,name,master,last_check,type from domains where type='SLAVE'");
     declare(suffix,"supermaster-query","", "select account from supermasters where ip='%s' and nameserver='%s'");
-    declare(suffix,"supermaster-name-to-ips", "", "select ip from supermasters where nameserver='%s'");
+    declare(suffix,"supermaster-name-to-ips", "", "select ip,account from supermasters where nameserver='%s' and account='%s'");
 
     declare(suffix,"insert-zone-query","", "insert into domains (type,name) values('NATIVE','%s')");
     declare(suffix,"insert-slave-query","", "insert into domains (type,name,master,account) values('SLAVE','%s','%s','%s')");
index 1c6804f27b14295eed9ee383ebd0cdfad823c7a0..7d25b7cd31161a07abc12902ced985110b57164e 100644 (file)
@@ -7,6 +7,7 @@ ALTER TABLE records ADD ordername VARCHAR(255) BINARY DEFAULT NULL;
 ALTER TABLE records ADD auth TINYINT(1) DEFAULT 1;
 ALTER TABLE records MODIFY type VARCHAR(10);
 ALTER TABLE supermasters MODIFY ip VARCHAR(64) NOT NULL;
+ALTER TABLE supermasters MODIFY account VARCHAR(40) NOT NULL;
 ALTER TABLE supermasters ADD PRIMARY KEY(ip, nameserver);
 
 CREATE INDEX recordorder ON records (domain_id, ordername);
index c40eba12e2e70068c6324e9e7a78420feaa23a0c..002fe928cc400773de5f620de3b588ad18eb1033 100644 (file)
@@ -35,7 +35,7 @@ CREATE INDEX recordorder ON records (domain_id, ordername);
 CREATE TABLE supermasters (
   ip                    VARCHAR(64) NOT NULL,
   nameserver            VARCHAR(255) NOT NULL,
-  account               VARCHAR(40) DEFAULT NULL,
+  account               VARCHAR(40) NOT NULL,
   PRIMARY KEY (ip, nameserver)
 ) Engine=InnoDB;
 
index d6ae9b017b01c4d04afba51a055cddab383c27fd..bc3ec65ac1e5cefcbb0541d77139f873735673f5 100644 (file)
@@ -77,7 +77,7 @@ public:
 
     declare(suffix,"info-all-slaves-query","","select id,name,master,last_check,type from domains where type='SLAVE'");
     declare(suffix,"supermaster-query","", "select account from supermasters where ip='%s' and nameserver='%s'");
-    declare(suffix,"supermaster-name-to-ips", "", "select ip from supermasters where nameserver='%s'");
+    declare(suffix,"supermaster-name-to-ips", "", "select ip,account from supermasters where nameserver='%s' and account='%s'");
 
     declare(suffix,"insert-zone-query","", "insert into domains (id, type, name) values(domain_id_sequence.nextval, 'NATIVE','%s')");
     declare(suffix,"insert-slave-query","", "insert into domains (id, type,name,master,account) values(domain_id_sequence.nextval, 'SLAVE','%s','%s','%s')");
index 75319bae537845118d2baad2bb9b40f92f83cc4f..f15fb93a2c9a07416e7d389e1b90e1d9526ef082 100644 (file)
@@ -37,7 +37,7 @@ CREATE INDEX records$recordorder ON records (domain_id, ordername);
 CREATE TABLE supermasters (
   ip              VARCHAR2(64) NOT NULL,
   nameserver      VARCHAR2(255) NOT NULL,
-  account         VARCHAR2(40) DEFAULT NULL,
+  account         VARCHAR2(40) NOT NULL,
   PRIMARY KEY (ip, nameserver)
 );
 
index 471b558f06d5f639b50cbf92cefc0bdaa7ca7347..a70cc357e9f3205428b459b37a5b40b9c633d2b2 100644 (file)
@@ -7,6 +7,7 @@ ALTER TABLE records ALTER COLUMN content TYPE VARCHAR(65535);
 ALTER TABLE records ALTER COLUMN auth SET DEFAULT 't';
 ALTER TABLE records ALTER COLUMN type TYPE VARCHAR(10);
 ALTER TABLE supermasters ALTER COLUMN ip TYPE INET USING ip::INET;
+ALTER TABLE supermasters ALTER COLUMN account SET DEFAULT NOT NULL;
 ALTER TABLE supermasters ADD CONSTRAINT supermasters_pkey PRIMARY KEY (ip, nameserver);
 ALTER TABLE domainmetadata ALTER COLUMN kind TYPE VARCHAR(32);
 ALTER TABLE tsigkeys ALTER COLUMN algorithm TYPE VARCHAR(50);
index d127cb4634d8541a192a6d447e59ad4528f3cd6b..b1282c16d2b055d6d1dabc95e4e7935dc0098593 100644 (file)
@@ -64,7 +64,7 @@ public:
 
     declare(suffix,"info-all-slaves-query","","select id,name,master,last_check,type from domains where type='SLAVE'");
     declare(suffix,"supermaster-query","", "select account from supermasters where ip='%s' and nameserver=E'%s'");
-    declare(suffix,"supermaster-name-to-ips", "", "select ip from supermasters where nameserver=E'%s'");
+    declare(suffix,"supermaster-name-to-ips", "", "select ip,account from supermasters where nameserver=E'%s' and account=E'%s'");
 
     declare(suffix,"insert-zone-query","", "insert into domains (type,name) values('NATIVE',E'%s')");
     declare(suffix,"insert-slave-query","", "insert into domains (type,name,master,account) values('SLAVE',E'%s',E'%s',E'%s')");
index de206b17d9d0edf81d651de70fe834f9fa49fbd0..b21458ed991c627eaf18f91490cd73e4ae289107 100644 (file)
@@ -7,6 +7,7 @@ ALTER TABLE records ADD ordername VARCHAR(255);
 ALTER TABLE records ADD auth BOOL DEFAULT 't';
 ALTER TABLE records ALTER COLUMN type TYPE VARCHAR(10);
 ALTER TABLE supermasters ALTER COLUMN ip TYPE INET USING ip::INET;
+ALTER TABLE supermasters ALTER COLUMN account SET DEFAULT NOT NULL;
 ALTER TABLE supermasters ADD CONSTRAINT supermasters_pkey PRIMARY KEY (ip, nameserver);
 
 CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
index 99816b2a030b21d11f9a3378a9c117c969414a72..e14395b3d3704d53b1efc248d27cf39a953c5127 100644 (file)
@@ -39,7 +39,7 @@ CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
 CREATE TABLE supermasters (
   ip                    INET NOT NULL,
   nameserver            VARCHAR(255) NOT NULL,
-  account               VARCHAR(40) DEFAULT NULL,
+  account               VARCHAR(40) NOT NULL,
   PRIMARY KEY(ip, nameserver)
 );
 
index 98d965d5ff070c2de6ffa074239f6eb954f33e45..dc2f6c4b654a07fa47c92d80b7a2fc7de23104cb 100644 (file)
@@ -62,12 +62,13 @@ BEGIN TRANSACTION;
   );
 
   INSERT INTO supermasters_backup SELECT ip,nameserver,account FROM supermasters;
+  UPDATE supermasters_backup SET account='' WHERE account IS NULL;
   DROP TABLE supermasters;
 
   CREATE TABLE supermasters (
     ip                  VARCHAR(64) NOT NULL,
     nameserver          VARCHAR(255) NOT NULL COLLATE NOCASE,
-    account             VARCHAR(40) DEFAULT NULL
+    account             VARCHAR(40) NOT NULL
   );
   CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
 
index c5b257766c4dd7273fdadfa9b0c5843dcbda1f80..88faa45f02312d8905e6a50073eedcb1c2f54ba8 100644 (file)
@@ -80,7 +80,7 @@ public:
 
     declare( suffix, "info-all-slaves-query", "","select id,name,master,last_check,type from domains where type='SLAVE'");
     declare( suffix, "supermaster-query", "", "select account from supermasters where ip='%s' and nameserver='%s'");
-    declare( suffix, "supermaster-name-to-ips", "", "select ip from supermasters where nameserver='%s'");
+    declare( suffix, "supermaster-name-to-ips", "", "select ip,account from supermasters where nameserver='%s' and account='%s'");
 
     declare( suffix, "insert-zone-query", "", "insert into domains (type,name) values('NATIVE','%s')");
     declare( suffix, "insert-slave-query", "", "insert into domains (type,name,master,account) values('SLAVE','%s','%s','%s')");
index fe30a59bac2966081a7f4efa84881bf877b1891f..0385384fe791bf56a45dc784b4f418c62aa50e03 100644 (file)
@@ -59,12 +59,13 @@ BEGIN TRANSACTION;
   );
 
   INSERT INTO supermasters_backup SELECT ip, nameserver, account FROM supermasters;
+  UPDATE supermasters_backup SET account='' WHERE account IS NULL;
   DROP TABLE supermasters;
 
   CREATE TABLE supermasters (
     ip                  VARCHAR(64) NOT NULL,
     nameserver          VARCHAR(255) NOT NULL COLLATE NOCASE,
-    account             VARCHAR(40) DEFAULT NULL
+    account             VARCHAR(40) NOT NULL
   );
   CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
 
index 3f7b2c573cef260426efc3ae6784651b33c98e19..7cdd2b8786f09f0147a0ee101df3d5c181ef7af3 100644 (file)
@@ -34,7 +34,7 @@ CREATE INDEX orderindex ON records(ordername);
 CREATE TABLE supermasters (
   ip                    VARCHAR(64) NOT NULL,
   nameserver            VARCHAR(255) NOT NULL COLLATE NOCASE,
-  account               VARCHAR(40) DEFAULT NULL
+  account               VARCHAR(40) NOT NULL
 );
 
 CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
index 6b89a2c19d35e4262f1a6fc2c6d8b47e3166add6..5f948c0f0e53ceb16c431f3ad0286758904657ad 100644 (file)
@@ -918,13 +918,14 @@ bool GSQLBackend::createSlaveDomain(const string &ip, const string &domain, cons
     if (!nameserver.empty()) {
       // figure out all IP addresses for the master
       format = d_GetSuperMasterIPs;
-      snprintf(output,sizeof(output)-1,format.c_str(),sqlEscape(nameserver).c_str()); 
+      snprintf(output,sizeof(output)-1,format.c_str(),sqlEscape(nameserver).c_str(),sqlEscape(account).c_str());
       d_db->doQuery(output, d_result);
       if (!d_result.empty()) {
         // collect all IP addresses
         vector<string> tmp;
         BOOST_FOREACH(SSql::row_t& row, d_result) {
-          tmp.push_back(row[0]);
+          if (account == row[1])
+            tmp.push_back(row[0]);
         }
         // set them as domain's masters, comma separated
         masters = boost::join(tmp, ", ");