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 RecordListPage
extends AbstractPage
{
13 public $activeMenuItem = 'index';
15 public function prepare() {
16 if (!isset($_GET['id']) ||
empty($_GET['id'])) {
17 throw new \
Exception('The link you are trying to reach is no longer available or invalid.', 404);
20 $soaIDs = User
::getAccessibleDomains();
21 if (!in_array($_GET['id'], $soaIDs)) {
22 throw new \
Exception('Access denied. You\'re not authorized to view this page.', 403);
25 $idna = new idna_convert();
27 $sql = "SELECT count(*) as count FROM dns_rr WHERE zone = ?";
28 $res = DNS
::getDB()->query($sql, array($_GET['id']));
29 $row = DNS
::getDB()->fetch_array($res);
30 $count = $row['count'];
35 $validSortFields = array('id', 'name', 'type', 'ttl', 'data');
37 if (isset($_GET['sortField'])) {
38 if (in_array($_GET['sortField'], $validSortFields)) {
39 $sortField = $_GET['sortField'];
43 if (isset($_GET['sortOrder'])) {
44 if ($_GET['sortOrder'] == "ASC" ||
$_GET['sortOrder'] == "DESC") {
45 $sortOrder = $_GET['sortOrder'];
49 if (!empty($sortField) && !empty($sortField)) {
50 $sqlOrderBy = $sortField." ".$sortOrder;
54 if (isset($_GET['pageNo']) && !empty($_GET['pageNo'])) {
55 $pageNo = intval($_GET['pageNo']);
61 $sqlLimit = $itemsPerPage;
62 $sqlOffset = ($pageNo - 1) * $itemsPerPage;
63 $pages = intval(ceil($count / $itemsPerPage));
65 $sql = "SELECT * FROM dns_soa WHERE id = ?";
66 $res = DNS
::getDB()->query($sql, array($_GET['id']));
67 $soa = DNS
::getDB()->fetch_array($res);
69 $soa['origin'] = $idna->decode($soa['origin']);
73 $sql = "SELECT * FROM dns_rr WHERE zone = ?".(!empty($sqlOrderBy) ?
" ORDER BY ".$sqlOrderBy : '')." LIMIT " . $sqlLimit . " OFFSET " . $sqlOffset;
74 $res = DNS
::getDB()->query($sql, array($_GET['id']));
75 while ($row = DNS
::getDB()->fetch_array($res)) {
76 $row['name'] = $idna->decode($row['name']);
77 if ($row['type'] == "SRV") {
78 $data = explode(" ", $row['data']);
81 $data = $idna->encode($data[2]);
83 $data = $weight.' '.$port.' '.$data;
85 $row['data'] = $idna->decode($data);
88 if ($row['type'] == "TLSA" ||
$row['type'] == "DS") {
89 $row['data'] = $row['data'];
92 $row['data'] = $idna->decode($row['data']);
98 DNS
::getTPL()->assign(array(
99 'records' => $records,
104 'sortField' => $sortField,
105 'sortOrder' => $sortOrder