From 3fa4439583c61c28737848cbce7e02b6ebadad5a Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Sat, 27 Jun 2015 11:18:53 +0200
Subject: [PATCH] FS#3526 - Add option to disable BIND zone check (the
 intention for the feature request was more to hide log-messages and not to
 disable the named-checkzone-call)

---
 install/tpl/server.ini.master                            | 1 +
 interface/web/admin/form/server_config.tform.php         | 6 ++++++
 interface/web/admin/lib/lang/ar_server_config.lng        | 1 +
 interface/web/admin/lib/lang/bg_server_config.lng        | 1 +
 interface/web/admin/lib/lang/br_server_config.lng        | 1 +
 interface/web/admin/lib/lang/cz_server_config.lng        | 1 +
 interface/web/admin/lib/lang/de_server_config.lng        | 1 +
 interface/web/admin/lib/lang/el_server_config.lng        | 1 +
 interface/web/admin/lib/lang/en_server_config.lng        | 1 +
 interface/web/admin/lib/lang/es_server_config.lng        | 1 +
 interface/web/admin/lib/lang/fi_server_config.lng        | 1 +
 interface/web/admin/lib/lang/fr_server_config.lng        | 1 +
 interface/web/admin/lib/lang/hr_server_config.lng        | 1 +
 interface/web/admin/lib/lang/hu_server_config.lng        | 1 +
 interface/web/admin/lib/lang/id_server_config.lng        | 1 +
 interface/web/admin/lib/lang/it_server_config.lng        | 1 +
 interface/web/admin/lib/lang/ja_server_config.lng        | 1 +
 interface/web/admin/lib/lang/nl_server_config.lng        | 1 +
 interface/web/admin/lib/lang/pl_server_config.lng        | 1 +
 interface/web/admin/lib/lang/pt_server_config.lng        | 1 +
 interface/web/admin/lib/lang/ro_server_config.lng        | 1 +
 interface/web/admin/lib/lang/ru_server_config.lng        | 1 +
 interface/web/admin/lib/lang/se_server_config.lng        | 1 +
 interface/web/admin/lib/lang/sk_server_config.lng        | 1 +
 interface/web/admin/lib/lang/tr_server_config.lng        | 1 +
 interface/web/admin/templates/server_config_dns_edit.htm | 6 ++++--
 server/plugins-available/bind_plugin.inc.php             | 6 +++++-
 27 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index ec7fac8af3..f521cabb39 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -115,6 +115,7 @@ bind_group=bind
 bind_zonefiles_dir=/etc/bind
 named_conf_path=/etc/bind/named.conf
 named_conf_local_path=/etc/bind/named.conf.local
+disable_bind_log=n
 
 [fastcgi]
 fastcgi_starter_path=/var/www/php-fcgi-scripts/[system_user]/
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index a03636af4d..6b00e183c3 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1204,6 +1204,12 @@ $form["tabs"]['dns'] = array(
 			'width' => '40',
 			'maxlength' => '255'
 		),
+		'disable_bind_log' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index b03eaebfdd..e2f2db4e20 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 10fbc0b3dd..4365d91108 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index 8946db1763..e34e4ff088 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index c5a3dbc4f3..8df2dbe238 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -252,5 +252,6 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
 
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 336cea82d9..aa448d86b7 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -265,4 +265,5 @@ $wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie o
 $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung';
 $wb['php_handler_txt'] = 'Standard-PHP-Handler';
 $wb['enable_spdy_txt'] = 'Stellt SPDY zur Verfügung';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index ca7cf2b26e..2cef4ed735 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -249,4 +249,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 2628abf292..b5e4237ea2 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -280,4 +280,5 @@ $wb['xmpp_port_http_txt'] = 'HTTP';
 $wb['xmpp_port_https_txt'] = 'HTTPS';
 $wb['xmpp_port_pastebin_txt'] = 'Pastebin';
 $wb['xmpp_port_bosh_txt'] = 'BOSH';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 1c91d0dd6d..a62b3f6198 100644
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -252,4 +252,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 8ece953fe8..f4f88564cc 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index d566538a5c..0ceb4af89c 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -251,5 +251,6 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
 
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index 4a73d3f63a..eaf7fb6c82 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -255,6 +255,7 @@ $wb['cron_init_script_error_regex'] = 'Neispravan cron init script.';
 $wb['crontab_dir_error_regex'] = 'Neispravan crontab direktorij.';
 $wb['cron_wget_error_regex'] = 'Neispravna cron wget putanja.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
 
 
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index b29b74413d..58b95245c0 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 930a58cbf7..5f89667c40 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index cba103ff83..c3d435b1e4 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 37fb09ac5d..3f3c63940a 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 44eea44022..e9c32b525d 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 5e17c41c53..9c55a4f767 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index adf708552f..712d15aeff 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index a7ab9bc889..d6d950ffea 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index 6a4080a12b..1acfb0541d 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 5818cfacb3..baf79af675 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 392664b7e2..1e8ae4dac1 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 60a24ee48b..2e7a7df1b1 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -254,4 +254,5 @@ $wb['cron_init_script_error_regex'] = 'Invalid cron init script.';
 $wb['crontab_dir_error_regex'] = 'Invalid crontab directory.';
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
+$wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
 ?>
diff --git a/interface/web/admin/templates/server_config_dns_edit.htm b/interface/web/admin/templates/server_config_dns_edit.htm
index 19f020a0cd..b2b7966574 100644
--- a/interface/web/admin/templates/server_config_dns_edit.htm
+++ b/interface/web/admin/templates/server_config_dns_edit.htm
@@ -20,11 +20,13 @@
             <div class="form-group">
                 <label for="named_conf_local_path" class="col-sm-3 control-label">{tmpl_var name='named_conf_local_path_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="named_conf_local_path" id="named_conf_local_path" value="{tmpl_var name='named_conf_local_path'}" class="form-control" /></div></div>
-        
+			<div class="form-group">
+				<label for="disable_bind_log" class="col-sm-3 control-label">{tmpl_var name='disable_bind_log_txt'}</label>
+				<div class="col-sm-9">{tmpl_var name='disable_bind_log'}</div></div>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
             
         <div class="clear"><div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/server_config_edit.php">{tmpl_var name='btn_save_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="admin/server_config_list.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
\ No newline at end of file
+        </div></div>
diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php
index bb65eef45b..c538cb9570 100644
--- a/server/plugins-available/bind_plugin.inc.php
+++ b/server/plugins-available/bind_plugin.inc.php
@@ -133,7 +133,11 @@ class bind_plugin {
 			if($return_status === 0) {
 				$app->log("Writing BIND domain file: ".$filename, LOGLEVEL_DEBUG);
 			} else {
-				$app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), LOGLEVEL_WARN);
+				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');
 			}
 			unset($tpl);
-- 
GitLab