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_soa.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_zone 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 maildomain.
64- if ($ client ["limit_dns_zone " ] >= 0 ) {
65- $ tmp = $ app ->db ->queryOneRecord ("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $ client_group_id " );
66- if ($ tmp ["number " ] >= $ client ["limit_dns_zone " ]) {
67- $ app ->error ($ app ->tform ->wordbook ["limit_dns_zone_txt " ]);
68- }
69- }
70- }
71-
72- parent ::onShowNew ();
73- }
74-
75- function onShowEnd () {
76- global $ app , $ conf ;
77-
78- // If user is admin, we will allow him to select to whom this record belongs
79- if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' || $ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ])) {
80- // Getting Domains of the user
81- $ sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 " ;
82- $ clients = $ app ->db ->queryAllRecords ($ sql );
83- $ client_select = '' ;
84- if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' ) $ client_select .= "<option value='0'></option> " ;
85- if (is_array ($ clients )) {
86- foreach ( $ clients as $ client ) {
87- $ selected = ($ client ["groupid " ] == @$ this ->dataRecord ["sys_groupid " ])?'SELECTED ' :'' ;
88- $ client_select .= "<option value=' $ client [groupid]' $ selected> $ client [name]</option> \r\n" ;
89- }
90- }
91- $ app ->tpl ->setVar ("client_group_id " ,$ client_select );
92- }
93-
94- parent ::onShowEnd ();
95- }
96-
97- function onSubmit () {
98- global $ app , $ conf ;
99-
100- if ($ _SESSION ["s " ]["user " ]["typ " ] != 'admin ' ) {
101- // Get the limits of the client
102- $ client_group_id = $ _SESSION ["s " ]["user " ]["default_group " ];
103- $ client = $ app ->db ->queryOneRecord ("SELECT limit_dns_zone, default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $ client_group_id " );
104-
105- // When the record is updated
106- if ($ this ->id > 0 ) {
107- // restore the server ID if the user is not admin and record is edited
108- $ tmp = $ app ->db ->queryOneRecord ("SELECT server_id FROM dns_soa WHERE id = " .intval ($ this ->id ));
109- $ this ->dataRecord ["server_id " ] = $ tmp ["server_id " ];
110- unset($ tmp );
111- // When the record is inserted
112- } else {
113- // set the server ID to the default mailserver of the client
114- $ this ->dataRecord ["server_id " ] = $ client ["default_dnsserver " ];
115-
116- // Check if the user may add another maildomain.
117- if ($ client ["limit_dns_zone " ] >= 0 ) {
118- $ tmp = $ app ->db ->queryOneRecord ("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $ client_group_id " );
119- if ($ tmp ["number " ] >= $ client ["limit_dns_zone " ]) {
120- $ app ->error ($ app ->tform ->wordbook ["limit_dns_zone_txt " ]);
121- }
122- }
123- }
124- }
125-
126- // Update the serial number of the SOA record
127- $ soa = $ app ->db ->queryOneRecord ("SELECT serial FROM dns_soa WHERE id = " .$ this ->id );
128- $ this ->dataRecord ["serial " ] = $ app ->validate_dns ->increase_serial ($ soa ["serial " ]);
129-
130- parent ::onSubmit ();
131- }
132-
133- function onAfterInsert () {
134- global $ app , $ conf ;
135-
136- // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
137- if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' && isset ($ this ->dataRecord ["client_group_id " ])) {
138- $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
139- $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
140- // And we want to update all rr records too, that belong to this record
141- $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
142- }
143- if ($ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ]) && isset ($ this ->dataRecord ["client_group_id " ])) {
144- $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
145- $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
146- // And we want to update all rr records too, that belong to this record
147- $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
148- }
149- }
150-
151- function onAfterUpdate () {
152- global $ app , $ conf ;
153-
154- // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
155- if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' && isset ($ this ->dataRecord ["client_group_id " ])) {
156- $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
157- $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
158- // And we want to update all rr records too, that belong to this record
159- $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
160- }
161- if ($ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ]) && isset ($ this ->dataRecord ["client_group_id " ])) {
162- $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
163- $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
164- // And we want to update all rr records too, that belong to this record
165- $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
166- }
167- }
168-
169- }
170-
171- $ page = new page_action ;
172- $ page ->onLoad ();
173-
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_soa.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_zone 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 maildomain.
64+ if ($ client ["limit_dns_zone " ] >= 0 ) {
65+ $ tmp = $ app ->db ->queryOneRecord ("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $ client_group_id " );
66+ if ($ tmp ["number " ] >= $ client ["limit_dns_zone " ]) {
67+ $ app ->error ($ app ->tform ->wordbook ["limit_dns_zone_txt " ]);
68+ }
69+ }
70+ }
71+
72+ parent ::onShowNew ();
73+ }
74+
75+ function onShowEnd () {
76+ global $ app , $ conf ;
77+
78+ // If user is admin, we will allow him to select to whom this record belongs
79+ if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' || $ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ])) {
80+ // Getting Domains of the user
81+ $ sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 " ;
82+ $ clients = $ app ->db ->queryAllRecords ($ sql );
83+ $ client_select = '' ;
84+ if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' ) $ client_select .= "<option value='0'></option> " ;
85+ if (is_array ($ clients )) {
86+ foreach ( $ clients as $ client ) {
87+ $ selected = ($ client ["groupid " ] == @$ this ->dataRecord ["sys_groupid " ])?'SELECTED ' :'' ;
88+ $ client_select .= "<option value=' $ client [groupid]' $ selected> $ client [name]</option> \r\n" ;
89+ }
90+ }
91+ $ app ->tpl ->setVar ("client_group_id " ,$ client_select );
92+ }
93+
94+ parent ::onShowEnd ();
95+ }
96+
97+ function onSubmit () {
98+ global $ app , $ conf ;
99+
100+ if ($ _SESSION ["s " ]["user " ]["typ " ] != 'admin ' ) {
101+ // Get the limits of the client
102+ $ client_group_id = $ _SESSION ["s " ]["user " ]["default_group " ];
103+ $ client = $ app ->db ->queryOneRecord ("SELECT limit_dns_zone, default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $ client_group_id " );
104+
105+ // When the record is updated
106+ if ($ this ->id > 0 ) {
107+ // restore the server ID if the user is not admin and record is edited
108+ $ tmp = $ app ->db ->queryOneRecord ("SELECT server_id FROM dns_soa WHERE id = " .intval ($ this ->id ));
109+ $ this ->dataRecord ["server_id " ] = $ tmp ["server_id " ];
110+ unset($ tmp );
111+ // When the record is inserted
112+ } else {
113+ // set the server ID to the default mailserver of the client
114+ $ this ->dataRecord ["server_id " ] = $ client ["default_dnsserver " ];
115+
116+ // Check if the user may add another maildomain.
117+ if ($ client ["limit_dns_zone " ] >= 0 ) {
118+ $ tmp = $ app ->db ->queryOneRecord ("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $ client_group_id " );
119+ if ($ tmp ["number " ] >= $ client ["limit_dns_zone " ]) {
120+ $ app ->error ($ app ->tform ->wordbook ["limit_dns_zone_txt " ]);
121+ }
122+ }
123+ }
124+ }
125+
126+ // Update the serial number of the SOA record
127+ $ soa = $ app ->db ->queryOneRecord ("SELECT serial FROM dns_soa WHERE id = " .$ this ->id );
128+ $ this ->dataRecord ["serial " ] = $ app ->validate_dns ->increase_serial ($ soa ["serial " ]);
129+
130+ //* Check if soa, ns and mbox have a dot at the end
131+ if (substr ($ this ->dataRecord ["origin " ],-1 ,1 ) != '. ' ) $ this ->dataRecord ["origin " ] .= '. ' ;
132+ if (substr ($ this ->dataRecord ["ns " ],-1 ,1 ) != '. ' ) $ this ->dataRecord ["ns " ] .= '. ' ;
133+ if (substr ($ this ->dataRecord ["mbox " ],-1 ,1 ) != '. ' ) $ this ->dataRecord ["mbox " ] .= '. ' ;
134+
135+ //* Replace @ in mbox
136+ if (stristr ($ this ->dataRecord ["mbox " ],'@ ' )) {
137+ $ this ->dataRecord ["mbox " ] = str_replace ('@ ' ,'. ' ,$ this ->dataRecord ["mbox " ]);
138+ }
139+
140+
141+ parent ::onSubmit ();
142+ }
143+
144+ function onAfterInsert () {
145+ global $ app , $ conf ;
146+
147+ // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
148+ if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' && isset ($ this ->dataRecord ["client_group_id " ])) {
149+ $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
150+ $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
151+ // And we want to update all rr records too, that belong to this record
152+ $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
153+ }
154+ if ($ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ]) && isset ($ this ->dataRecord ["client_group_id " ])) {
155+ $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
156+ $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
157+ // And we want to update all rr records too, that belong to this record
158+ $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
159+ }
160+ }
161+
162+ function onAfterUpdate () {
163+ global $ app , $ conf ;
164+
165+ // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
166+ if ($ _SESSION ["s " ]["user " ]["typ " ] == 'admin ' && isset ($ this ->dataRecord ["client_group_id " ])) {
167+ $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
168+ $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
169+ // And we want to update all rr records too, that belong to this record
170+ $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
171+ }
172+ if ($ app ->auth ->has_clients ($ _SESSION ['s ' ]['user ' ]['userid ' ]) && isset ($ this ->dataRecord ["client_group_id " ])) {
173+ $ client_group_id = intval ($ this ->dataRecord ["client_group_id " ]);
174+ $ app ->db ->query ("UPDATE dns_soa SET sys_groupid = $ client_group_id WHERE id = " .$ this ->id );
175+ // And we want to update all rr records too, that belong to this record
176+ $ app ->db ->query ("UPDATE dns_rr SET sys_groupid = $ client_group_id WHERE zone = " .$ this ->id );
177+ }
178+ }
179+
180+ }
181+
182+ $ page = new page_action ;
183+ $ page ->onLoad ();
184+
174185?>
0 commit comments