Files
DnsServer/DnsServerCore/www/index.html

579 lines
44 KiB
HTML

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Technitium DNS Server</title>
<script src="/js/jquery.min.js"></script>
<link href="/css/bootstrap.min.css" rel="stylesheet">
<!--<link href="/css/bootstrap-theme.min.css" rel="stylesheet">-->
<script src="/js/bootstrap.min.js"></script>
<link href="/css/font-awesome.min.css" rel="stylesheet" />
<link href="/css/main.css" rel="stylesheet" />
<script src="/js/common.js"></script>
<script src="/js/main.js"></script>
</head>
<body>
<div id="header">
<div id="mnuUser" class="menu dropdown" style="display: none;">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<span class="menu-title">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
<span id="mnuUserDisplayName"></span>
<span class="caret"></span>
</span>
</a>
<ul class="dropdown-menu">
<li><a href="#" onclick="return resetChangePasswordModal();" data-toggle="modal" data-target="#modalChangePassword">Change Password</a></li>
<li><a href="#" onclick="return logout();">Logout</a></li>
</ul>
</div>
</div>
<div id="content">
<div class="container">
<div class="AlertPlaceholder"></div>
<div id="pageLogin" class="pageLogin">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">DNS Server</h3>
</div>
<div class="panel-body">
<form class="form-horizontal">
<div class="form-group">
<label for="txtUser" class="col-sm-3 control-label">Username</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="txtUser" placeholder="username">
</div>
</div>
<div class="form-group">
<label for="txtPass" class="col-sm-3 control-label">Password</label>
<div class="col-sm-8">
<input type="password" class="form-control" id="txtPass" placeholder="password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-8">
<button id="btnLogin" type="submit" class="btn btn-primary" data-loading-text="Working..." onclick="return login();">Login</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div id="pageMain" class="page">
<div class="panel panel-default">
<div class="panel-heading" style="height: 38px;">
<div style="float: left;">
<h3 class="panel-title">DNS Server<span id="lblServerDomain"></span></h3>
</div>
<div style="float: right;">
<a href="" target="_blank" id="lnkNewVersionAvailable" style="display: none; color: red !important;">New Version Available!</a>
</div>
</div>
<div class="panel-body" style="min-height: 500px;">
<div>
<ul class="nav nav-tabs" role="tablist">
<li id="mainPanelTabListZones" role="presentation" class="active"><a href="#mainPanelTabPaneZones" aria-controls="mainPanelTabPaneZones" role="tab" data-toggle="tab" onclick="return refreshZonesList();">Zones</a></li>
<li id="mainPanelTabListCachedZones" role="presentation"><a href="#mainPanelTabPaneCachedZones" aria-controls="mainPanelTabPaneCachedZones" role="tab" data-toggle="tab" onclick="return false;">Cached Zones</a></li>
<li id="mainPanelTabListDnsClient" role="presentation"><a href="#mainPanelTabPaneDnsClient" aria-controls="mainPanelTabPaneZones" role="tab" data-toggle="tab" onclick="return false;">DNS Client</a></li>
<li id="mainPanelTabListSettings" role="presentation"><a href="#mainPanelTabPaneSettings" aria-controls="mainPanelTabPaneSettings" role="tab" data-toggle="tab" onclick="return loadDnsSettings();">Settings</a></li>
<li id="mainPanelTabListLogs" role="presentation"><a href="#mainPanelTabPaneLogs" aria-controls="mainPanelTabPaneLogs" role="tab" data-toggle="tab" onclick="return refreshLogFilesList();">Logs</a></li>
</ul>
<div class="tab-content">
<div id="mainPanelTabPaneZones" role="tabpanel" class="tab-pane active" style="padding: 10px 0 0 0;">
<div class="well well-sm zone-list-pane">
<form class="form-inline">
<div class="form-group">
<input type="text" class="form-control" style="width: 180px;" id="txtAddZone" placeholder="example.com">
<button id="btnAddZone" type="submit" class="btn btn-primary" data-loading-text="Add" onclick="return addZone();">Add</button>
</div>
</form>
<div id="lstZones" class="zones">
<div class="zone"><a href="#" onclick="return viewZone('technitium.com');">technitium.com</a></div>
</div>
</div>
<div id="divZoneViewer" class="zone-viewer-pane">
<div class="panel panel-default">
<div class="panel-heading" style="height: 36px; padding: 4px 6px;">
<div style="float: left; padding: 4px;"><span id="spanZoneViewerTitle">technitium.com</span> <span id="spanZoneViewerTitleLink"><a href="" target="_blank"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span></a></span></div>
<div style="float: right;">
<button id="btnDisableZone" type="button" class="btn btn-warning" data-loading-text="Disable" onclick="return disableZone();" style="font-size: 12px; padding: 4px 6px;">Disable</button>
<button id="btnEnableZone" type="button" class="btn btn-default" data-loading-text="Enable" onclick="return enableZone();" style="font-size: 12px; padding: 4px 6px;">Enable</button>
<button id="btnDeleteZone" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteZone();" style="font-size: 12px; padding: 4px 6px;">Delete</button>
</div>
</div>
<div class="panel-body">
<div id="divZoneViewerLoader" style="margin-top: 20px; height: 400px;"></div>
<div id="divZoneViewerBody">
<ul class="list-group">
<li class="list-group-item resource-record">
<form class="form-inline">
<div class="form-group">
<label for="optType1">Type</label>
<select class="form-control" id="optType1" disabled>
<option>A</option>
<option>NS</option>
<option>CNAME</option>
<option>SOA</option>
<option>PTR</option>
<option>MX</option>
<option>TXT</option>
<option>AAAA</option>
</select>
</div>
<div class="form-group">
<label for="addRRSubDomain1">Name</label>
<input type="text" class="form-control" id="addRRSubDomain1" placeholder="@" style="width: 136px;">
</div>
<div class="form-group">
<label for="addRRValue1">Value</label>
<input type="text" class="form-control" id="addRRValue1" placeholder="value" style="width: 250px;">
</div>
<div class="form-group">
<label for="addRRTtl1">TTL</label>
<input type="number" class="form-control" id="addRRTtl1" placeholder="3600" style="width: 80px;">
</div>
<div class="form-group" style="display: block; margin-bottom: 0px;">
<button type="button" class="btn btn-primary">Update</button>
<button type="button" class="btn btn-warning">Delete</button>
</div>
</form>
</li>
<li class="list-group-item resource-record">
<form class="form-inline">
<div class="form-group">
<label for="optType2">Type</label>
<select class="form-control" id="optType2" disabled>
<option>A</option>
<option>NS</option>
<option>CNAME</option>
<option selected>SOA</option>
<option>PTR</option>
<option>MX</option>
<option>TXT</option>
<option>AAAA</option>
</select>
</div>
<div class="form-group">
<label for="addRRSubDomain2">Name</label>
<input type="text" class="form-control" id="addRRSubDomain2" placeholder="@" style="width: 136px;">
</div>
<div class="form-group">
<label for="addRRValue2">Master Name Server</label>
<input type="text" class="form-control" id="addRRValue2" placeholder="value" style="width: 250px;">
</div>
<div class="form-group">
<label for="addRRValueRP">Responsible Person</label>
<input type="text" class="form-control" id="addRRValueRP" placeholder="value" style="width: 200px;">
</div>
<div class="form-group">
<label for="addRRValueSerial">Serial</label>
<input type="number" class="form-control" id="addRRValueSerial" placeholder="value" style="width: 100px;">
</div>
<div class="form-group">
<label for="addRRValueRefresh">Refresh</label>
<input type="number" class="form-control" id="addRRValueRefresh" placeholder="value" style="width: 80px;">
</div>
<div class="form-group">
<label for="addRRValueRetry">Retry</label>
<input type="number" class="form-control" id="addRRValueRetry" placeholder="value" style="width: 80px;">
</div>
<div class="form-group">
<label for="addRRValueExpire">Expire</label>
<input type="number" class="form-control" id="addRRValueExpire" placeholder="value" style="width: 80px;">
</div>
<div class="form-group">
<label for="addRRValueMinimum">Minimum</label>
<input type="number" class="form-control" id="addRRValueMinimum" placeholder="value" style="width: 80px;">
</div>
<div class="form-group">
<label for="addRRTtl2">TTL</label>
<input type="number" class="form-control" id="addRRTtl2" placeholder="3600" style="width: 80px;">
</div>
<div class="form-group" style="display: block; margin-bottom: 0px;">
<button type="button" class="btn btn-primary">Update</button>
<button type="button" class="btn btn-warning">Delete</button>
</div>
</form>
</li>
<li class="list-group-item resource-record">
<form class="form-inline">
<div class="form-group">
<label for="optType3">Type</label>
<select class="form-control" id="optType3" disabled>
<option>A</option>
<option>NS</option>
<option>CNAME</option>
<option>SOA</option>
<option>PTR</option>
<option selected>MX</option>
<option>TXT</option>
<option>AAAA</option>
</select>
</div>
<div class="form-group">
<label for="addRRSubDomain3">Name</label>
<input type="text" class="form-control" id="addRRSubDomain3" placeholder="@" style="width: 136px;">
</div>
<div class="form-group">
<label for="addRRValue3">Exchange</label>
<input type="text" class="form-control" id="addRRValue3" placeholder="mx1.example.com" style="width: 250px;">
</div>
<div class="form-group">
<label for="addRRValuePref">Preference</label>
<input type="number" class="form-control" id="addRRValuePref" placeholder="10" style="width: 80px;">
</div>
<div class="form-group">
<label for="addRRTtl3">TTL</label>
<input type="number" class="form-control" id="addRRTtl3" placeholder="3600" style="width: 80px;">
</div>
<div class="form-group" style="display: block; margin-bottom: 0px;">
<button type="button" class="btn btn-primary">Update</button>
<button type="button" class="btn btn-warning">Delete</button>
</div>
</form>
</li>
<li class="list-group-item" id="addRecordFormItem">
<form class="form-inline">
<div class="form-group">
<label for="optAddRecordType">Type</label>
<select id="optAddRecordType" class="form-control" onchange="return modifyAddRecordForm();">
<option>A</option>
<option>NS</option>
<option>CNAME</option>
<option>PTR</option>
<option>MX</option>
<option>TXT</option>
<option>AAAA</option>
</select>
</div>
<div class="form-group">
<label for="txtAddRecordName">Name</label>
<input id="txtAddRecordName" type="text" class="form-control" placeholder="@" style="width: 136px;">
</div>
<div class="form-group" id="divAddRecordValue">
<label for="txtAddRecordValue">Value</label>
<input id="txtAddRecordValue" type="text" class="form-control" placeholder="value" style="width: 250px;">
</div>
<div class="form-group" id="divAddRecordMXExchange" style="display: none;">
<label for="txtAddRecordExchange">Exchange</label>
<input id="txtAddRecordExchange" type="text" class="form-control" placeholder="value" style="width: 250px;">
</div>
<div class="form-group" id="divAddRecordMXPreference" style="display: none;">
<label for="txtAddRecordPreference">Preference</label>
<input id="txtAddRecordPreference" type="number" class="form-control" placeholder="value" style="width: 80px;">
</div>
<div class="form-group">
<label for="txtAddRecordTtl">TTL</label>
<input id="txtAddRecordTtl" type="number" class="form-control" placeholder="3600" style="width: 80px;">
</div>
<div class="form-group" style="display: block; margin-bottom: 0px;">
<button id="btnAddRecord" type="button" class="btn btn-primary">Add</button>
</div>
</form>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="mainPanelTabPaneCachedZones" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
<div class="well well-sm zone-list-pane">
<div id="lstCachedZones" class="zones">
<div class="zone"><a href="#" onclick="return refreshCachedZonesList('technitium.com');">technitium.com</a></div>
</div>
</div>
<div id="divCachedZoneViewer" class="zone-viewer-pane">
<div class="panel panel-default">
<div class="panel-heading" style="height: 36px; padding: 4px 6px;">
<div id="txtCachedZoneViewerTitle" style="float: left; padding: 4px;">technitium.com</div>
<div style="float: right;">
<button id="btnDeleteCachedZone" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteCachedZone();" style="font-size: 12px; padding: 4px 6px;">Delete</button>
</div>
</div>
<div class="panel-body">
<pre id="preCachedZoneViewerBody">
</pre>
</div>
</div>
</div>
</div>
<div id="mainPanelTabPaneDnsClient" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
<form class="form-inline well">
<div class="form-group">
<label for="txtDnsClientNameServer">Server</label>
<div class="input-group dropdown">
<input type="text" class="form-control dropdown-toggle" style="width: 180px;" id="txtDnsClientNameServer" value="This Server (this-server)">
<ul class="dropdown-menu" id="optDnsClientNameServers">
<li><a href="#">This Server (this-server)</a></li>
<li><a href="#">Google (8.8.8.8)</a></li>
<li><a href="#">Google (8.8.4.4)</a></li>
<li><a href="#">IBM Quad9 Secure (9.9.9.9)</a></li>
<li><a href="#">IBM Quad9 Unsecure (9.9.9.10)</a></li>
<li><a href="#">OpenDNS (208.67.222.222)</a></li>
<li><a href="#">OpenDNS (208.67.220.220)</a></li>
<li><a href="#">Level3 (4.2.2.1)</a></li>
<li><a href="#">Level3 (4.2.2.2)</a></li>
<li><a href="#">Ultra (156.154.70.1)</a></li>
<li><a href="#">Ultra (156.154.71.1)</a></li>
<li><a href="#">Dyn (216.146.35.35)</a></li>
<li><a href="#">Dyn (216.146.36.36)</a></li>
<li><a href="#">Recursive Query Via Root Servers (root-servers)</a></li>
<li><a href="#">a.root-servers.net</a></li>
<li><a href="#">b.root-servers.net</a></li>
<li><a href="#">c.root-servers.net</a></li>
<li><a href="#">d.root-servers.net</a></li>
<li><a href="#">e.root-servers.net</a></li>
<li><a href="#">f.root-servers.net</a></li>
<li><a href="#">g.root-servers.net</a></li>
<li><a href="#">h.root-servers.net</a></li>
<li><a href="#">i.root-servers.net</a></li>
<li><a href="#">j.root-servers.net</a></li>
<li><a href="#">k.root-servers.net</a></li>
<li><a href="#">l.root-servers.net</a></li>
<li><a href="#">m.root-servers.net</a></li>
</ul>
<span role="button" class="input-group-addon dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span></span>
</div>
</div>
<div class="form-group">
<label for="txtDnsClientDomain">Domain</label>
<input type="text" class="form-control" style="width: 210px;" id="txtDnsClientDomain" placeholder="example.com">
</div>
<div class="form-group">
<label for="optDnsClientType">Type</label>
<select class="form-control" id="optDnsClientType">
<option>A</option>
<option>NS</option>
<option>CNAME</option>
<option>SOA</option>
<option>PTR</option>
<option>MX</option>
<option>TXT</option>
<option>AAAA</option>
<option>ANY</option>
</select>
</div>
<div class="form-group">
<label for="optDnsClientProtocol">Protocol</label>
<select class="form-control" id="optDnsClientProtocol">
<option>UDP</option>
<option>TCP</option>
</select>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" id="btnDnsClientResolve" data-loading-text="Resolving..." onclick="return resolveQuery();" style="margin-right: 6px;">Resolve</button>
<button type="button" class="btn btn-warning" id="btnDnsClientImport" data-loading-text="Importing..." onclick="return resolveQuery(true);">Import</button>
</div>
</form>
<div id="divDnsClientLoader" style="margin-top: 20px; height: 300px;"></div>
<pre id="preDnsClientOutput" style="display: none;"></pre>
</div>
<div id="mainPanelTabPaneSettings" role="tabpanel" class="tab-pane">
<div id="divDnsSettingsLoader" style="margin-top: 10px; height: 400px;"></div>
<div id="divDnsSettings" style="display: none;">
<form style="margin-top: 10px;" class="form-horizontal" onsubmit="return false;">
<div class="well well-sm">
<div class="form-group">
<label for="txtServerDomain" class="col-sm-3 control-label">Server Domain</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="txtServerDomain" placeholder="Domain Name">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Web Service Port</label>
<div class="col-sm-6">
<input type="number" class="form-control" id="txtWebServicePort" placeholder="Web Service Port">
<br />
<div>To apply web service port changes, you need to manually restart the main service.</div>
</div>
</div>
</div>
</form>
<form style="margin-top: 10px;" onsubmit="return false;">
<div class="well well-sm">
<div class="form-group">
<div class="checkbox">
<label>
<input id="chkPreferIPv6" type="checkbox"> Prefer IPv6
</label>
</div>
<div>Use this option only if this DNS server has native IPv6 Internet access. DNS Server will use IPv6 for querying whenever possible with this option enabled.</div>
</div>
</div>
<div class="well well-sm">
<div class="form-group">
<div class="checkbox">
<label>
<input id="chkLogQueries" type="checkbox"> Log All Queries
</label>
</div>
<div>Use this option to log every query received by this Dns Server and the corresponding response answers into the log file. Enabling this option will significantly increase the log file size. Error and audit logs are enabled by default.</div>
</div>
</div>
<div class="well well-sm">
<div class="form-group">
<div class="checkbox">
<label>
<input id="chkAllowRecursion" type="checkbox"> Allow Recursion
</label>
</div>
<div>Enabling recursion will allow this DNS server to resolve any domain and act as a general purpose DNS server. Disable this option if you wish this server to act only as authoritative name server for the configured zones.</div>
</div>
<div class="form-group">
<label for="txtForwarders">Forwarders</label>
<textarea id="txtForwarders" class="form-control" style="width: 250px; margin-bottom: 10px;" rows="3"></textarea>
<div>Enter forwarder DNS Server IP addresses one below another in above text field. Forwarders are DNS servers which this DNS Server should use to resolve recursive queries. If no forwarders are configured then this DNS server will use preconfigured ROOT SERVERS.</div>
</div>
</div>
<div class="form-group" style="margin-bottom: 0px;">
<button id="btnSaveDnsSettings" type="button" class="btn btn-primary" data-loading-text="Saving..." onclick="return saveDnsSettings();" style="margin-right: 6px;">Save Settings</button>
<button id="btnFlushDnsCache" type="button" class="btn btn-warning" data-loading-text="Flushing..." onclick="return flushDnsCache();">Flush Cache</button>
</div>
</form>
</div>
</div>
<div id="mainPanelTabPaneLogs" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
<div class="well well-sm log-list-pane">
<div id="lstLogFiles" class="logs">
<div class="log"><a href="#" onclick="return viewLog('20171012');">20171012</a></div>
</div>
</div>
<div id="divLogViewer" class="log-viewer-pane">
<div class="panel panel-default">
<div class="panel-heading" style="height: 36px; padding: 4px 6px;">
<div id="txtLogViewerTitle" style="float: left; padding: 4px;">20171012</div>
<div style="float: right;">
<button type="button" class="btn btn-default" data-loading-text="Download" onclick="return downloadLog();" style="font-size: 12px; padding: 4px 6px;">Download</button>
<button id="btnDeleteLog" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteLog();" style="font-size: 12px; padding: 4px 6px;">Delete</button>
</div>
</div>
<div class="panel-body">
<div id="divLogViewerLoader" style="margin-top: 20px; height: 400px;"></div>
<pre id="preLogViewerBody" style="display: none;">
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="modalChangePassword" class="modal fade" tabindex="-1" role="dialog">
<form class="form-horizontal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Change Password</h4>
</div>
<div class="modal-body">
<div id="divChangePasswordAlert"></div>
<div class="form-group">
<label for="txtChangePasswordUsername" class="col-sm-4 control-label">Username</label>
<div class="col-sm-7">
<input id="txtChangePasswordUsername" type="text" class="form-control" placeholder="username" disabled>
</div>
</div>
<div class="form-group">
<label for="txtChangePasswordNewPassword" class="col-sm-4 control-label">New Password</label>
<div class="col-sm-7">
<input id="txtChangePasswordNewPassword" type="password" class="form-control" placeholder="new password">
</div>
</div>
<div class="form-group">
<label for="txtChangePasswordConfirmPassword" class="col-sm-4 control-label">Confirm Password</label>
<div class="col-sm-7">
<input id="txtChangePasswordConfirmPassword" type="password" class="form-control" placeholder="confirm password">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="btnChangePasswordSave" type="submit" class="btn btn-primary" data-loading-text="Saving..." onclick="return changePassword();">Save</button>
</div>
</div>
</div>
</form>
</div>
<div id="footer"></div>
</body>
</html>