Skip to content

Commit 045bedd

Browse files
committed
Fixed: FS#474 - serial not updated for domain after changes
1 parent 3dfe1e6 commit 045bedd

File tree

10 files changed

+1321
-1331
lines changed

10 files changed

+1321
-1331
lines changed

interface/web/dns/dns_a_edit.php

Lines changed: 133 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,134 @@
1-
<?php
2-
3-
/*
4-
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
5-
All rights reserved.
6-
7-
Redistribution and use in source and binary forms, with or without modification,
8-
are permitted provided that the following conditions are met:
9-
10-
* Redistributions of source code must retain the above copyright notice,
11-
this list of conditions and the following disclaimer.
12-
* Redistributions in binary form must reproduce the above copyright notice,
13-
this list of conditions and the following disclaimer in the documentation
14-
and/or other materials provided with the distribution.
15-
* Neither the name of ISPConfig nor the names of its contributors
16-
may be used to endorse or promote products derived from this software without
17-
specific prior written permission.
18-
19-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22-
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23-
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24-
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26-
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29-
*/
30-
31-
/******************************************
32-
* Begin Form configuration
33-
******************************************/
34-
35-
$tform_def_file = "form/dns_a.tform.php";
36-
37-
/******************************************
38-
* End Form configuration
39-
******************************************/
40-
41-
require_once('../../lib/config.inc.php');
42-
require_once('../../lib/app.inc.php');
43-
44-
//* Check permissions for module
45-
$app->auth->check_module_permissions('dns');
46-
47-
// Loading classes
48-
$app->uses('tpl,tform,tform_actions,validate_dns');
49-
$app->load('tform_actions');
50-
51-
class page_action extends tform_actions {
52-
53-
function onShowNew() {
54-
global $app, $conf;
55-
56-
// we will check only users, not admins
57-
if($_SESSION["s"]["user"]["typ"] == 'user') {
58-
59-
// Get the limits of the client
60-
$client_group_id = $_SESSION["s"]["user"]["default_group"];
61-
$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
62-
63-
// Check if the user may add another mailbox.
64-
if($client["limit_dns_record"] >= 0) {
65-
$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
66-
if($tmp["number"] >= $client["limit_dns_record"]) {
67-
$app->error($app->tform->wordbook["limit_dns_record_txt"]);
68-
}
69-
}
70-
}
71-
72-
parent::onShowNew();
73-
}
74-
75-
function onSubmit() {
76-
global $app, $conf;
77-
78-
// Get the parent soa record of the domain
79-
$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = '".intval($_POST["zone"])."' AND ".$app->tform->getAuthSQL('r'));
80-
81-
// Check if Domain belongs to user
82-
if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
83-
84-
// Check the client limits, if user is not the admin
85-
if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
86-
// Get the limits of the client
87-
$client_group_id = $_SESSION["s"]["user"]["default_group"];
88-
$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
89-
90-
// Check if the user may add another mailbox.
91-
if($this->id == 0 && $client["limit_dns_record"] >= 0) {
92-
$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
93-
if($tmp["number"] >= $client["limit_dns_record"]) {
94-
$app->error($app->tform->wordbook["limit_dns_record_txt"]);
95-
}
96-
}
97-
} // end if user is not admin
98-
99-
100-
// Set the server ID of the rr record to the same server ID as the parent record.
101-
$this->dataRecord["server_id"] = $soa["server_id"];
102-
103-
parent::onSubmit();
104-
}
105-
106-
function onAfterInsert() {
107-
global $app, $conf;
108-
109-
// Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
110-
$soa = $app->db->queryOneRecord("SELECT sys_groupid FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
111-
$app->db->query("UPDATE dns_rr SET sys_groupid = ".$soa['sys_groupid']." WHERE id = ".$this->id);
112-
113-
// Update the serial number of the SOA record
114-
$soa_id = intval($_POST["zone"]);
115-
$serial = $app->validate_dns->increase_serial($soa["serial"]);
116-
$app->db->query("UPDATE dns_soa SET serial = $serial WHERE id = $soa_id");
117-
118-
}
119-
120-
function onAfterUpdate() {
121-
global $app, $conf;
122-
123-
// Update the serial number of the SOA record
124-
$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
125-
$soa_id = intval($_POST["zone"]);
126-
$serial = $app->validate_dns->increase_serial($soa["serial"]);
127-
$app->db->query("UPDATE dns_soa SET serial = $serial WHERE id = $soa_id");
128-
}
129-
130-
}
131-
132-
$page = new page_action;
133-
$page->onLoad();
134-
1+
<?php
2+
3+
/*
4+
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
5+
All rights reserved.
6+
7+
Redistribution and use in source and binary forms, with or without modification,
8+
are permitted provided that the following conditions are met:
9+
10+
* Redistributions of source code must retain the above copyright notice,
11+
this list of conditions and the following disclaimer.
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
* Neither the name of ISPConfig nor the names of its contributors
16+
may be used to endorse or promote products derived from this software without
17+
specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22+
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23+
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26+
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
31+
/******************************************
32+
* Begin Form configuration
33+
******************************************/
34+
35+
$tform_def_file = "form/dns_a.tform.php";
36+
37+
/******************************************
38+
* End Form configuration
39+
******************************************/
40+
41+
require_once('../../lib/config.inc.php');
42+
require_once('../../lib/app.inc.php');
43+
44+
//* Check permissions for module
45+
$app->auth->check_module_permissions('dns');
46+
47+
// Loading classes
48+
$app->uses('tpl,tform,tform_actions,validate_dns');
49+
$app->load('tform_actions');
50+
51+
class page_action extends tform_actions {
52+
53+
function onShowNew() {
54+
global $app, $conf;
55+
56+
// we will check only users, not admins
57+
if($_SESSION["s"]["user"]["typ"] == 'user') {
58+
59+
// Get the limits of the client
60+
$client_group_id = $_SESSION["s"]["user"]["default_group"];
61+
$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
62+
63+
// Check if the user may add another mailbox.
64+
if($client["limit_dns_record"] >= 0) {
65+
$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
66+
if($tmp["number"] >= $client["limit_dns_record"]) {
67+
$app->error($app->tform->wordbook["limit_dns_record_txt"]);
68+
}
69+
}
70+
}
71+
72+
parent::onShowNew();
73+
}
74+
75+
function onSubmit() {
76+
global $app, $conf;
77+
78+
// Get the parent soa record of the domain
79+
$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = '".intval($_POST["zone"])."' AND ".$app->tform->getAuthSQL('r'));
80+
81+
// Check if Domain belongs to user
82+
if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
83+
84+
// Check the client limits, if user is not the admin
85+
if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
86+
// Get the limits of the client
87+
$client_group_id = $_SESSION["s"]["user"]["default_group"];
88+
$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
89+
90+
// Check if the user may add another mailbox.
91+
if($this->id == 0 && $client["limit_dns_record"] >= 0) {
92+
$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
93+
if($tmp["number"] >= $client["limit_dns_record"]) {
94+
$app->error($app->tform->wordbook["limit_dns_record_txt"]);
95+
}
96+
}
97+
} // end if user is not admin
98+
99+
100+
// Set the server ID of the rr record to the same server ID as the parent record.
101+
$this->dataRecord["server_id"] = $soa["server_id"];
102+
103+
parent::onSubmit();
104+
}
105+
106+
function onAfterInsert() {
107+
global $app, $conf;
108+
109+
//* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
110+
$soa = $app->db->queryOneRecord("SELECT sys_groupid FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
111+
$app->db->datalogUpdate('dns_rr', "sys_groupid = ".$soa['sys_groupid'], 'id', $this->id);
112+
113+
//* Update the serial number of the SOA record
114+
$soa_id = intval($_POST["zone"]);
115+
$serial = $app->validate_dns->increase_serial($soa["serial"]);
116+
$app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
117+
}
118+
119+
function onAfterUpdate() {
120+
global $app, $conf;
121+
122+
//* Update the serial number of the SOA record
123+
$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
124+
$soa_id = intval($_POST["zone"]);
125+
$serial = $app->validate_dns->increase_serial($soa["serial"]);
126+
$app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
127+
}
128+
129+
}
130+
131+
$page = new page_action;
132+
$page->onLoad();
133+
135134
?>

0 commit comments

Comments
 (0)