Skip to content

Commit f193087

Browse files
committed
fixing editing dns, mail, db and web domain servers by client issue
1 parent 401cb2d commit f193087

File tree

4 files changed

+38
-26
lines changed

4 files changed

+38
-26
lines changed

interface/web/dns/dns_soa_edit.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,13 @@ function onSubmit() {
171171
}
172172

173173
// When the record is updated
174-
if(!($this->id > 0)) {
174+
if($this->id > 0) {
175+
// restore the server ID if the user is not admin and record is edited
176+
$tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_soa WHERE id = ".$app->functions->intval($this->id));
177+
$this->dataRecord["server_id"] = $tmp["server_id"];
178+
unset($tmp);
179+
// When the record is inserted
180+
} else {
175181
// Check if the user may add another maildomain.
176182
if($client["limit_dns_zone"] >= 0) {
177183
$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");

interface/web/mail/mail_domain_edit.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,16 +221,21 @@ function onSubmit() {
221221
// Get the limits of the client
222222
$client_group_id = $_SESSION["s"]["user"]["default_group"];
223223
$client = $app->db->queryOneRecord("SELECT limit_maildomain, mail_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
224+
// When the record is updated
225+
if($this->id > 0) {
226+
// restore the server ID if the user is not admin and record is edited
227+
$tmp = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain_id = ".$app->functions->intval($this->id));
228+
$this->dataRecord["server_id"] = $tmp["server_id"];
229+
unset($tmp);
230+
// When the record is inserted
231+
} else {
232+
$client['mail_servers_ids'] = explode(',', $client['mail_servers']);
224233

225-
$client['mail_servers_ids'] = explode(',', $client['mail_servers']);
226-
227-
// Check if chosen server is in authorized servers for this client
228-
if (!(is_array($client['mail_servers_ids']) && in_array($this->dataRecord["server_id"], $client['mail_servers_ids'])) && $_SESSION["s"]["user"]["typ"] != 'admin') {
229-
$app->error($app->tform->wordbook['error_not_allowed_server_id']);
230-
}
234+
// Check if chosen server is in authorized servers for this client
235+
if (!(is_array($client['mail_servers_ids']) && in_array($this->dataRecord["server_id"], $client['mail_servers_ids']))) {
236+
$app->error($app->tform->wordbook['error_not_allowed_server_id']);
237+
}
231238

232-
// When the record is updated
233-
if(!($this->id > 0)) {
234239
if($client["limit_maildomain"] >= 0) {
235240
$tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE sys_groupid = $client_group_id");
236241
if($tmp["number"] >= $client["limit_maildomain"]) {

interface/web/sites/database_edit.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,22 @@ function onSubmit() {
168168
$client_group_id = $_SESSION["s"]["user"]["default_group"];
169169
$client = $app->db->queryOneRecord("SELECT db_servers, limit_database FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
170170

171-
$client['db_servers_ids'] = explode(',', $client['db_servers']);
171+
// When the record is updated
172+
if($this->id > 0) {
173+
// restore the server ID if the user is not admin and record is edited
174+
$tmp = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE database_id = ".$app->functions->intval($this->id));
175+
$this->dataRecord["server_id"] = $tmp["server_id"];
176+
unset($tmp);
177+
// When the record is inserted
178+
} else {
179+
$client['db_servers_ids'] = explode(',', $client['db_servers']);
172180

173-
// Check if chosen server is in authorized servers for this client
174-
if (!(is_array($client['db_servers_ids']) && in_array($this->dataRecord["server_id"], $client['db_servers_ids'])) && $_SESSION["s"]["user"]["typ"] != 'admin') {
175-
$app->error($app->tform->wordbook['error_not_allowed_server_id']);
176-
}
181+
// Check if chosen server is in authorized servers for this client
182+
if (!(is_array($client['db_servers_ids']) && in_array($this->dataRecord["server_id"], $client['db_servers_ids'])) && $_SESSION["s"]["user"]["typ"] != 'admin') {
183+
$app->error($app->tform->wordbook['error_not_allowed_server_id']);
184+
}
177185

178-
// When the record is updated
179-
if(!($this->id > 0)) {// Check if the user may add another database
186+
// Check if the user may add another database
180187
if($client["limit_database"] >= 0) {
181188
$tmp = $app->db->queryOneRecord("SELECT count(database_id) as number FROM web_database WHERE sys_groupid = $client_group_id");
182189
if($tmp["number"] >= $client["limit_database"]) {

interface/web/sites/web_domain_edit.php

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -680,16 +680,11 @@ function onSubmit() {
680680
}
681681
}
682682

683-
// Check if chosen server is in authorized servers for this client
684-
$serverChosenOk = is_array($client['web_servers_ids']) && in_array($this->dataRecord['server_id'], $client['web_servers_ids']) || $_SESSION["s"]["user"]["typ"] == 'admin';
685-
686683
// When the record is updated
687684
if($this->id > 0) {
688685
// restore the server ID if the user is not admin and record is edited
689-
$tmp = $app->db->queryOneRecord("SELECT `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
690-
if (!$serverChosenOk) {
691-
$app->error($app->tform->wordbook['server_chosen_not_ok']);
692-
}
686+
$tmp = $app->db->queryOneRecord("SELECT server_id, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
687+
$this->dataRecord["server_id"] = $tmp["server_id"];
693688

694689
// set the settings to current if not provided (or cleared due to limits)
695690
if($this->dataRecord['cgi'] == '-') $this->dataRecord['cgi'] = $tmp['cgi'];
@@ -705,9 +700,8 @@ function onSubmit() {
705700
unset($tmp);
706701
// When the record is inserted
707702
} else {
708-
//* set the server ID to the default webserver of the client
709-
if (!$serverChosenOk) {
710-
// $this->dataRecord["server_id"] = $client["default_webserver"];
703+
//* display an error if chosen server is not allowed for this client
704+
if (!is_array($client['web_servers_ids']) || !in_array($this->dataRecord['server_id'], $client['web_servers_ids'])) {
711705
$app->error($app->tform->wordbook['server_chosen_not_ok']);
712706
}
713707

0 commit comments

Comments
 (0)