From 41d7d170bc4673e9a4e89a49c191b414e38ef0d7 Mon Sep 17 00:00:00 2001
From: Sergio Cambra <sergio@programatica.es>
Date: Mon, 7 Jul 2014 17:00:03 +0200
Subject: [PATCH] default servers on system config for admin use

---
 .../web/admin/form/system_config.tform.php    | 69 +++++++++++++++++++
 interface/web/admin/lib/lang/en.lng           |  4 +-
 .../web/admin/lib/lang/en_system_config.lng   |  5 ++
 interface/web/admin/lib/lang/es.lng           |  2 +
 .../web/admin/lib/lang/es_system_config.lng   |  5 ++
 interface/web/admin/system_config_edit.php    |  3 +
 .../templates/system_config_mail_edit.htm     |  6 ++
 .../templates/system_config_sites_edit.htm    | 12 ++++
 interface/web/dns/dns_import.php              |  3 +-
 interface/web/dns/dns_slave_edit.php          |  3 +
 interface/web/dns/dns_soa_edit.php            |  3 +
 interface/web/dns/dns_wizard.php              |  3 +-
 interface/web/mail/mail_domain_edit.php       |  3 +
 interface/web/sites/database_edit.php         |  3 +
 interface/web/sites/web_vhost_domain_edit.php |  3 +
 15 files changed, 124 insertions(+), 3 deletions(-)

diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 2e08130aa7..86ed19f1a2 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -172,6 +172,28 @@ $form["tabs"]['sites'] = array (
 			'default' => 'n',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'default_webserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_webserver'
+		),
+		'default_dbserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dbserver'
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
@@ -321,6 +343,53 @@ $form["tabs"]['mail'] = array (
 			'default' => '',
 			'value'  => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS')
 		),
+		'default_mailserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_mailserver'
+		),
+		//#################################
+		// ENDE Datatable fields
+		//#################################
+	)
+);
+
+$form["tabs"]['dns'] = array (
+	'title'  => "DNS",
+	'width'  => 70,
+	'template'  => "templates/system_config_dns_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'default_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dnsserver'
+		),
+		'default_slave_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_slave_dnsserver'
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
diff --git a/interface/web/admin/lib/lang/en.lng b/interface/web/admin/lib/lang/en.lng
index d9cbc7f839..0d075c1165 100644
--- a/interface/web/admin/lib/lang/en.lng
+++ b/interface/web/admin/lib/lang/en.lng
@@ -41,6 +41,8 @@ $wb['Firewall'] = 'Firewall';
 
 $wb['Interface'] = 'Interface';
 $wb['Interface Config'] = 'Main Config';
+    $wb['Sites'] = 'Sites';
+    $wb['DNS'] = 'DNS';
     $wb['Domains'] = 'Domains';
     $wb['Misc'] = 'Misc';
 
@@ -59,4 +61,4 @@ $wb['Import'] = 'Import';
 $wb['Remote Actions'] = 'Remote Actions';
 $wb['Do OS-Update'] = 'Do OS-Update';
 $wb['Do ISPConfig-Update'] = 'Do ISPConfig-Update';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 51131ef3d6..3fa210f07d 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -73,4 +73,9 @@ $wb['session_allow_endless_txt'] = 'Enable "stay logged in"';
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb["default_mailserver_txt"] = 'Default Mailserver';
+$wb["default_webserver_txt"] = 'Default Webserver';
+$wb["default_dnsserver_txt"] = 'Default DNS Server';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
+$wb["default_dbserver_txt"] = 'Default Database Server';
 ?>
diff --git a/interface/web/admin/lib/lang/es.lng b/interface/web/admin/lib/lang/es.lng
index 8e5b0843f1..cd26b06c2d 100644
--- a/interface/web/admin/lib/lang/es.lng
+++ b/interface/web/admin/lib/lang/es.lng
@@ -47,4 +47,6 @@ $wb['Directive Snippets'] = 'Fragmentos de Directivas';
 $wb['Interface'] = 'Interfaz';
 $wb['Domains'] = 'Dominios';
 $wb['Misc'] = 'Misc';
+$wb['Sites'] = 'Sitios';
+$wb['DNS'] = 'DNS';
 ?>
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index ec1cb69051..503d844b7f 100644
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -70,4 +70,9 @@ $wb['min_password_length_txt'] = 'Longitud de contraseña mínima';
 $wb['min_password_strength_txt'] = 'Fortaleza de contraseña mínima';
 $wb['Sites'] = 'Sitios';
 $wb['System Config'] = 'Configuración de sistema';
+$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
+$wb['default_webserver_txt'] = 'Servidor web por defecto';
+$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
 ?>
diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php
index 3a2ac8e765..a793a83eec 100644
--- a/interface/web/admin/system_config_edit.php
+++ b/interface/web/admin/system_config_edit.php
@@ -64,6 +64,9 @@ class page_action extends tform_actions {
 			$server_id = $this->id;
 
 			$this->dataRecord = $app->getconf->get_global_config($section);
+			if (is_null($this->dataRecord)) {
+				$this->dataRecord = array();
+			}
 			if ($section == 'domains'){
 				if (isset($this->dataRecord['use_domain_module'])){
 					$_SESSION['use_domain_module_old_value'] = $this->dataRecord['use_domain_module'];
diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm
index 98966fd2b9..b231495b49 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -85,6 +85,12 @@
                     {tmpl_var name='smtp_crypt'}
                 </select>
             </div>
+            <div class="ctrlHolder">
+                <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
+                <select name="default_mailserver" id="default_mailserver" class="selectInput">
+                    {tmpl_var name='default_mailserver'}
+                </select>
+            </div>
         </fieldset>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm
index f98493ee79..7811b17550 100644
--- a/interface/web/admin/templates/system_config_sites_edit.htm
+++ b/interface/web/admin/templates/system_config_sites_edit.htm
@@ -63,6 +63,18 @@
                     {tmpl_var name='reseller_can_use_options'}
                 </div>
             </div>
+            <div class="ctrlHolder">
+                <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
+                <select name="default_webserver" id="default_webserver" class="selectInput">
+                    {tmpl_var name='default_webserver'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
+                <select name="default_dbserver" id="default_dbserver" class="selectInput">
+                    {tmpl_var name='default_dbserver'}
+                </select>
+            </div>
         </fieldset>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php
index c78e41ad22..845dfd0345 100644
--- a/interface/web/dns/dns_import.php
+++ b/interface/web/dns/dns_import.php
@@ -56,7 +56,8 @@ if (isset($_POST['server_id'])) {
 	$server_id = $app->functions->intval($_POST['server_id_value']);
 	$post_server_id = true;
 } else {
-	$server_id = 1;
+	$settings = $app->getconf->get_global_config('dns');
+	$server_id = $app->functions->intval($settings['default_dnsserver']);
 	$post_server_id = false;
 }
 
diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
index dfca92e083..c647a1771b 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -61,6 +61,9 @@ class page_action extends tform_actions {
 			if(!$app->tform->checkResellerLimit('limit_dns_slave_zone')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_dns_slave_zone_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('dns');
+			$app->tform->formDef['tabs']['dns_slave']['fields']['server_id']['default'] = intval($settings['default_slave_dnsserver']);
 		}
 
 		parent::onShowNew();
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index 17c704ed12..0397ed08d2 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -71,6 +71,9 @@ class page_action extends tform_actions {
 			if(!$app->tform->checkResellerLimit('limit_dns_zone')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_dns_zone_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('dns');
+			$app->tform->formDef['tabs']['dns_soa']['fields']['server_id']['default'] = intval($settings['default_dnsserver']);
 		}
 
 		parent::onShowNew();
diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
index 93996ed39e..6ed3fcce1e 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -53,7 +53,8 @@ if (isset($_POST['server_id'])) {
 	$server_id = $app->functions->intval($_POST['server_id_value']);
 	$post_server_id = true;
 } else {
-	$server_id = 1;
+	$settings = $app->getconf->get_global_config('dns');
+	$server_id = $app->functions->intval($settings['default_dnsserver']);
 	$post_server_id = false;
 }
 
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php
index 8220c2ce86..262ee16e5d 100644
--- a/interface/web/mail/mail_domain_edit.php
+++ b/interface/web/mail/mail_domain_edit.php
@@ -61,6 +61,9 @@ class page_action extends tform_actions {
 			if(!$app->tform->checkResellerLimit('limit_maildomain')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_maildomain_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('mail');
+			$app->tform->formDef['tabs']['domain']['fields']['server_id']['default'] = intval($settings['default_mailserver']);
 		}
 
 		parent::onShowNew();
diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php
index 58cb0a623c..79183c4612 100644
--- a/interface/web/sites/database_edit.php
+++ b/interface/web/sites/database_edit.php
@@ -61,6 +61,9 @@ class page_action extends tform_actions {
 			if(!$app->tform->checkResellerLimit('limit_database')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_database_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('sites');
+			$app->tform->formDef['tabs']['database']['fields']['server_id']['default'] = intval($settings['default_dbserver']);
 		}
 
 		parent::onShowNew();
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index de731bd644..bd495ef413 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -115,6 +115,9 @@ class page_action extends tform_actions {
 			$web_servers = explode(',', $client['web_servers']);
 			$app->tpl->setVar("server_id_value", $web_servers[0]);
 			unset($web_servers);
+		} else {
+			$settings = $app->getconf->get_global_config('sites');
+			$app->tform->formDef['tabs']['domain']['fields']['server_id']['default'] = intval($settings['default_webserver']);
 		}
 		$app->tform->formDef['tabs']['domain']['readonly'] = false;
 
-- 
GitLab