<?php include_once('includes/config.inc.php'); include_once('includes/session.inc.php'); include_once('includes/misc.inc.php'); if (isset($_GET['logout']) or isset($_POST['logout'])) { logout(); header("Location: index.php"); } if (!is_logged_in() and isset($_POST['formname']) && $_POST['formname'] == "loginform") { if (try_login() === TRUE) { set_logged_in($_POST['username']); } else { $errormsg = "Error while trying to authenticate you\n"; } } ?> <html> <head> <title>NSEdit!</title> <link href="jquery-ui/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css"/> <link href="jtable/lib/themes/metro/blue/jtable.min.css" rel="stylesheet" type="text/css"/> <link href="css/base.css" rel="stylesheet" type="text/css"/> <script src="jquery-ui/jquery-1.10.2.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.core.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.widget.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.mouse.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.draggable.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.position.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.button.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.resizable.js" type="text/javascript"></script> <script src="jquery-ui/ui/jquery.ui.dialog.js" type="text/javascript"></script> <script src="jtable/lib/jquery.jtable.min.js" type="text/javascript"></script> <script src="js/addclear/addclear.js" type="text/javascript"></script> </head> <? if (!is_logged_in()) { ?> <body onload="document.getElementById('username').focus()"> <div class="loginblock"> <div class="logo"> <img src="https://www.tuxis.nl/uploads/images/nsedit.png" alt="Logo"/> </div> <div class="login"> <? if (isset($errormsg)) { echo '<span style="color: red">' . $errormsg . '</span><br />'; } ?> <form action="index.php" method="post"> <table> <tr> <td class="label">Username:</td> <td><input id="username" type="text" name="username"/></td> </tr> <tr> <td class="label">Password:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td></td> <td><input type="submit" name="submit" value="Log me in!"/></td> </tr> </table> <input type="hidden" name="formname" value="loginform"/> </form> </div> </div> </body> </html> <? exit(0); } foreach ($templates as $template) { if (is_adminuser() or (isset($template['owner']) && $template['owner'] == get_sess_user()) or ($template['owner'] == 'public')) { $templatelist[] = "'" . $template['name'] . "':'" . $template['name'] . "'"; } } if (isset($templatelist)) { $tmpllist = ','; $tmpllist .= join(',', $templatelist); } else { $tmpllist = ''; } ?> <body> <div id="wrap"> <div id="dnssecinfo"> </div> <div id="menu" class="jtable-main-container"> <div class="jtable-title"> <div class="jtable-title-text"> Menu </div> </div> <ul> <li><a href="#" id="zoneadmin">Zones</a></li> <? if (is_adminuser()) { ?> <li><a href="#" id="useradmin">Users</a></li> <? } ?> <li><a href="index.php?logout=1">Logout</a></li> </ul> </div> <div id="zones"> <div style="visibility: hidden;" id="ImportZone"></div> <div class="tables" id="MasterZones"> <div class="searchbar" id="searchbar"> <input type="text" id="domsearch" name="domsearch" placeholder="Search...."/> </div> </div> <div class="tables" id="SlaveZones"></div> </div> <? if (is_adminuser()) { ?> <div id="users"> <div class="tables" id="Users"></div> </div> <? } ?> </div> <script type="text/javascript"> var entityMap = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }; function escapeHtml(string) { return String(string).replace(/[&<>"'\/]/g, function (s) { return entityMap[s]; }); }; $(document).ready(function () { $('#SlaveZones').jtable({ title: 'Slave Zones', paging: true, pageSize: 20, sorting: false, messages: { addNewRecord: 'Add new slave zone', noDataAvailable: 'No slave zones found' }, openChildAsAccordion: true, actions: { listAction: 'zones.php?action=listslaves', createAction: 'zones.php?action=create', deleteAction: 'zones.php?action=delete' }, fields: { id: { key: true, type: 'hidden' }, name: { title: 'Domain' }, <? if (is_adminuser()) { ?> owner: { title: 'Owner', options: function(data) { return 'users.php?action=listoptions'; }, defaultValue: 'admin' }, <? } ?> kind: { create: true, type: 'hidden', list: false, defaultValue: 'Slave' }, serial: { title: 'Serial', create: false }, records: { width: '5%', title: 'Records', paging: true, pageSize: 20, edit: false, create: false, display: function (zone) { var $img = $('<img class="list" src="img/list.png" title="Records" />'); $img.click(function () { $('#SlaveZones').jtable('openChildTable', $img.closest('tr'), { title: 'Records in ' + zone.record.name, openChildAsAccordion: true, actions: { listAction: 'zones.php?action=listrecords&zoneurl=' + zone.record.url }, fields: { name: { title: 'Label' }, type: { title: 'Type' }, prio: { title: 'Prio' }, content: { title: 'Content', display: function (data) { return escapeHtml(data.record.content); } }, ttl: { title: 'TTL' } } }, function (data) { data.childTable.jtable('load'); }) }); return $img; } } } }); $('#MasterZones').jtable({ title: 'Master/Native Zones', paging: true, pageSize: 20, messages: { addNewRecord: 'Add new zone', noDataAvailable: 'No zones found' }, toolbar: { hoverAnimation: true, hoverAnimationDuration: 60, hoverAnimationEasing: undefined, items: [{ icon: 'jtable/lib/themes/metro/add.png', text: 'Import a new zone', click: function() { $('#ImportZone').jtable('showCreateForm'); } }], }, sorting: false, openChildAsAccordion: true, actions: { listAction: 'zones.php?action=list', createAction: 'zones.php?action=create', deleteAction: 'zones.php?action=delete', <? if (is_adminuser()) { ?> updateAction: 'zones.php?action=update' <? } ?> }, fields: { id: { key: true, type: 'hidden' }, name: { title: 'Domain' }, dnssec: { title: 'DNSSEC', create: false, edit: false, display: function (zone) { if (zone.record.dnssec == true) { var $img = $('<img class="list" src="img/lock.png" title="DNSSec Info" />'); $img.click(function () { $("#dnssecinfo").html(""); $.each(zone.record.keyinfo, function ( i, val) { if (val.dstxt) { $("#dnssecinfo").append("<p><h2>"+val.keytype+"</h2><pre>"+val.dstxt+"</pre></p>"); } }); $("#dnssecinfo").dialog({ modal: true, title: "DS-records for "+zone.record.name, width: 'auto', buttons: { Ok: function() { $( this ).dialog( "close" ); } } }); }); return $img; } else { return '<img src="img/lock_open.png" title="DNSSec Disabled" />'; } } }, <? if (is_adminuser()) { ?> owner: { title: 'Owner', options: function(data) { return 'users.php?action=listoptions'; }, defaultValue: 'admin' }, <? } ?> kind: { title: 'Type', options: {'Native': 'Native', 'Master': 'Master'}, defaultValue: '<? echo $defaults['defaulttype']; ?>', edit: false }, template: { title: 'Template', options: {'None': 'None'<? echo $tmpllist; ?>}, list: false, create: true, edit: false }, nameserver1: { title: 'Pri. Nameserver', create: true, list: false, edit: false, defaultValue: '<? echo $defaults['primaryns']; ?>' }, nameserver2: { title: 'Sec. Nameserver', create: true, list: false, edit: false, defaultValue: '<? echo $defaults['secondaryns']; ?>' }, serial: { title: 'Serial', create: false, edit: false }, records: { width: '5%', title: 'Records', edit: false, create: false, display: function (zone) { var $img = $('<img class="list" src="img/list.png" title="Records" />'); $img.click(function () { $('#MasterZones').jtable('openChildTable', $img.closest('tr'), { title: 'Records in ' + zone.record.name, messages: { addNewRecord: 'Add to ' + zone.record.name, noDataAvailable: 'No records for ' + zone.record.name }, paging: true, pageSize: 20, openChildAsAccordion: true, actions: { listAction: 'zones.php?action=listrecords&zoneurl=' + zone.record.url, createAction: 'zones.php?action=createrecord&zoneurl=' + zone.record.url, deleteAction: 'zones.php?action=deleterecord&zoneurl=' + zone.record.url, updateAction: 'zones.php?action=editrecord&zoneurl=' + zone.record.url }, fields: { domid: { create: true, type: 'hidden', defaultValue: zone.record.id }, id: { key: true, create: false, edit: false, list: false }, domain: { create: true, type: 'hidden', defaultValue: zone.record.name }, name: { title: 'Label', create: true }, type: { options: function() { zonename = new String(zone.record.name); if (zonename.match(/(\.in-addr|\.ip6)\.arpa/)) { return { 'PTR':'PTR', 'NS':'NS', 'MX':'MX', 'TXT':'TXT', 'SOA':'SOA' }; } else { return { 'AAAA': 'AAAA', 'A': 'A', 'CNAME': 'CNAME', 'MX': 'MX', 'PTR': 'PTR', 'SRV': 'SRV', 'TXT': 'TXT', 'NS': 'NS', 'SOA': 'SOA' }; } }, create: true }, priority: { title: 'Prio', create: true, defaultValue: '<? echo $defaults['priority']; ?>' }, content: { title: 'Content', create: true, display: function (data) { return escapeHtml(data.record.content); } }, ttl: { title: 'TTL', create: true, defaultValue: '<? echo $defaults['ttl']; ?>' } } }, function (data) { data.childTable.jtable('load'); }) }); return $img; } } } }); $('#ImportZone').jtable({ title: 'Import zone', actions: { createAction: 'zones.php?action=create' }, fields: { id: { key: true, type: 'hidden' }, name: { title: 'Domain' }, <? if (is_adminuser()) { ?> owner: { title: 'Owner', options: function(data) { return 'users.php?action=listoptions'; }, defaultValue: 'admin' }, <? } ?> kind: { title: 'Type', options: {'Native': 'Native', 'Master': 'Master'}, defaultValue: '<? echo $defaults['defaulttype']; ?>', edit: false }, zone: { title: 'Zonedata', type: 'textarea' }, owns: { title: 'Overwrite Nameservers', type: 'checkbox', values: {'0': 'No', '1': 'Yes'}, defaultValue: 1 }, nameserver1: { title: 'Pri. Nameserver', create: true, list: false, edit: false, defaultValue: '<? echo $defaults['primaryns']; ?>' }, nameserver2: { title: 'Sec. Nameserver', create: true, list: false, edit: false, defaultValue: '<? echo $defaults['secondaryns']; ?>' }, }, recordAdded: function() { $("#MasterZones").jtable('load'); $("#SlaveZones").jtable('load'); } }); $('#domsearch').addClear({ onClear: function() { $('#MasterZones').jtable('load'); } }); $('#domsearch').on('input', function (e) { e.preventDefault(); $('#MasterZones').jtable('load', { domsearch: $('#domsearch').val() }); $('#SlaveZones').jtable('load', { domsearch: $('#domsearch').val() }); }); <? if (is_adminuser()) { ?> $('#Users').hide(); $('#useradmin').click(function () { $('#Users').show(); $('#MasterZones').hide(); $('#SlaveZones').hide(); }); $('#zoneadmin').click(function () { $('#Users').hide(); $('#MasterZones').show(); $('#SlaveZones').show(); }); $('#Users').jtable({ title: 'Users', paging: true, pageSize: 20, sorting: false, actions: { listAction: 'users.php?action=list', createAction: 'users.php?action=create', deleteAction: 'users.php?action=delete', updateAction: 'users.php?action=update' }, messages: { addNewRecord: 'Add new user' }, fields: { id: { key: true, type: 'hidden' }, emailaddress: { title: 'User' }, password: { title: 'Password', type: 'password', list: false }, isadmin: { title: 'Admin', type: 'checkbox', values: {'0': 'No', '1': 'Yes'} } }, recordAdded: function() { $("#MasterZones").jtable('reload'); $("#SlaveZones").jtable('reload'); } }); $('#Users').jtable('load'); <? } ?> $('#MasterZones').jtable('load'); $('#SlaveZones').jtable('load'); }); </script> </body> </html>