333e7092a2b46378f74cefa6f376cab1ccb0ed5d
[GitHub/Stricted/Domain-Control-Panel.git] / lib / page / DomainAddPage.class.php
1 <?php
2 namespace dns\page;
3 use dns\system\DNS;
4 use dns\system\User;
5
6 /**
7 * @author Jan Altensen (Stricted)
8 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
9 * @copyright 2014-2015 Jan Altensen (Stricted)
10 */
11 class DomainAddPage extends AbstractPage {
12 public $activeMenuItem = 'add';
13
14 public function prepare() {
15 if (User::isReseller() === false) {
16 throw new \Exeption('Forbidden', 403);
17 }
18 if (isset($_POST['origin']) && isset($_POST['submit'])) {
19 if (!empty($_POST['origin'])) {
20 $origin = $_POST['origin'];
21 if (substr($origin, -1) != ".") {
22 $origin = $origin.".";
23 }
24
25 $serial = date("Ymd")."01";
26
27 $sql = "SELECT * FROM dns_soa WHERE origin = ?";
28 $res = DNS::getDB()->query($sql, array($origin));
29 $soa = DNS::getDB()->fetch_array($res);
30
31 if (empty($soa)) {
32 $soaData = array($origin, DNS_SOA_NS, DNS_SOA_MBOX, $serial, DNS_SOA_REFRESH, DNS_SOA_RETRY, DNS_SOA_EXPIRE, DNS_SOA_MINIMUM_TTL, DNS_SOA_TTL, 1);
33
34 $sql = "INSERT INTO dns_soa (id, origin, ns, mbox, serial, refresh, retry, expire, minimum, ttl, active) VALUES (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
35 DNS::getDB()->query($sql, $soaData);
36 $soaID = DNS::getDB()->last_id();
37
38 $sql = "INSERT INTO dns_soa_to_user (id, userID, soaID) VALUES (null, ?, ?)";
39 DNS::getDB()->query($sql, array($_SESSION['userID'], $soaID));
40
41 $sql = "SELECT * FROM dns_template WHERE userID = ?";
42 $res = DNS::getDB()->query($sql, array($_SESSION['userID']));
43 $tpl = DNS::getDB()->fetch_array($res);
44
45 $records = array();
46 if (!empty($tpl) && !empty($tpl['template'])) {
47 $records = explode("\n", $tpl['template']);
48 }
49 else {
50 $records = explode("\n", DNS_DEFAULT_RECORDS);
51 }
52
53 if (!empty($records)) {
54 foreach ($records as $record) {
55 $record = str_replace("{domain}", $origin, $record);
56 $record = explode(":", $record, 3);
57
58 $rrData = array($soaID, $record[0], $record[1], $record[2], ($record[1] == "MX" ? 10 : 0), DNS_SOA_MINIMUM_TTL);
59 $sql = 'INSERT INTO dns_rr (id, zone, name, type, data, aux, ttl) VALUES (NULL, ?, ?, ?, ?, ?, ?)';
60 DNS::getDB()->query($sql, $rrData);
61 }
62 }
63 DNS::getTPL()->assign(array("error" => '', 'success' => true));
64 }
65 else {
66 DNS::getTPL()->assign(array("error" => 'origin', 'origin' => $_POST['origin']));
67 }
68 }
69 else {
70 DNS::getTPL()->assign(array("error" => 'origin'));
71 }
72 }
73 else {
74 DNS::getTPL()->assign(array("error" => ''));
75 }
76 }
77 }