Skip to content

Commit a1db685

Browse files
committed
default servers on client templates
1 parent d2f32ec commit a1db685

File tree

7 files changed

+122
-3
lines changed

7 files changed

+122
-3
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ALTER TABLE `client_template` ADD `default_mailserver` INT(11) NOT NULL DEFAULT 1;
2+
ALTER TABLE `client_template` ADD `default_webserver` INT(11) NOT NULL DEFAULT 1;
3+
ALTER TABLE `client_template` ADD `default_dnsserver` INT(11) NOT NULL DEFAULT 1;
4+
ALTER TABLE `client_template` ADD `default_slave_dnsserver` INT(11) NOT NULL DEFAULT 1;
5+
ALTER TABLE `client_template` ADD `default_dbserver` INT(11) NOT NULL DEFAULT 1;

interface/lib/classes/client_templates.inc.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function apply_client_templates($clientId) {
146146
if (is_array($addLimits)){
147147
foreach($addLimits as $k => $v){
148148
/* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */
149-
if (strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){
149+
if (strpos($k, 'limit') !== false or strpos($k, 'default') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){
150150
$app->log('Template processing key ' . $k . ' for client ' . $clientId, LOGLEVEL_DEBUG);
151151

152152
/* process the numerical limits */
@@ -160,6 +160,15 @@ function apply_client_templates($clientId) {
160160
if ($limits[$k] < 1) $limits[$k] = 1;
161161
break;
162162

163+
case 'default_mailserver':
164+
case 'default_webserver':
165+
case 'default_dnsserver':
166+
case 'default_slave_dnsserver':
167+
case 'default_dbserver':
168+
/* additional templates don't override default server from main template */
169+
if ($limits[$k] == 0) $limits[$k] = $v;
170+
break;
171+
163172
default:
164173
if ($limits[$k] > -1){
165174
if ($v == -1){
@@ -225,7 +234,10 @@ function apply_client_templates($clientId) {
225234
$update = '';
226235
if(!$is_reseller) unset($limits['limit_client']); // Only Resellers may have limit_client set in template to ensure that we do not convert a client to reseller accidently.
227236
foreach($limits as $k => $v){
228-
if ((strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec') && !is_array($v)){
237+
if (strpos($k, 'default') !== false and $v == 0) {
238+
continue; // template doesn't define default server, client's default musn't be changed
239+
}
240+
if ((strpos($k, 'limit') !== false or strpos($k, 'default') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec') && !is_array($v)){
229241
if ($update != '') $update .= ', ';
230242
$update .= '`' . $k . "`='" . $v . "'";
231243
}

interface/web/client/client_template_edit.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,17 @@ function onAfterUpdate() {
8888
global $app;
8989

9090
$app->uses('client_templates');
91+
if (isset($this->dataRecord["template_type"])) {
92+
$template_type = $this->dataRecord["template_type"];
93+
} else {
94+
$tmp = $app->tform->getDataRecord($this->id);
95+
$template_type = $tmp['template_type'];
96+
}
97+
9198
/*
9299
* the template has changed. apply the new data to all clients
93100
*/
94-
if ($this->dataRecord["template_type"] == 'm'){
101+
if ($template_type == 'm'){
95102
$sql = "SELECT client_id FROM client WHERE template_master = " . $this->id;
96103
} else {
97104
$sql = "SELECT client_id FROM client WHERE template_additional LIKE '%/" . $this->id . "/%' OR template_additional LIKE '" . $this->id . "/%' OR template_additional LIKE '%/" . $this->id . "' UNION SELECT client_id FROM client_template_assigned WHERE client_template_id = " . $this->id;

interface/web/client/form/client_template.tform.php

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,17 @@
115115
'rows' => '',
116116
'cols' => ''
117117
),
118+
'default_mailserver' => array (
119+
'datatype' => 'INTEGER',
120+
'formtype' => 'SELECT',
121+
'default' => '0',
122+
'datasource' => array ( 'type' => 'CUSTOM',
123+
'class'=> 'custom_datasource',
124+
'function'=> 'client_servers'
125+
),
126+
'value' => array(''),
127+
'name' => 'default_mailserver'
128+
),
118129
'limit_maildomain' => array (
119130
'datatype' => 'INTEGER',
120131
'formtype' => 'TEXT',
@@ -311,6 +322,17 @@
311322
'rows' => '',
312323
'cols' => ''
313324
),
325+
'default_webserver' => array (
326+
'datatype' => 'INTEGER',
327+
'formtype' => 'SELECT',
328+
'default' => '0',
329+
'datasource' => array ( 'type' => 'CUSTOM',
330+
'class'=> 'custom_datasource',
331+
'function'=> 'client_servers'
332+
),
333+
'value' => array(''),
334+
'name' => 'default_webserver'
335+
),
314336
'limit_web_domain' => array (
315337
'datatype' => 'INTEGER',
316338
'formtype' => 'TEXT',
@@ -491,6 +513,17 @@
491513
'default' => 'y',
492514
'value' => array(0 => 'n', 1 => 'y')
493515
),
516+
'default_dnsserver' => array (
517+
'datatype' => 'INTEGER',
518+
'formtype' => 'SELECT',
519+
'default' => '0',
520+
'datasource' => array ( 'type' => 'CUSTOM',
521+
'class'=> 'custom_datasource',
522+
'function'=> 'client_servers'
523+
),
524+
'value' => array(''),
525+
'name' => 'default_dnsserver'
526+
),
494527
'limit_dns_zone' => array (
495528
'datatype' => 'INTEGER',
496529
'formtype' => 'TEXT',
@@ -505,6 +538,17 @@
505538
'rows' => '',
506539
'cols' => ''
507540
),
541+
'default_slave_dnsserver' => array (
542+
'datatype' => 'INTEGER',
543+
'formtype' => 'SELECT',
544+
'default' => '0',
545+
'datasource' => array ( 'type' => 'CUSTOM',
546+
'class'=> 'custom_datasource',
547+
'function'=> 'client_servers'
548+
),
549+
'value' => array(''),
550+
'name' => 'default_slave_dnsserver'
551+
),
508552
'limit_dns_slave_zone' => array (
509553
'datatype' => 'INTEGER',
510554
'formtype' => 'TEXT',
@@ -549,6 +593,17 @@
549593
'cols' => ''
550594
),
551595
*/
596+
'default_dbserver' => array (
597+
'datatype' => 'INTEGER',
598+
'formtype' => 'SELECT',
599+
'default' => '0',
600+
'datasource' => array ( 'type' => 'CUSTOM',
601+
'class'=> 'custom_datasource',
602+
'function'=> 'client_servers'
603+
),
604+
'value' => array(''),
605+
'name' => 'default_dbserver'
606+
),
552607
'limit_database' => array (
553608
'datatype' => 'INTEGER',
554609
'formtype' => 'TEXT',

interface/web/client/lib/lang/en_client_template.lng

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
$wb["template_type_txt"] = 'Template type';
33
$wb["template_name_txt"] = 'Template name';
44
$wb["limit_client_error_notint"] = 'Client Limit is not a number.';
5+
$wb["default_mailserver_txt"] = 'Default Mailserver';
56
$wb["limit_maildomain_txt"] = 'Max. number of email domains';
67
$wb["limit_mailbox_txt"] = 'Max. number of mailboxes';
78
$wb["limit_mailalias_txt"] = 'Max. number of email aliases';
@@ -23,11 +24,14 @@ $wb["limit_database_txt"] = 'limit_database';
2324
$wb["limit_cron_txt"] = 'Max. number of cron jobs';
2425
$wb["limit_cron_type_txt"] = 'Max. type of cron jobs (chrooted and full implies url)';
2526
$wb["limit_cron_frequency_txt"] = 'Min. delay between executions';
27+
$wb["default_webserver_txt"] = 'Default Webserver';
2628
$wb["limit_web_domain_txt"] = 'Max. number of web domains';
2729
$wb["limit_web_aliasdomain_txt"] = 'Max. number of web aliasdomains';
2830
$wb["limit_web_subdomain_txt"] = 'Max. number of web subdomains';
2931
$wb["limit_ftp_user_txt"] = 'Max. number of FTP users';
32+
$wb["default_dnsserver_txt"] = 'Default DNS Server';
3033
$wb["limit_dns_zone_txt"] = 'Max. number of DNS zones';
34+
$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
3135
$wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
3236
$wb["limit_dns_record_txt"] = 'Max. number DNS records';
3337
$wb["limit_shell_user_txt"] = 'Max. number of Shell users';
@@ -57,6 +61,7 @@ $wb["limit_webdav_user_error_notint"] = 'The webdav user limit must be a number.
5761
$wb["limit_dns_zone_error_notint"] = 'The dns zone limit must be a number.';
5862
$wb["limit_dns_slave_zone_error_notint"] = 'The dns slave zone limit must be a number.';
5963
$wb["limit_dns_record_error_notint"] = 'The dns record limit must be a number.';
64+
$wb["default_dbserver_txt"] = 'Default Database Server';
6065
$wb["limit_database_txt"] = 'Max. number of Databases';
6166
$wb["limit_database_error_notint"] = 'The database limit must be a number.';
6267
$wb["limit_cron_error_notint"] = 'The cron limit must be a number.';

interface/web/client/lib/lang/es_client_template.lng

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22
$wb['limit_client_error_notint'] = 'El límite de subclientes debe ser un número.';
3+
$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
34
$wb['limit_maildomain_txt'] = 'Número máximo de dominios de correo';
45
$wb['limit_mailbox_txt'] = 'Número máximo de buzones de correo';
56
$wb['limit_mailalias_txt'] = 'Número máximo de alias de correo';
@@ -17,11 +18,14 @@ $wb['limit_domain_txt'] = 'Número máximo de dominios ';
1718
$wb['limit_subdomain_txt'] = 'Número máximo de subdominios ';
1819
$wb['limit_webquota_txt'] = 'Cuota de web';
1920
$wb['limit_database_txt'] = 'Número máximo de bases de datos';
21+
$wb['default_webserver_txt'] = 'Servidor web por defecto';
2022
$wb['limit_web_domain_txt'] = 'Número máximo de sitios web';
2123
$wb['limit_web_aliasdomain_txt'] = 'Número máximo de alias de dominios';
2224
$wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios';
2325
$wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
26+
$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
2427
$wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
28+
$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
2529
$wb['limit_dns_slave_zone_txt'] = 'Número máximo de zonas DNS secundarias';
2630
$wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
2731
$wb['limit_shell_user_txt'] = 'Número máximo de usuarios de consola';
@@ -45,6 +49,7 @@ $wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe s
4549
$wb['limit_dns_zone_error_notint'] = 'El límite de registros DNS debe ser un número.';
4650
$wb['limit_dns_slave_zone_error_notint'] = 'El límite de zonas DNS secundarias debe ser un número.';
4751
$wb['limit_dns_record_error_notint'] = 'El límite de registros DNS debe ser un número.';
52+
$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
4853
$wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número.';
4954
$wb['error_template_name_empty'] = 'Por favor, introduzca un nombre de plantilla';
5055
$wb['limit_cron_txt'] = 'Número máximo de tareas cron';

interface/web/client/templates/client_template_edit_limits.htm

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ <h2><tmpl_var name="list_head_txt"></h2>
77
<fieldset class="inlineLabels"><legend>Limits</legend>
88
<div class="subsectiontoggle"><span class="showing"></span>{tmpl_var name='web_limits_txt'}<em class="showing"></em></div>
99
<div>
10+
<div class="ctrlHolder">
11+
<label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
12+
<select name="default_webserver" id="default_webserver" class="selectInput">
13+
{tmpl_var name='default_webserver'}
14+
</select>
15+
</div>
1016
<div class="ctrlHolder">
1117
<label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
1218
<input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
@@ -114,6 +120,12 @@ <h2><tmpl_var name="list_head_txt"></h2>
114120
</div>
115121
<div class="subsectiontoggle"><span></span>{tmpl_var name='email_limits_txt'}<em></em></div>
116122
<div style="display:none;">
123+
<div class="ctrlHolder">
124+
<label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
125+
<select name="default_mailserver" id="default_mailserver" class="selectInput">
126+
{tmpl_var name='default_mailserver'}
127+
</select>
128+
</div>
117129
<div class="ctrlHolder">
118130
<label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
119131
<input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
@@ -173,6 +185,12 @@ <h2><tmpl_var name="list_head_txt"></h2>
173185
</div>
174186
<div class="subsectiontoggle"><span></span>{tmpl_var name='database_limits_txt'}<em></em></div>
175187
<div style="display:none;">
188+
<div class="ctrlHolder">
189+
<label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
190+
<select name="default_dbserver" id="default_dbserver" class="selectInput">
191+
{tmpl_var name='default_dbserver'}
192+
</select>
193+
</div>
176194
<div class="ctrlHolder">
177195
<label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
178196
<input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
@@ -201,9 +219,21 @@ <h2><tmpl_var name="list_head_txt"></h2>
201219
</div>
202220
<div class="subsectiontoggle"><span></span>{tmpl_var name='dns_limits_txt'}<em></em></div>
203221
<div style="display:none;">
222+
<div class="ctrlHolder">
223+
<label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
224+
<select name="default_dnsserver" id="default_dnsserver" class="selectInput">
225+
{tmpl_var name='default_dnsserver'}
226+
</select>
227+
</div>
204228
<div class="ctrlHolder">
205229
<label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
206230
<input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
231+
</div>
232+
<div class="ctrlHolder">
233+
<label for="default_slave_dnsserver">{tmpl_var name='default_slave_dnsserver_txt'}</label>
234+
<select name="default_slave_dnsserver" id="default_slave_dnsserver" class="selectInput">
235+
{tmpl_var name='default_slave_dnsserver'}
236+
</select>
207237
</div>
208238
<div class="ctrlHolder">
209239
<label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>

0 commit comments

Comments
 (0)