From ea97ae1a715910acf76c1e86029748b398783120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 01/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- interface/web/dns/form/dns_soa.tform.php | 14 +++++++++++++ interface/web/dns/list/dns_soa.list.php | 20 +++++++++++++++++++ .../web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_edit.htm | 6 ++++++ interface/web/dns/templates/dns_soa_list.htm | 2 +- server/plugins-available/bind_plugin.inc.php | 13 +++++++++--- 6 files changed, 52 insertions(+), 5 deletions(-) diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index 02afa86c53..bb571e30a2 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -80,6 +80,20 @@ $form["tabs"]['dns_soa'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'status' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'PENDING', + 'value' => 'PENDING' + ), + 'status_txt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '10000' + ), 'origin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 2f4233e066..0b76b27fcc 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -61,7 +61,27 @@ $liste["item"][] = array( 'field' => "active", 'width' => "", 'value' => array('Y' => "
".$app->lng('yes_txt')."
", 'N' => "
".$app->lng('no_txt')."
")); + +$liste["item"][] = array( 'field' => "status", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('OK' => '', 'ERROR' => 'background-color:red', 'PENDING' => 'background-color:yellow')); + + +$liste["item"][] = array( 'field' => "status_txt", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => ''); + $liste["item"][] = array( 'field' => "server_id", 'datatype' => "VARCHAR", 'formtype' => "SELECT", diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index 0f14534c53..19c074c402 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -57,7 +57,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"} {tmpl_var name="origin"} diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index 33d4298846..120f6f0822 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -5,6 +5,11 @@ DNS Zone + +
+
+
+
@@ -127,6 +132,7 @@ +
diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 5162119900..d151d4b895 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -55,7 +55,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="origin"} {tmpl_var name="ns"} diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index c538cb9570..13557ae1a2 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -123,22 +123,28 @@ class bind_plugin { $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1))); } - file_put_contents($filename, $tpl->grab()); + file_put_contents($filename.'.pending', $tpl->grab()); chown($filename, escapeshellcmd($dns_config['bind_user'])); chgrp($filename, escapeshellcmd($dns_config['bind_group'])); //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $out=array(); + exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + $statustext=''; + foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_DEBUG); } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - rename($filename, $filename.'.err'); + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename.'.err'); } unset($tpl); unset($records); @@ -163,6 +169,7 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); + if(is_file($filename.'.pending')) unlink($filename.'.pending'); } //* Restart bind nameserver if update_acl is not empty, otherwise reload it -- GitLab From ad3fe598beb5cb266ff150464aad20b825608c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 02/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 3 +++ install/sql/ispconfig3.sql | 2 ++ 2 files changed, 5 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 624d748a52..599c59da5d 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -203,3 +203,6 @@ CREATE TABLE `ftp_traffic` ( ALTER TABLE `mail_forwarding` ADD COLUMN `allow_send_as` ENUM('n','y') NOT NULL DEFAULT 'n' AFTER `active`; UPDATE `mail_forwarding` SET `allow_send_as` = 'y' WHERE `type` = 'alias'; + +ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; +ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index f77bbf456d..c1bd0caabf 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -536,6 +536,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', + `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK', + `status_txt` text, `xfer` varchar(255) NOT NULL DEFAULT '', `also_notify` varchar(255) default NULL, `update_acl` varchar(255) default NULL, -- GitLab From de078e69bc255585a0a07dfd2995138f30acfe2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 03/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 13557ae1a2..58ab5f07b6 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -130,7 +130,7 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); - exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From d459ec8f47c84d7a355bb6f95ded6227c23a709c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 04/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- interface/web/dns/form/dns_soa.tform.php | 14 +++++++++++++ interface/web/dns/list/dns_soa.list.php | 20 +++++++++++++++++++ .../web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_edit.htm | 6 ++++++ interface/web/dns/templates/dns_soa_list.htm | 2 +- server/plugins-available/bind_plugin.inc.php | 16 ++++++++++----- 6 files changed, 53 insertions(+), 7 deletions(-) diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index 05e915740c..d765782860 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -80,6 +80,20 @@ $form["tabs"]['dns_soa'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'status' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'PENDING', + 'value' => 'PENDING' + ), + 'status_txt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '10000' + ), 'origin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 2f4233e066..0b76b27fcc 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -61,7 +61,27 @@ $liste["item"][] = array( 'field' => "active", 'width' => "", 'value' => array('Y' => "
".$app->lng('yes_txt')."
", 'N' => "
".$app->lng('no_txt')."
")); + +$liste["item"][] = array( 'field' => "status", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('OK' => '', 'ERROR' => 'background-color:red', 'PENDING' => 'background-color:yellow')); + + +$liste["item"][] = array( 'field' => "status_txt", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => ''); + $liste["item"][] = array( 'field' => "server_id", 'datatype' => "VARCHAR", 'formtype' => "SELECT", diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index 0f14534c53..19c074c402 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -57,7 +57,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"} {tmpl_var name="origin"} diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index be2e7fa831..d18b840181 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -5,6 +5,11 @@ DNS Zone + +
+
+
+
@@ -137,6 +142,7 @@
+
diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 5162119900..d151d4b895 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -55,7 +55,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="origin"} {tmpl_var name="ns"} diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index cede1cb82c..4abd53b477 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -261,22 +261,28 @@ class bind_plugin { $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1))); } - file_put_contents($filename, $tpl->grab()); + file_put_contents($filename.'.pending', $tpl->grab()); chown($filename, escapeshellcmd($dns_config['bind_user'])); chgrp($filename, escapeshellcmd($dns_config['bind_group'])); //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $out=array(); + exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + $statustext=''; + foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_DEBUG); } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - rename($filename, $filename.'.err'); + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename.'.err'); } unset($tpl); unset($records); @@ -319,9 +325,9 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); + if(is_file($filename.'.pending')) unlink($filename.'.pending'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); - } - + //* Restart bind nameserver if update_acl is not empty, otherwise reload it if($data['new']['update_acl'] != '') { $app->services->restartServiceDelayed('bind', 'restart'); -- GitLab From 7b7bfa4bcc55fc1be1955ba011a9e51a9db20638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 05/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 2 ++ install/sql/ispconfig3.sql | 2 ++ 2 files changed, 4 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 2c4300a678..ae29109634 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -226,3 +226,5 @@ ALTER TABLE `web_database` ADD COLUMN `quota_exceeded` enum('n','y') NOT NULL DE ALTER TABLE `client` ADD COLUMN `limit_database_user` int(11) NOT NULL DEFAULT '-1' after limit_database; ALTER TABLE `client_template` ADD COLUMN `limit_database_user` int(11) NOT NULL DEFAULT '-1' after limit_database; +ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; +ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 9d7509506d..867be895a5 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -542,6 +542,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', + `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK', + `status_txt` text, `xfer` varchar(255) NOT NULL DEFAULT '', `also_notify` varchar(255) default NULL, `update_acl` varchar(255) default NULL, -- GitLab From 163ce6dc2237b69c46fe831bf5699ef36401a2a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 06/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 4abd53b477..da9071b6c4 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -268,7 +268,7 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); - exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From 202920e75836823dce6c39b24e0a24fd14aac514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 8 Apr 2016 10:31:48 +0200 Subject: [PATCH 07/36] bind plugin set to access master db; installer setting rights initially --- install/lib/installer_base.lib.php | 16 ++++++++++++++++ server/plugins-available/bind_plugin.inc.php | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7621df30d0..c38caa02cf 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -658,6 +658,22 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.mail_backup', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } + + $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } + + $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } } } diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index da9071b6c4..0c0165e5de 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,7 +273,7 @@ class bind_plugin { foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); - $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { @@ -281,7 +281,7 @@ class bind_plugin { } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename.'.err'); } unset($tpl); -- GitLab From 7e8e7355a45b605fc47a2998f52e783cf482c136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 10:53:43 +0200 Subject: [PATCH 08/36] both dbs to be updated --- server/plugins-available/bind_plugin.inc.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 01d8a5c685..711af3fa2f 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,7 +273,8 @@ class bind_plugin { foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); - $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + if ($app->dbmaster) $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { @@ -281,7 +282,8 @@ class bind_plugin { } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + if ($app->dbmaster) $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename.'.err'); } unset($tpl); -- GitLab From 96cbb50c4a5232d3fbc954ae9a190a03e6d98967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 12:31:47 +0200 Subject: [PATCH 09/36] removed db permirrion patch and moved it into dns-dnssec-fix-dbmaster --- install/lib/installer_base.lib.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c38caa02cf..cc7626c36c 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -659,21 +659,6 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } - - $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } } } -- GitLab From 86a7f8c6dbd073aa87fc68b4b7d1a90387864c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 10/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- interface/web/dns/form/dns_soa.tform.php | 14 +++++++++++++ interface/web/dns/list/dns_soa.list.php | 20 +++++++++++++++++++ .../web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_edit.htm | 6 ++++++ interface/web/dns/templates/dns_soa_list.htm | 2 +- server/plugins-available/bind_plugin.inc.php | 17 +++++++++++----- 6 files changed, 54 insertions(+), 7 deletions(-) diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index 05e915740c..d765782860 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -80,6 +80,20 @@ $form["tabs"]['dns_soa'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'status' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'PENDING', + 'value' => 'PENDING' + ), + 'status_txt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '10000' + ), 'origin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 2f4233e066..0b76b27fcc 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -61,7 +61,27 @@ $liste["item"][] = array( 'field' => "active", 'width' => "", 'value' => array('Y' => "
".$app->lng('yes_txt')."
", 'N' => "
".$app->lng('no_txt')."
")); + +$liste["item"][] = array( 'field' => "status", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('OK' => '', 'ERROR' => 'background-color:red', 'PENDING' => 'background-color:yellow')); + + +$liste["item"][] = array( 'field' => "status_txt", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => ''); + $liste["item"][] = array( 'field' => "server_id", 'datatype' => "VARCHAR", 'formtype' => "SELECT", diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index 0f14534c53..19c074c402 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -57,7 +57,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"} {tmpl_var name="origin"} diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index be2e7fa831..d18b840181 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -5,6 +5,11 @@ DNS Zone + +
+
+
+
@@ -137,6 +142,7 @@
+
diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 5162119900..d151d4b895 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -55,7 +55,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="origin"} {tmpl_var name="ns"} diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index cede1cb82c..e9852a8e16 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -261,22 +261,28 @@ class bind_plugin { $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.str_replace("/", "_", substr($zone['origin'], 0, -1))); } - file_put_contents($filename, $tpl->grab()); + file_put_contents($filename.'.pending', $tpl->grab()); chown($filename, escapeshellcmd($dns_config['bind_user'])); chgrp($filename, escapeshellcmd($dns_config['bind_group'])); //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $out=array(); + exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + $statustext=''; + foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_DEBUG); } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - rename($filename, $filename.'.err'); + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename.'.err'); } unset($tpl); unset($records); @@ -320,8 +326,9 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); - } - + if(is_file($filename.'.pending')) unlink($filename.'.pending'); + } + //* Restart bind nameserver if update_acl is not empty, otherwise reload it if($data['new']['update_acl'] != '') { $app->services->restartServiceDelayed('bind', 'restart'); -- GitLab From a8488777be8801656cfc540f5357cac19c8aae44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 11/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 4 +++- install/sql/ispconfig3.sql | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 4f67ccc0dd..80e0615867 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -249,4 +249,6 @@ UPDATE `sys_session` SET `last_updated` = NULL WHERE `last_updated` = '0000-00-0 UPDATE `web_domain` SET `added_date` = NULL WHERE `added_date` = '0000-00-00'; UPDATE `web_traffic` SET `traffic_date` = NULL WHERE `traffic_date` = '0000-00-00'; - +-- DNS-Status (2 lines) +ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; +ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 17b08b6289..ccfa4da8e3 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -542,6 +542,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', + `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK', + `status_txt` text, `xfer` varchar(255) NOT NULL DEFAULT '', `also_notify` varchar(255) default NULL, `update_acl` varchar(255) default NULL, -- GitLab From 05c924ea11197e00c3a831bb8f9a17324ad6ae08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 12/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index e9852a8e16..dec9f9d85c 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -268,7 +268,7 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); - exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From 8cde6289b9fd65fa4cfdd515a03d028ab63d0f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 13/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- server/plugins-available/bind_plugin.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index dec9f9d85c..e5f4072110 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -268,7 +268,11 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); +<<<<<<< HEAD exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); +======= + exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); +>>>>>>> Zone-Checking improved $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { @@ -325,8 +329,8 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); - if(is_file($filename.'.signed')) unlink($filename.'.signed'); if(is_file($filename.'.pending')) unlink($filename.'.pending'); + if(is_file($filename.'.signed')) unlink($filename.'.signed'); } //* Restart bind nameserver if update_acl is not empty, otherwise reload it -- GitLab From 3a203e1f3bd7bc53345256b19803d64021354fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 14/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 80e0615867..0dd25a2a15 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -252,3 +252,4 @@ UPDATE `web_traffic` SET `traffic_date` = NULL WHERE `traffic_date` = '0000-00-0 -- DNS-Status (2 lines) ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; + -- GitLab From 2f47487017ffab6e4d81d1fd234c8714aa16de22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 15/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index e5f4072110..c7efac708d 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -268,11 +268,7 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); -<<<<<<< HEAD exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); -======= - exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); ->>>>>>> Zone-Checking improved $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From 8739ef8cbee67f0f7075c3da9ccff9d041c8fff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 8 Apr 2016 10:31:48 +0200 Subject: [PATCH 16/36] bind plugin set to access master db; installer setting rights initially --- install/lib/installer_base.lib.php | 16 ++++++++++++++++ server/plugins-available/bind_plugin.inc.php | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 7621df30d0..c38caa02cf 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -658,6 +658,22 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.mail_backup', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } + + $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } + + $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } } } diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index c7efac708d..01d8a5c685 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,7 +273,7 @@ class bind_plugin { foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); - $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { @@ -281,7 +281,7 @@ class bind_plugin { } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename.'.err'); } unset($tpl); -- GitLab From 7b3806ec9884b9fab692c2ef6f62640a567f8f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 10:53:43 +0200 Subject: [PATCH 17/36] both dbs to be updated --- server/plugins-available/bind_plugin.inc.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 01d8a5c685..711af3fa2f 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,7 +273,8 @@ class bind_plugin { foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); - $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + if ($app->dbmaster) $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename); } else { if($dns_config['disable_bind_log'] === 'y') { @@ -281,7 +282,8 @@ class bind_plugin { } else { $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN); } - $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + if ($app->dbmaster) $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); rename($filename.'.pending', $filename.'.err'); } unset($tpl); -- GitLab From 37e4127afa37e1242b011e01facf4ada50b66aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 12:31:47 +0200 Subject: [PATCH 18/36] removed db permirrion patch and moved it into dns-dnssec-fix-dbmaster --- install/lib/installer_base.lib.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index c38caa02cf..cc7626c36c 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -659,21 +659,6 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } - - $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } } } -- GitLab From 0ea967089ad30dcd582a9aa7a783e65ad62b2e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Tue, 12 Apr 2016 11:07:44 +0200 Subject: [PATCH 19/36] db permissions --- install/lib/installer_base.lib.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index cc7626c36c..9a876b45fe 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -659,6 +659,14 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } + $query = "GRANT SELECT, UPDATE(`dnssec_initialized`, `dnssec_info`, `dnssec_last_signed`, `status`, `status_txt`) ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } + } } -- GitLab From fa78df2fb280226e211218bdd15dda230212ec9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 20/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- interface/web/dns/form/dns_soa.tform.php | 14 +++++++++++++ interface/web/dns/list/dns_soa.list.php | 20 +++++++++++++++++++ .../web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_edit.htm | 6 ++++++ interface/web/dns/templates/dns_soa_list.htm | 2 +- server/plugins-available/bind_plugin.inc.php | 12 ++++++++--- 6 files changed, 51 insertions(+), 5 deletions(-) diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index d76c403447..a39f48c17b 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -80,6 +80,20 @@ $form["tabs"]['dns_soa'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'status' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => 'PENDING', + 'value' => 'PENDING' + ), + 'status_txt' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '10000' + ), 'origin' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 2f4233e066..0b76b27fcc 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -61,7 +61,27 @@ $liste["item"][] = array( 'field' => "active", 'width' => "", 'value' => array('Y' => "
".$app->lng('yes_txt')."
", 'N' => "
".$app->lng('no_txt')."
")); + +$liste["item"][] = array( 'field' => "status", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('OK' => '', 'ERROR' => 'background-color:red', 'PENDING' => 'background-color:yellow')); + + +$liste["item"][] = array( 'field' => "status_txt", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => ''); + $liste["item"][] = array( 'field' => "server_id", 'datatype' => "VARCHAR", 'formtype' => "SELECT", diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index fbdc0398ed..6315223a09 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -57,7 +57,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"} {tmpl_var name="origin"} diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index 87853d1ede..150007fa53 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -11,6 +11,11 @@ DNS Zone + +
+
+
+
@@ -145,6 +150,7 @@ +
diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index 22cd19484e..eb2258df4d 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -55,7 +55,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="origin"} {tmpl_var name="ns"} diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 80d302bee0..80fcb640b3 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -272,9 +272,13 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename), $out, $return_status); + $out=array(); + exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename).' 2>&1', $out, $return_status); + $statustext=''; + foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); + $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); } else { $loglevel = @($dns_config['disable_bind_log'] === 'y')?'LOGLEVEL_DEBUG':'LOGLEVEL_WARN'; $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), $loglevel); @@ -290,6 +294,7 @@ class bind_plugin { } else { rename($filename, $filename.'.err'); } + $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); } unset($tpl); unset($records); @@ -333,8 +338,9 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); - } - + if(is_file($filename.'.pending')) unlink($filename.'.pending'); + } + //* Restart bind nameserver if update_acl is not empty, otherwise reload it if($data['new']['update_acl'] != '') { $app->services->restartServiceDelayed('bind', 'restart'); -- GitLab From 7568eaf4e41da1cd13796d40ff2150755afad288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 21/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 2 ++ install/sql/ispconfig3.sql | 2 ++ 2 files changed, 4 insertions(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 0de0a980a1..b2090a4dbd 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -12,3 +12,5 @@ ALTER TABLE `mail_mailinglist` ADD `posting_policy` enum('closed','moderated','f ALTER TABLE `web_domain` CHANGE `folder_directive_snippets` `folder_directive_snippets` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL; ALTER TABLE `sys_user` ADD `last_login_ip` VARCHAR(50) NULL AFTER `lost_password_reqtime`; ALTER TABLE `sys_user` ADD `last_login_at` BIGINT(20) NULL AFTER `last_login_ip`; +ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; +ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 6de0ce049a..c3e2b9b11b 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -547,6 +547,8 @@ CREATE TABLE `dns_soa` ( `minimum` int(11) unsigned NOT NULL default '3600', `ttl` int(11) unsigned NOT NULL default '3600', `active` enum('N','Y') NOT NULL DEFAULT 'N', + `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK', + `status_txt` text, `xfer` varchar(255) NOT NULL DEFAULT '', `also_notify` varchar(255) default NULL, `update_acl` varchar(255) default NULL, -- GitLab From 4930e96d181fdf3a5f3e221b8b5499d0f8409b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 22/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 80fcb640b3..45d8ee4492 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,7 +273,8 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); - exec('/usr/sbin/named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename).' 2>&1', $out, $return_status); + exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From dc3c29e7d2429045cf521dbc53a6908cde49f99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 23/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 45d8ee4492..f908814dd9 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -338,8 +338,8 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); - if(is_file($filename.'.signed')) unlink($filename.'.signed'); if(is_file($filename.'.pending')) unlink($filename.'.pending'); + if(is_file($filename.'.signed')) unlink($filename.'.signed'); } //* Restart bind nameserver if update_acl is not empty, otherwise reload it -- GitLab From e3126af8922189185261271948d5f9e5899980be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 24/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index b2090a4dbd..6a02b31bd2 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -14,3 +14,4 @@ ALTER TABLE `sys_user` ADD `last_login_ip` VARCHAR(50) NULL AFTER `lost_password ALTER TABLE `sys_user` ADD `last_login_at` BIGINT(20) NULL AFTER `last_login_ip`; ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; + -- GitLab From 3ecc352745f8b3e4bb28fb23521d8a777fc1549d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 25/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index f908814dd9..60d5ea7b4c 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -274,7 +274,6 @@ class bind_plugin { if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); - $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From f3e314ae6a3519f3746e1ed25c76850426488d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 8 Apr 2016 10:31:48 +0200 Subject: [PATCH 26/36] bind plugin set to access master db; installer setting rights initially --- install/lib/installer_base.lib.php | 9 ++++++++- server/plugins-available/bind_plugin.inc.php | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 5226394f34..136827dfef 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -667,7 +667,7 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - $query = "GRANT SELECT, UPDATE(`dnssec_initialized`, `dnssec_info`, `dnssec_last_signed`) ON ?? TO ?@?"; + $query = "GRANT SELECT, UPDATE(`dnssec_initialized`, `dnssec_info`, `dnssec_last_signed`, `status`, `status_txt`) ON ?? TO ?@?"; if ($verbose){ echo $query ."\n"; } @@ -675,6 +675,13 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } + $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; + if ($verbose){ + echo $query ."\n"; + } + if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { + $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); + } } } diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 60d5ea7b4c..0e727fe13f 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -279,6 +279,7 @@ class bind_plugin { if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); } else { $loglevel = @($dns_config['disable_bind_log'] === 'y')?'LOGLEVEL_DEBUG':'LOGLEVEL_WARN'; $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), $loglevel); @@ -295,6 +296,8 @@ class bind_plugin { rename($filename, $filename.'.err'); } $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); + rename($filename.'.pending', $filename.'.err'); } unset($tpl); unset($records); -- GitLab From cff5e787a0f5ec62c1a536d04134850275a4ceb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 10:53:43 +0200 Subject: [PATCH 27/36] both dbs to be updated --- server/plugins-available/bind_plugin.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 0e727fe13f..53970f6967 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -280,6 +280,7 @@ class bind_plugin { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); + } else { $loglevel = @($dns_config['disable_bind_log'] === 'y')?'LOGLEVEL_DEBUG':'LOGLEVEL_WARN'; $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), $loglevel); @@ -297,7 +298,6 @@ class bind_plugin { } $app->db->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); $app->dbmaster->query('UPDATE dns_soa SET status=\'ERROR\', status_txt=\''.str_replace(array('"', '\''), '', $statustext).'\' WHERE id='.$data['new']['id']); - rename($filename.'.pending', $filename.'.err'); } unset($tpl); unset($records); -- GitLab From dd1d83c9c343980f2835fcac8d704e7940d8c8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Mon, 11 Apr 2016 12:31:47 +0200 Subject: [PATCH 28/36] removed db permirrion patch and moved it into dns-dnssec-fix-dbmaster --- install/lib/installer_base.lib.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 136827dfef..0cfb2ff4ed 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -674,14 +674,7 @@ class installer_base { if(!$this->dbmaster->query($query, $value['db'] . '.dns_soa', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - - $query = "GRANT SELECT, UPDATE ON ?? TO ?@?"; - if ($verbose){ - echo $query ."\n"; - } - if(!$this->dbmaster->query($query, $value['db'] . '.dns_rr', $value['user'], $host)) { - $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); - } + } } -- GitLab From 3e2544defd735017cc9abcd5dae700a169d16585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 29/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- server/plugins-available/bind_plugin.inc.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 53970f6967..75fe44d38d 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -273,14 +273,13 @@ class bind_plugin { //* Check the zonefile if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); - exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename.'.pending').' 2>&1', $out, $return_status); + exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename).' 2>&1', $out, $return_status); $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { $app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG); $app->db->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); $app->dbmaster->query('UPDATE dns_soa SET status=\'OK\', status_txt=\'\' WHERE id='.$data['new']['id']); - } else { $loglevel = @($dns_config['disable_bind_log'] === 'y')?'LOGLEVEL_DEBUG':'LOGLEVEL_WARN'; $app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), $loglevel); @@ -340,7 +339,6 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); - if(is_file($filename.'.pending')) unlink($filename.'.pending'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); } -- GitLab From 1ec7cda79f5d61df91f4a0f39fe32312a42b82b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 30/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 6a02b31bd2..b2090a4dbd 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -14,4 +14,3 @@ ALTER TABLE `sys_user` ADD `last_login_ip` VARCHAR(50) NULL AFTER `lost_password ALTER TABLE `sys_user` ADD `last_login_at` BIGINT(20) NULL AFTER `last_login_ip`; ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; - -- GitLab From 3a3e2fc6d8c644d73883dd2754dc543dd1971b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 31/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 75fe44d38d..0472a7e967 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -274,6 +274,7 @@ class bind_plugin { if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename).' 2>&1', $out, $return_status); + $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From ad9183ff120d8b75b1894fab536cca93366fd3c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:08:07 +0100 Subject: [PATCH 32/36] Zone-Checking improved Implements a colored background if bind fails to load the zone due to errors Implements a status text if errors occured Implements not removing a zone if errors occur. instead old zone stays loaded --- server/plugins-available/bind_plugin.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 0472a7e967..75fe44d38d 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -274,7 +274,6 @@ class bind_plugin { if(is_file($filename.'.err')) unlink($filename.'.err'); $out=array(); exec('named-checkzone '.escapeshellarg($zone['origin']).' '.escapeshellarg($filename).' 2>&1', $out, $return_status); - $statustext=''; foreach ($out as $line) $statustext .= $line."\n"; if($return_status === 0) { -- GitLab From 74a2d62eb522e090b9ce09a27f4615034d9b000a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Fri, 22 Jan 2016 17:14:53 +0100 Subject: [PATCH 33/36] added sql changes --- install/sql/incremental/upd_dev_collection.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index b2090a4dbd..6a02b31bd2 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -14,3 +14,4 @@ ALTER TABLE `sys_user` ADD `last_login_ip` VARCHAR(50) NULL AFTER `lost_password ALTER TABLE `sys_user` ADD `last_login_at` BIGINT(20) NULL AFTER `last_login_ip`; ALTER TABLE `dns_soa` ADD COLUMN `status` enum('OK','ERROR','PENDING') NOT NULL DEFAULT 'OK' AFTER `active`; ALTER TABLE `dns_soa` ADD COLUMN `status_txt` text AFTER `status`; + -- GitLab From 1f3370de07b035ec28a2784fbb612ab976ce72cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Sat, 23 Jan 2016 23:15:02 +0100 Subject: [PATCH 34/36] absolute path -> relative path --- server/plugins-available/bind_plugin.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index 75fe44d38d..faadc7f2c9 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -591,4 +591,5 @@ class bind_plugin { } // end class + ?> -- GitLab From 4fb99c9c04b51b07a228cff30fb477f21f18cc39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Thu, 29 Dec 2016 15:51:37 +0100 Subject: [PATCH 35/36] fixed status into new design, fixed status message --- interface/web/dns/list/dns_soa.list.php | 2 +- interface/web/dns/templates/dns_soa_admin_list.htm | 2 +- interface/web/dns/templates/dns_soa_list.htm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/web/dns/list/dns_soa.list.php b/interface/web/dns/list/dns_soa.list.php index 0b76b27fcc..dba460b91a 100644 --- a/interface/web/dns/list/dns_soa.list.php +++ b/interface/web/dns/list/dns_soa.list.php @@ -74,7 +74,7 @@ $liste["item"][] = array( 'field' => "status", $liste["item"][] = array( 'field' => "status_txt", 'datatype' => "VARCHAR", - 'formtype' => "SELECT", + 'formtype' => "TEXT", 'op' => "=", 'prefix' => "", 'suffix' => "", diff --git a/interface/web/dns/templates/dns_soa_admin_list.htm b/interface/web/dns/templates/dns_soa_admin_list.htm index 6315223a09..08a4b0438e 100644 --- a/interface/web/dns/templates/dns_soa_admin_list.htm +++ b/interface/web/dns/templates/dns_soa_admin_list.htm @@ -57,7 +57,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name='status_txt'} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"} {tmpl_var name="origin"} diff --git a/interface/web/dns/templates/dns_soa_list.htm b/interface/web/dns/templates/dns_soa_list.htm index eb2258df4d..27e07afd29 100644 --- a/interface/web/dns/templates/dns_soa_list.htm +++ b/interface/web/dns/templates/dns_soa_list.htm @@ -55,7 +55,7 @@ - {tmpl_var name="active"} + {tmpl_var name="active"} {tmpl_var name="server_id"} {tmpl_var name="origin"} {tmpl_var name="ns"} -- GitLab From 0c811fda1a978835448238d2c0570354f209e48a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?A=2E=20T=C3=A4ffner?= Date: Thu, 29 Dec 2016 16:04:50 +0100 Subject: [PATCH 36/36] ooops... Missed that while updating my MR to current implementetion (you guys actually somehow reinvented the wheel :laughing: ) --- server/plugins-available/bind_plugin.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index b1c747501f..faadc7f2c9 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -339,7 +339,6 @@ class bind_plugin { if(is_file($filename)) unlink($filename); if(is_file($filename.'.err')) unlink($filename.'.err'); - if(is_file($filename.'.pending')) unlink($filename.'.pending'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); } -- GitLab