3 use dns\system\api\idna\idna_convert
;
8 * @author Jan Altensen (Stricted)
9 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
10 * @copyright 2014-2016 Jan Altensen (Stricted)
12 class DomainAddPage
extends AbstractPage
{
13 public $activeMenuItem = 'add';
15 public function prepare() {
16 if (User
::isReseller() === false) {
17 throw new \
Exeption('Forbidden', 403);
19 if (isset($_POST['origin']) && isset($_POST['submit'])) {
20 if (!empty($_POST['origin'])) {
21 $idna = new idna_convert();
22 $origin = $_POST['origin'];
23 if (substr($origin, -1) != ".") {
24 $origin = $origin.".";
27 $origin = $idna->encode($origin);
29 $serial = date("Ymd")."01";
31 $sql = "SELECT * FROM dns_soa WHERE origin = ?";
32 $res = DNS
::getDB()->query($sql, array($origin));
33 $soa = DNS
::getDB()->fetch_array($res);
36 $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);
38 $sql = "INSERT INTO dns_soa (id, origin, ns, mbox, serial, refresh, retry, expire, minimum, ttl, active) VALUES (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
39 DNS
::getDB()->query($sql, $soaData);
40 $soaID = DNS
::getDB()->last_id();
42 $sql = "INSERT INTO dns_soa_to_user (id, userID, soaID) VALUES (null, ?, ?)";
43 DNS
::getDB()->query($sql, array(DNS
::getSession()->userID
, $soaID));
45 $sql = "SELECT * FROM dns_template WHERE userID = ?";
46 $res = DNS
::getDB()->query($sql, array(DNS
::getSession()->userID
));
47 $tpl = DNS
::getDB()->fetch_array($res);
50 if (!empty($tpl) && !empty($tpl['template'])) {
51 $records = explode("\n", $tpl['template']);
54 $records = explode("\n", DNS_DEFAULT_RECORDS
);
57 if (!empty($records)) {
58 foreach ($records as $record) {
59 $record = str_replace("{domain}", $origin, $record);
60 $record = explode(":", $record, 3);
62 $rrData = array($soaID, $record[0], $record[1], $record[2], ($record[1] == "MX" ?
10 : 0), DNS_SOA_MINIMUM_TTL
);
63 $sql = 'INSERT INTO dns_rr (id, zone, name, type, data, aux, ttl) VALUES (NULL, ?, ?, ?, ?, ?, ?)';
64 DNS
::getDB()->query($sql, $rrData);
67 DNS
::getTPL()->assign(array("error" => '', 'success' => true));
70 DNS
::getTPL()->assign(array("error" => 'origin', 'origin' => $_POST['origin']));
74 DNS
::getTPL()->assign(array("error" => 'origin'));
78 DNS
::getTPL()->assign(array("error" => ''));