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