Skip to content

Commit 015dffd

Browse files
author
Marius Cramer
committed
Merge remote-tracking branch 'sebj/master' and tidied up merged code
Conflicts: interface/lib/classes/custom_datasource.inc.php interface/lib/classes/validate_client.inc.php interface/web/client/client_edit.php interface/web/dns/dns_soa_edit.php interface/web/dns/dns_wizard.php interface/web/mail/mail_domain_edit.php interface/web/sites/database_edit.php interface/web/sites/web_domain_edit.php
2 parents b7ce7d4 + f193087 commit 015dffd

40 files changed

+1218
-198
lines changed

install/sql/ispconfig3.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ CREATE TABLE `client` (
169169
`bank_account_swift` varchar(255) DEFAULT NULL,
170170
`paypal_email` varchar(255) DEFAULT NULL,
171171
`default_mailserver` int(11) unsigned NOT NULL DEFAULT '1',
172+
`mail_servers` blob NOT NULL DEFAULT '',
172173
`limit_maildomain` int(11) NOT NULL DEFAULT '-1',
173174
`limit_mailbox` int(11) NOT NULL DEFAULT '-1',
174175
`limit_mailalias` int(11) NOT NULL DEFAULT '-1',
@@ -183,6 +184,7 @@ CREATE TABLE `client` (
183184
`limit_spamfilter_user` int(11) NOT NULL DEFAULT '0',
184185
`limit_spamfilter_policy` int(11) NOT NULL DEFAULT '0',
185186
`default_webserver` int(11) unsigned NOT NULL DEFAULT '1',
187+
`web_servers` blob NOT NULL DEFAULT '',
186188
`limit_web_ip` text,
187189
`limit_web_domain` int(11) NOT NULL DEFAULT '-1',
188190
`limit_web_quota` int(11) NOT NULL DEFAULT '-1',
@@ -204,11 +206,13 @@ CREATE TABLE `client` (
204206
`limit_webdav_user` int(11) NOT NULL DEFAULT '0',
205207
`limit_aps` int(11) NOT NULL DEFAULT '-1',
206208
`default_dnsserver` int(11) unsigned NOT NULL DEFAULT '1',
209+
`db_servers` blob NOT NULL DEFAULT '',
207210
`limit_dns_zone` int(11) NOT NULL DEFAULT '-1',
208211
`default_slave_dnsserver` int(11) unsigned NOT NULL DEFAULT '1',
209212
`limit_dns_slave_zone` int(11) NOT NULL DEFAULT '-1',
210213
`limit_dns_record` int(11) NOT NULL DEFAULT '-1',
211214
`default_dbserver` int(11) NOT NULL DEFAULT '1',
215+
`dns_servers` blob NOT NULL DEFAULT '',
212216
`limit_database` int(11) NOT NULL DEFAULT '-1',
213217
`limit_cron` int(11) NOT NULL DEFAULT '0',
214218
`limit_cron_type` enum('url','chrooted','full') NOT NULL DEFAULT 'url',

interface/lib/classes/custom_datasource.inc.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,18 @@ function client_servers($field, $record) {
139139
case 'default_vserverserver':
140140
$field = 'vserver_server';
141141
break;
142+
case 'mail_servers':
143+
$field = 'mail_server';
144+
break;
145+
case 'web_servers':
146+
$field = 'web_server';
147+
break;
148+
case 'dns_servers':
149+
$field = 'dns_server';
150+
break;
151+
case 'db_servers':
152+
$field = 'db_server';
153+
break;
142154
default:
143155
$field = 'web_server';
144156
break;

interface/lib/classes/validate_client.inc.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,46 @@ function username_collision($field_name, $field_value, $validator) {
9696

9797
}
9898

99+
function check_used_servers($field_name, $field_value, $validator)
100+
{
101+
global $app;
102+
103+
if (is_array($field_value))
104+
{
105+
$client_id = intval($_POST['id']);
106+
$used_servers = null;
107+
108+
switch ($field_name)
109+
{
110+
case 'web_servers':
111+
$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM web_domain INNER JOIN sys_user ON web_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
112+
break;
113+
114+
case 'dns_servers':
115+
$used_servers = $app->db->queryAllRecords('SELECT id FROM dns_rr INNER JOIN sys_user ON dns_rr.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
116+
break;
117+
118+
case 'db_servers':
119+
$used_servers = $app->db->queryAllRecords('SELECT database_id FROM web_database INNER JOIN sys_user ON web_database.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
120+
break;
121+
122+
case 'mail_servers':
123+
$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM mail_domain INNER JOIN sys_user ON mail_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
124+
break;
125+
}
126+
127+
if ($used_servers === null || count($used_servers))
128+
{
129+
$errmsg = $validator['errmsg'];
130+
if(isset($app->tform->wordbook[$errmsg])) {
131+
return $app->tform->wordbook[$errmsg]."<br>\r\n";
132+
} else {
133+
return $errmsg."<br>\r\n";
134+
}
135+
}
136+
}
137+
}
138+
99139

100140

101141

interface/web/client/client_edit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ function onAfterInsert() {
225225
$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
226226
$default_dbserver = $app->functions->intval($tmp['server_id']);
227227

228-
$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id;
228+
$sql = "UPDATE client SET mail_servers = $default_mailserver, web_servers = $default_webserver, dns_servers = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, db_servers = $default_dbserver WHERE client_id = ".$this->id;
229229
$app->db->query($sql);
230230

231231
if(isset($this->dataRecord['template_master'])) {

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

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,25 @@
511511
'value' => '',
512512
'name' => 'default_mailserver'
513513
),
514+
'mail_servers' => array (
515+
'datatype' => 'VARCHAR',
516+
'formtype' => 'MULTIPLE',
517+
'separator' => ',',
518+
'default' => '1',
519+
'datasource' => array ( 'type' => 'CUSTOM',
520+
'class'=> 'custom_datasource',
521+
'function'=> 'client_servers'
522+
),
523+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
524+
'errmsg'=> 'no_mail_server_error'),
525+
1 => array ( 'type' => 'CUSTOM',
526+
'class' => 'validate_client',
527+
'function' => 'check_used_servers',
528+
'errmsg'=> 'mail_servers_used'),
529+
),
530+
'value' => '',
531+
'name' => 'mail_servers'
532+
),
514533
'limit_maildomain' => array (
515534
'datatype' => 'INTEGER',
516535
'formtype' => 'TEXT',
@@ -718,6 +737,25 @@
718737
'value' => '',
719738
'name' => 'default_webserver'
720739
),
740+
'web_servers' => array (
741+
'datatype' => 'VARCHAR',
742+
'formtype' => 'MULTIPLE',
743+
'separator' => ',',
744+
'default' => '1',
745+
'datasource' => array ( 'type' => 'CUSTOM',
746+
'class'=> 'custom_datasource',
747+
'function'=> 'client_servers'
748+
),
749+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
750+
'errmsg'=> 'no_web_server_error'),
751+
1 => array ( 'type' => 'CUSTOM',
752+
'class' => 'validate_client',
753+
'function' => 'check_used_servers',
754+
'errmsg'=> 'web_servers_used'),
755+
),
756+
'value' => '',
757+
'name' => 'web_servers'
758+
),
721759
'limit_web_domain' => array (
722760
'datatype' => 'INTEGER',
723761
'formtype' => 'TEXT',
@@ -903,6 +941,25 @@
903941
'value' => '',
904942
'name' => 'default_dnsserver'
905943
),
944+
'dns_servers' => array (
945+
'datatype' => 'VARCHAR',
946+
'formtype' => 'MULTIPLE',
947+
'separator' => ',',
948+
'default' => '1',
949+
'datasource' => array ( 'type' => 'CUSTOM',
950+
'class'=> 'custom_datasource',
951+
'function'=> 'client_servers'
952+
),
953+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
954+
'errmsg'=> 'no_dns_server_error'),
955+
1 => array ( 'type' => 'CUSTOM',
956+
'class' => 'validate_client',
957+
'function' => 'check_used_servers',
958+
'errmsg'=> 'dns_servers_used'),
959+
),
960+
'value' => '',
961+
'name' => 'dns_servers'
962+
),
906963
'limit_dns_zone' => array (
907964
'datatype' => 'INTEGER',
908965
'formtype' => 'TEXT',
@@ -981,6 +1038,25 @@
9811038
'value' => '',
9821039
'name' => 'default_dbserver'
9831040
),
1041+
'db_servers' => array (
1042+
'datatype' => 'VARCHAR',
1043+
'formtype' => 'MULTIPLE',
1044+
'separator' => ',',
1045+
'default' => '1',
1046+
'datasource' => array ( 'type' => 'CUSTOM',
1047+
'class'=> 'custom_datasource',
1048+
'function'=> 'client_servers'
1049+
),
1050+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
1051+
'errmsg'=> 'no_db_server_error'),
1052+
1 => array ( 'type' => 'CUSTOM',
1053+
'class' => 'validate_client',
1054+
'function' => 'check_used_servers',
1055+
'errmsg'=> 'db_servers_used'),
1056+
),
1057+
'value' => '',
1058+
'name' => 'db_servers'
1059+
),
9841060
'limit_database' => array (
9851061
'datatype' => 'INTEGER',
9861062
'formtype' => 'TEXT',

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

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,24 @@
508508
),
509509
'value' => ''
510510
),
511+
'mail_servers' => array (
512+
'datatype' => 'INTEGER',
513+
'formtype' => 'MULTIPLE',
514+
'default' => '1',
515+
'datasource' => array ( 'type' => 'SQL',
516+
'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND {AUTHSQL} ORDER BY server_name',
517+
'keyfield'=> 'server_id',
518+
'valuefield'=> 'server_name'
519+
),
520+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
521+
'errmsg'=> 'no_mail_server_error'),
522+
1 => array ( 'type' => 'CUSTOM',
523+
'class' => 'validate_client',
524+
'function' => 'check_used_servers',
525+
'errmsg'=> 'mail_servers_used'),
526+
),
527+
'value' => ''
528+
),
511529
'limit_maildomain' => array (
512530
'datatype' => 'INTEGER',
513531
'formtype' => 'TEXT',
@@ -715,6 +733,25 @@
715733
),
716734
'value' => ''
717735
),
736+
'web_servers' => array (
737+
'datatype' => 'VARCHAR',
738+
'formtype' => 'MULTIPLE',
739+
'separator' => ',',
740+
'default' => '1',
741+
'datasource' => array ( 'type' => 'SQL',
742+
'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
743+
'keyfield'=> 'server_id',
744+
'valuefield'=> 'server_name'
745+
),
746+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
747+
'errmsg'=> 'no_web_server_error'),
748+
1 => array ( 'type' => 'CUSTOM',
749+
'class' => 'validate_client',
750+
'function' => 'check_used_servers',
751+
'errmsg'=> 'web_servers_used'),
752+
),
753+
'value' => ''
754+
),
718755
'limit_web_domain' => array (
719756
'datatype' => 'INTEGER',
720757
'formtype' => 'TEXT',
@@ -898,6 +935,24 @@
898935
),
899936
'value' => ''
900937
),
938+
'dns_servers' => array (
939+
'datatype' => 'INTEGER',
940+
'formtype' => 'MULTIPLE',
941+
'default' => '1',
942+
'datasource' => array ( 'type' => 'SQL',
943+
'querystring' => 'SELECT server_id,server_name FROM server WHERE dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
944+
'keyfield'=> 'server_id',
945+
'valuefield'=> 'server_name'
946+
),
947+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
948+
'errmsg'=> 'no_dns_server_error'),
949+
1 => array ( 'type' => 'CUSTOM',
950+
'class' => 'validate_client',
951+
'function' => 'check_used_servers',
952+
'errmsg'=> 'dns_servers_used'),
953+
),
954+
'value' => ''
955+
),
901956
'limit_dns_zone' => array (
902957
'datatype' => 'INTEGER',
903958
'formtype' => 'TEXT',
@@ -979,6 +1034,24 @@
9791034
),
9801035
'value' => ''
9811036
),
1037+
'db_servers' => array (
1038+
'datatype' => 'INTEGER',
1039+
'formtype' => 'MULTIPLE',
1040+
'default' => '1',
1041+
'datasource' => array ( 'type' => 'SQL',
1042+
'querystring' => 'SELECT server_id,server_name FROM server WHERE db_server = 1 AND {AUTHSQL} ORDER BY server_name',
1043+
'keyfield'=> 'server_id',
1044+
'valuefield'=> 'server_name'
1045+
),
1046+
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
1047+
'errmsg'=> 'no_db_server_error'),
1048+
1 => array ( 'type' => 'CUSTOM',
1049+
'class' => 'validate_client',
1050+
'function' => 'check_used_servers',
1051+
'errmsg'=> 'db_servers_used'),
1052+
),
1053+
'value' => ''
1054+
),
9821055
'limit_database' => array (
9831056
'datatype' => 'INTEGER',
9841057
'formtype' => 'TEXT',

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,20 @@ $wb['canceled_txt'] = 'Canceled (disables client login)';
152152
$wb['gender_txt'] = 'Title';
153153
$wb['gender_m_txt'] = 'Mr.';
154154
$wb['gender_f_txt'] = 'Ms.';
155+
$wb["web_servers_txt"] = 'Webservers';
156+
$wb["web_servers_placeholder"] = 'Select Webservers';
157+
$wb['no_web_server_error'] = 'At least one webserver must be selected.';
158+
$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before to remove it.';
159+
$wb["dns_servers_txt"] = 'DNS Server';
160+
$wb["dns_servers_placeholder"] = 'Select DNS Servers';
161+
$wb['no_dns_server_error'] = 'At least one DNS server must be selected.';
162+
$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before to remove it.';
163+
$wb["db_servers_txt"] = 'Database Server';
164+
$wb["db_servers_placeholder"] = 'Select Database Servers';
165+
$wb['no_db_server_error'] = 'At least one Database server must be selected.';
166+
$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before to remove it.';
167+
$wb["mail_servers_txt"] = 'Mailservers';
168+
$wb["mail_servers_placeholder"] = 'Select Mailservers';
169+
$wb['no_mail_server_error'] = 'At least one Mailserver must be selected.';
170+
$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before to remove it.';
155171
?>

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,20 @@ $wb['canceled_txt'] = 'Canceled';
150150
$wb['gender_m_txt'] = 'Mr.';
151151
$wb['gender_f_txt'] = 'Ms.';
152152
$wb['gender_txt'] = 'Title';
153+
$wb["web_servers_txt"] = 'Webservers';
154+
$wb["web_servers_placeholder"] = 'Select Webservers';
155+
$wb['no_web_server_error'] = 'At least one webserver must be selected.';
156+
$wb['web_servers_used'] = 'The server you are trying to remove from this client is used as a webserver. Be sure that this server is not used by this client before to remove it.';
157+
$wb["dns_servers_txt"] = 'DNS Server';
158+
$wb["dns_servers_placeholder"] = 'Select DNS Servers';
159+
$wb['no_dns_server_error'] = 'At least one DNS server must be selected.';
160+
$wb['dns_servers_used'] = 'The server you are trying to remove from this client is used as a DNS server. Be sure that this server is not used by this client before to remove it.';
161+
$wb["db_servers_txt"] = 'Database Server';
162+
$wb["db_servers_placeholder"] = 'Select Database Servers';
163+
$wb['no_db_server_error'] = 'At least one Database server must be selected.';
164+
$wb['db_servers_used'] = 'The server you are trying to remove from this client is used as a Database server. Be sure that this server is not used by this client before to remove it.';
165+
$wb["mail_servers_txt"] = 'Mailservers';
166+
$wb["mail_servers_placeholder"] = 'Select Mailservers';
167+
$wb['no_mail_server_error'] = 'At least one Mailserver must be selected.';
168+
$wb['mail_servers_used'] = 'The server you are trying to remove from this client is used as a Mailserver. Be sure that this server is not used by this client before to remove it.';
153169
?>

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,20 @@ $wb['canceled_txt'] = 'Canceled (disables client login)';
149149
$wb['gender_txt'] = 'Title';
150150
$wb['gender_m_txt'] = 'Mr.';
151151
$wb['gender_f_txt'] = 'Ms.';
152+
$wb["web_servers_txt"] = 'Serveurs Web';
153+
$wb["web_servers_placeholder"] = 'Choisissez des serveurs Web';
154+
$wb['no_web_server_error'] = 'Au moins un serveur web doit être sélectionné.';
155+
$wb['web_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur web. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
156+
$wb["dns_servers_txt"] = 'Serveurs DNS';
157+
$wb["dns_servers_placeholder"] = 'Choisissez des serveurs DNS';
158+
$wb['no_dns_server_error'] = 'Au moins un serveur DNS doit être sélectionné.';
159+
$wb['dns_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur DNS. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
160+
$wb["db_servers_txt"] = 'Serveur de bases de données';
161+
$wb["db_servers_placeholder"] = 'Choisissez des serveurs de bases de données';
162+
$wb['no_db_server_error'] = 'Au moins un serveur de bases de données doit être sélectionné.';
163+
$wb['db_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur de bases de données. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
164+
$wb["mail_servers_txt"] = 'Serveurs mail';
165+
$wb["mail_servers_placeholder"] = 'Choisissez des serveurs mail';
166+
$wb['no_mail_server_error'] = 'Au moins un serveur mail doit être sélectionné.';
167+
$wb['mail_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur mail. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
152168
?>

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,20 @@ $wb['canceled_txt'] = 'Canceled';
148148
$wb['gender_m_txt'] = 'Mr.';
149149
$wb['gender_f_txt'] = 'Ms.';
150150
$wb['gender_txt'] = 'Title';
151+
$wb["web_servers_txt"] = 'Serveurs Web';
152+
$wb["web_servers_placeholder"] = 'Choisissez des serveurs Web';
153+
$wb['no_web_server_error'] = 'Au moins un serveur web doit être sélectionné.';
154+
$wb['web_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur web. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
155+
$wb["dns_servers_txt"] = 'Serveurs DNS';
156+
$wb["dns_servers_placeholder"] = 'Choisissez des serveurs DNS';
157+
$wb['no_dns_server_error'] = 'Au moins un serveur DNS doit être sélectionné.';
158+
$wb['dns_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur DNS. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
159+
$wb["db_servers_txt"] = 'Serveur de bases de données';
160+
$wb["db_servers_placeholder"] = 'Choisissez des serveurs de bases de données';
161+
$wb['no_db_server_error'] = 'Au moins un serveur de bases de données doit être sélectionné.';
162+
$wb['db_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur de bases de données. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
163+
$wb["mail_servers_txt"] = 'Serveurs mail';
164+
$wb["mail_servers_placeholder"] = 'Choisissez des serveurs mail';
165+
$wb['no_mail_server_error'] = 'Au moins un serveur mail doit être sélectionné.';
166+
$wb['mail_servers_used'] = 'Le serveur que vous tentez de retirer à ce client est utilisé comme serveur mail. Veillez à ce que le serveur ne soit plus utilisé par ce client avant de le retirer.';
151167
?>

0 commit comments

Comments
 (0)