Marius Cramer
2015-04-15 3a11d23a2f32a1b9b2ec43429917c000017c5eff
commit | author | age
830d11 1 <?php
F 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_aaaa.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';
830d11 43
F 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 {
7fe908 52
830d11 53     function onShowNew() {
F 54         global $app, $conf;
7fe908 55
830d11 56         // we will check only users, not admins
F 57         if($_SESSION["s"]["user"]["typ"] == 'user') {
7fe908 58
830d11 59             // Get the limits of the client
F 60             $client_group_id = $_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);
7fe908 62
830d11 63             // Check if the user may add another mailbox.
F 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);
830d11 66                 if($tmp["number"] >= $client["limit_dns_record"]) {
F 67                     $app->error($app->tform->wordbook["limit_dns_record_txt"]);
68                 }
69             }
70         }
7fe908 71
830d11 72         parent::onShowNew();
F 73     }
7fe908 74
830d11 75     function onSubmit() {
F 76         global $app, $conf;
7fe908 77
830d11 78         // Get the parent soa record of the domain
cc7a82 79         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_POST["zone"]);
830d11 80
F 81         // Check if Domain belongs to user
82         if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
7fe908 83
830d11 84         // Check the client limits, if user is not the admin
F 85         if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
86             // Get the limits of the client
35509d 87             $client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
cc7a82 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);
7fe908 89
830d11 90             // Check if the user may add another mailbox.
F 91             if($this->id == 0 && $client["limit_dns_record"] >= 0) {
cc7a82 92                 $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = ?", $client_group_id);
830d11 93                 if($tmp["number"] >= $client["limit_dns_record"]) {
F 94                     $app->error($app->tform->wordbook["limit_dns_record_txt"]);
95                 }
96             }
97         } // end if user is not admin
7fe908 98
MC 99
830d11 100         // Set the server ID of the rr record to the same server ID as the parent record.
F 101         $this->dataRecord["server_id"] = $soa["server_id"];
7fe908 102
56b0b8 103         // Update the serial number  and timestamp of the RR record
cc7a82 104         $soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
56b0b8 105         $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
F 106         $this->dataRecord["stamp"] = date('Y-m-d H:i:s');
7fe908 107
830d11 108         parent::onSubmit();
F 109     }
7fe908 110
830d11 111     function onAfterInsert() {
F 112         global $app, $conf;
7fe908 113
830d11 114         //* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
cc7a82 115         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $this->dataRecord["zone"]);
3a11d2 116         $app->db->datalogUpdate('dns_rr', array("sys_groupid" => $soa['sys_groupid']), 'id', $this->id);
830d11 117
F 118         //* Update the serial number of the SOA record
65ea2e 119         $soa_id = $app->functions->intval($_POST["zone"]);
830d11 120         $serial = $app->validate_dns->increase_serial($soa["serial"]);
3a11d2 121         $app->db->datalogUpdate('dns_soa', array("serial" => $serial), 'id', $soa_id);
830d11 122     }
7fe908 123
830d11 124     function onAfterUpdate() {
F 125         global $app, $conf;
7fe908 126
830d11 127         //* Update the serial number of the SOA record
cc7a82 128         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $this->dataRecord["zone"]);
65ea2e 129         $soa_id = $app->functions->intval($_POST["zone"]);
830d11 130         $serial = $app->validate_dns->increase_serial($soa["serial"]);
3a11d2 131         $app->db->datalogUpdate('dns_soa', array("serial" => $serial), 'id', $soa_id);
830d11 132     }
7fe908 133
830d11 134 }
F 135
136 $page = new page_action;
137 $page->onLoad();
138
139 ?>