Marius Cramer
2015-04-15 3a11d23a2f32a1b9b2ec43429917c000017c5eff
commit | author | age
045bed 1 <?php
T 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_srv.tform.php";
36
37 /******************************************
38 * End Form configuration
39 ******************************************/
40
7fe908 41 require_once '../../lib/config.inc.php';
MC 42 require_once '../../lib/app.inc.php';
045bed 43
T 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 {
905663 52
045bed 53     function onShowNew() {
T 54         global $app, $conf;
905663 55
045bed 56         // we will check only users, not admins
T 57         if($_SESSION["s"]["user"]["typ"] == 'user') {
905663 58
045bed 59             // Get the limits of the client
35509d 60             $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
cc7a82 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);
905663 62
045bed 63             // Check if the user may add another mailbox.
T 64             if($client["limit_dns_record"] >= 0) {
cc7a82 65                 $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
045bed 66                 if($tmp["number"] >= $client["limit_dns_record"]) {
T 67                     $app->error($app->tform->wordbook["limit_dns_record_txt"]);
68                 }
69             }
70         }
905663 71
045bed 72         parent::onShowNew();
T 73     }
905663 74
W 75     function onShowEnd() {
76         global $app, $conf;
77
78         // Split the 3 parts of the SRV Record apart
79         $split = explode(' ', $this->dataRecord['data']);
7fe908 80
615a0a 81         $app->tpl->setVar('weight', $split[0]);
T 82         $app->tpl->setVar('port', $split[1]);
83         $app->tpl->setVar('target', $split[2]);
905663 84
W 85         parent::onShowEnd();
86     }
87
88     function onBeforeInsert() {
89         $this->dataRecord['data'] = $this->dataRecord['weight'] .' '. $this->dataRecord['port'] .' '. $this->dataRecord['target'];
90     }
91
92     function onBeforeUpdate() {
93         $this->dataRecord['data'] = $this->dataRecord['weight'] .' '. $this->dataRecord['port'] .' '. $this->dataRecord['target'];
94     }
95
045bed 96     function onSubmit() {
T 97         global $app, $conf;
905663 98
045bed 99         // Get the parent soa record of the domain
cc7a82 100         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_POST["zone"]);
045bed 101
T 102         // Check if Domain belongs to user
103         if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
905663 104
045bed 105         // Check the client limits, if user is not the admin
T 106         if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
107             // Get the limits of the client
108             $client_group_id = $_SESSION["s"]["user"]["default_group"];
cc7a82 109             $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);
905663 110
045bed 111             // Check if the user may add another mailbox.
T 112             if($this->id == 0 && $client["limit_dns_record"] >= 0) {
cc7a82 113                 $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
045bed 114                 if($tmp["number"] >= $client["limit_dns_record"]) {
T 115                     $app->error($app->tform->wordbook["limit_dns_record_txt"]);
116                 }
117             }
118         } // end if user is not admin
905663 119
W 120
045bed 121         // Set the server ID of the rr record to the same server ID as the parent record.
T 122         $this->dataRecord["server_id"] = $soa["server_id"];
905663 123
56b0b8 124         // Update the serial number  and timestamp of the RR record
cc7a82 125         $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
56b0b8 126         $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
F 127         $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
905663 128
045bed 129         parent::onSubmit();
T 130     }
905663 131
045bed 132     function onAfterInsert() {
T 133         global $app, $conf;
905663 134
045bed 135         //* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
cc7a82 136         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $this->dataRecord["zone"]);
3a11d2 137         $app->db->datalogUpdate('dns_rr', array("sys_groupid" => $soa['sys_groupid']), 'id', $this->id);
045bed 138
T 139         //* Update the serial number of the SOA record
65ea2e 140         $soa_id = $app->functions->intval($_POST["zone"]);
045bed 141         $serial = $app->validate_dns->increase_serial($soa["serial"]);
3a11d2 142         $app->db->datalogUpdate('dns_soa', array("serial" => $serial), 'id', $soa_id);
045bed 143     }
905663 144
045bed 145     function onAfterUpdate() {
T 146         global $app, $conf;
905663 147
045bed 148         //* Update the serial number of the SOA record
cc7a82 149         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $this->dataRecord["zone"]);
65ea2e 150         $soa_id = $app->functions->intval($_POST["zone"]);
045bed 151         $serial = $app->validate_dns->increase_serial($soa["serial"]);
3a11d2 152         $app->db->datalogUpdate('dns_soa', array("serial" => $serial), 'id', $soa_id);
045bed 153     }
7fe908 154
045bed 155 }
T 156
157 $page = new page_action;
158 $page->onLoad();
159
e0f7cd 160 ?>