Skip to content

Commit 443d7e0

Browse files
committed
added missing dots in dns template examples and added a function which adds the dots automatically when missing.
1 parent b67e4fb commit 443d7e0

File tree

3 files changed

+263
-252
lines changed

3 files changed

+263
-252
lines changed

interface/lib/classes/tform_actions.inc.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@
3030

3131
class tform_actions {
3232

33-
var $id;
34-
var $activeTab;
35-
var $dataRecord;
36-
var $plugins = array();
37-
var $oldDataRecord; // This array is only filled during updates and when db_history is enabled.
33+
public $id;
34+
public $activeTab;
35+
public $dataRecord;
36+
public $plugins = array();
37+
public $oldDataRecord; // This array is only filled during updates and when db_history is enabled.
3838

3939
function onLoad() {
4040
global $app, $conf, $tform_def_file;

interface/web/dns/dns_soa_edit.php

Lines changed: 184 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -1,174 +1,185 @@
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

Comments
 (0)