mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-01-05 16:24:52 +00:00
1365 lines
116 KiB
HTML
1365 lines
116 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="robots" content="noindex, nofollow" />
|
|
|
|
<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>
|
|
<script src="/js/Chart.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" style="margin-bottom: 0px;">
|
|
<div class="col-sm-offset-3 col-sm-4">
|
|
<button id="btnLogin" type="submit" class="btn btn-primary" data-loading-text="Working..." onclick="return login();">Login</button>
|
|
</div>
|
|
<div class="col-sm-4" style="padding: 6px; text-align: right;">
|
|
<a href="#" data-toggle="modal" data-target="#modalForgotPassword">Forgot Password?</a>
|
|
</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="mainPanelTabListDashboard" role="presentation" class="active"><a href="#mainPanelTabPaneDashboard" aria-controls="mainPanelTabPaneDashboard" role="tab" data-toggle="tab" onclick="return refreshDashboard();">Dashboard</a></li>
|
|
<li id="mainPanelTabListZones" role="presentation"><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="mainPanelTabListAllowedZones" role="presentation"><a href="#mainPanelTabPaneAllowedZones" aria-controls="mainPanelTabPaneAllowedZones" role="tab" data-toggle="tab" onclick="return false;">Allowed Zones</a></li>
|
|
<li id="mainPanelTabListBlockedZones" role="presentation"><a href="#mainPanelTabPaneBlockedZones" aria-controls="mainPanelTabPaneBlockedZones" role="tab" data-toggle="tab" onclick="return false;">Blocked Zones</a></li>
|
|
<li id="mainPanelTabListDnsClient" role="presentation"><a href="#mainPanelTabPaneDnsClient" aria-controls="mainPanelTabPaneDnsClient" 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>
|
|
<li id="mainPanelTabListAbout" role="presentation"><a href="#mainPanelTabPaneAbout" aria-controls="mainPanelTabPaneAbout" role="tab" data-toggle="tab">About</a></li>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
|
|
<div id="mainPanelTabPaneDashboard" role="tabpanel" class="tab-pane active" style="padding: 10px 0 0 0;">
|
|
<div class="btn-group" data-toggle="buttons">
|
|
<label class="btn btn-default active">
|
|
<input type="radio" name="rdStatType" value="lastHour" autocomplete="off" checked> Last Hour
|
|
</label>
|
|
<label class="btn btn-default">
|
|
<input type="radio" name="rdStatType" value="lastDay" autocomplete="off"> Last Day
|
|
</label>
|
|
<label class="btn btn-default">
|
|
<input type="radio" name="rdStatType" value="lastWeek" autocomplete="off"> Last Week
|
|
</label>
|
|
<label class="btn btn-default">
|
|
<input type="radio" name="rdStatType" value="lastMonth" autocomplete="off"> Last Month
|
|
</label>
|
|
<label class="btn btn-default">
|
|
<input type="radio" name="rdStatType" value="lastYear" autocomplete="off"> Last Year
|
|
</label>
|
|
</div>
|
|
|
|
<div id="divDashboardLoader" style="margin-top: 10px; height: 400px;"></div>
|
|
|
|
<div id="divDashboard" style="display: none;">
|
|
<div class="stats-panel">
|
|
<div class="stats-item total-queries">
|
|
<div class="number" id="divDashboardStatsTotalQueries">100</div>
|
|
<div class="percentage">100%</div>
|
|
<div class="title">Total Queries</div>
|
|
</div>
|
|
|
|
<div class="stats-item cache-hit">
|
|
<div class="number" id="divDashboardStatsTotalCacheHit">10</div>
|
|
<div class="percentage" id="divDashboardStatsTotalCacheHitPercentage">0%</div>
|
|
<div class="title">Cache Hit</div>
|
|
</div>
|
|
|
|
<div class="stats-item no-error">
|
|
<div class="number" id="divDashboardStatsTotalNoError">70</div>
|
|
<div class="percentage" id="divDashboardStatsTotalNoErrorPercentage">0%</div>
|
|
<div class="title">No Error</div>
|
|
</div>
|
|
|
|
<div class="stats-item server-failure">
|
|
<div class="number" id="divDashboardStatsTotalServerFailure">5</div>
|
|
<div class="percentage" id="divDashboardStatsTotalServerFailurePercentage">0%</div>
|
|
<div class="title">Server Failure</div>
|
|
</div>
|
|
|
|
<div class="stats-item name-error">
|
|
<div class="number" id="divDashboardStatsTotalNameError">5</div>
|
|
<div class="percentage" id="divDashboardStatsTotalNameErrorPercentage">0%</div>
|
|
<div class="title">Name Error</div>
|
|
</div>
|
|
|
|
<div class="stats-item refused">
|
|
<div class="number" id="divDashboardStatsTotalRefused">10</div>
|
|
<div class="percentage" id="divDashboardStatsTotalRefusedPercentage">0%</div>
|
|
<div class="title">Refused</div>
|
|
</div>
|
|
|
|
<div class="stats-item blocked">
|
|
<div class="number" id="divDashboardStatsTotalBlocked">10</div>
|
|
<div class="percentage" id="divDashboardStatsTotalBlockedPercentage">0%</div>
|
|
<div class="title">Blocked</div>
|
|
</div>
|
|
|
|
<div class="stats-item clients">
|
|
<div class="number" id="divDashboardStatsTotalClients">10</div>
|
|
<div class="percentage"> </div>
|
|
<div class="title">Clients</div>
|
|
</div>
|
|
|
|
<div class="stats-item allowedZones">
|
|
<div class="number" id="divDashboardStatsAllowedZones">10</div>
|
|
<div class="percentage"> </div>
|
|
<div class="title">Allowed Zones</div>
|
|
</div>
|
|
|
|
<div class="stats-item blockedZones">
|
|
<div class="number" id="divDashboardStatsBlockedZones">10</div>
|
|
<div class="percentage"> </div>
|
|
<div class="title">Blocked Zones</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<canvas id="canvasDashboardMain" style="margin: 10px 0 10px 0;"></canvas>
|
|
</div>
|
|
|
|
<div style="margin-top: 15px;">
|
|
<div style="float: left; width: 50%; padding-right: 7px;">
|
|
<div class="panel panel-default" style="margin-bottom: 0px;">
|
|
<div class="panel-heading">Top Query Type</div>
|
|
<div class="panel-body">
|
|
<canvas id="canvasDashboardPie"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="float: right; width: 50%; padding-left: 7px;">
|
|
<div class="panel panel-default" style="margin-bottom: 0px;">
|
|
<div class="panel-heading">Top Clients</div>
|
|
<table class="table table-hover" id="tableTopClients">
|
|
<thead>
|
|
<tr>
|
|
<th>Client</th>
|
|
<th>Queries</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>127.0.0.1</td>
|
|
<td>100</td>
|
|
</tr>
|
|
<tr>
|
|
<td>::1</td>
|
|
<td>10</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="clear: both;"></div>
|
|
</div>
|
|
|
|
<div style="margin-top: 15px;">
|
|
<div style="float: left; width: 50%; padding-right: 7px;">
|
|
<div class="panel panel-default" style="margin-bottom: 0px;">
|
|
<div class="panel-heading">Top Domains</div>
|
|
<table class="table table-hover" id="tableTopDomains">
|
|
<thead>
|
|
<tr>
|
|
<th>Domain</th>
|
|
<th>Hits</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>example.com</td>
|
|
<td>10</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="float: right; width: 50%; padding-left: 7px;">
|
|
<div class="panel panel-default" style="margin-bottom: 0px;">
|
|
<div class="panel-heading">Top Blocked Domains</div>
|
|
<table class="table table-hover" id="tableTopBlockedDomains">
|
|
<thead>
|
|
<tr>
|
|
<th>Domain</th>
|
|
<th>Hits</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>blocked.example.com</td>
|
|
<td>10</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="clear: both;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="mainPanelTabPaneZones" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
|
|
|
|
<div class="well well-sm zone-list-pane">
|
|
<form class="form-inline">
|
|
<div class="form-group" style="width: 100%">
|
|
<input type="text" class="form-control" style="width: inherit;" id="txtAddZone" placeholder="example.com">
|
|
</div>
|
|
<div class="form-group">
|
|
<button id="btnAddZone" type="submit" class="btn btn-primary" data-loading-text="Add" onclick="return addZone();">Add</button>
|
|
<button id="btnBrowseZone" type="button" class="btn btn-default" data-loading-text="Browse" onclick="return viewZone($('#txtAddZone').val());">Browse</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 selected>SOA</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 selected>MX</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 resource-record">
|
|
<form class="form-inline">
|
|
<div class="form-group">
|
|
<label for="optType4">Type</label>
|
|
<select class="form-control" id="optType4" disabled>
|
|
<option selected>SRV</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRSubDomain4">Name</label>
|
|
<input type="text" class="form-control" id="addRRSubDomain4" placeholder="@" style="width: 136px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValueService">Service</label>
|
|
<input type="text" class="form-control" id="addRRValueService" placeholder="service" style="width: 136px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValueProtocol">Protocol</label>
|
|
<input type="text" class="form-control" id="addRRValueProtocol" placeholder="protocol" style="width: 250px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValuePriority">Priority</label>
|
|
<input type="number" class="form-control" id="addRRValuePriority" placeholder="priority" style="width: 100px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValueWeight">Weight</label>
|
|
<input type="number" class="form-control" id="addRRValueWeight" placeholder="weight" style="width: 80px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValuePort">Port</label>
|
|
<input type="number" class="form-control" id="addRRValuePort" placeholder="port" style="width: 80px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRValueTarget">Target</label>
|
|
<input type="text" class="form-control" id="addRRValueTarget" placeholder="target" style="width: 200px;">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="addRRTtl4">TTL</label>
|
|
<input type="number" class="form-control" id="addRRTtl4" 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>
|
|
<option>SRV</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group" id="divAddRecordName">
|
|
<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" id="divAddRecordSRVService" style="display: none;">
|
|
<label for="txtAddRecordSRVService">Service</label>
|
|
<input type="text" class="form-control" id="txtAddRecordSRVService" placeholder="service" style="width: 136px;">
|
|
</div>
|
|
<div class="form-group" id="divAddRecordSRVProtocol" style="display: none;">
|
|
<label for="txtAddRecordSRVProtocol">Protocol</label>
|
|
<input type="text" class="form-control" id="txtAddRecordSRVProtocol" placeholder="protocol" style="width: 250px;">
|
|
</div>
|
|
<div class="form-group" id="divAddRecordSRVPriority" style="display: none;">
|
|
<label for="txtAddRecordSRVPriority">Priority</label>
|
|
<input type="number" class="form-control" id="txtAddRecordSRVPriority" placeholder="priority" style="width: 100px;">
|
|
</div>
|
|
<div class="form-group" id="divAddRecordSRVWeight" style="display: none;">
|
|
<label for="txtAddRecordSRVWeight">Weight</label>
|
|
<input type="number" class="form-control" id="txtAddRecordSRVWeight" placeholder="weight" style="width: 80px;">
|
|
</div>
|
|
<div class="form-group" id="divAddRecordSRVPort" style="display: none;">
|
|
<label for="txtAddRecordSRVPort">Port</label>
|
|
<input type="number" class="form-control" id="txtAddRecordSRVPort" placeholder="port" style="width: 80px;">
|
|
</div>
|
|
<div class="form-group" id="divAddRecordSRVTarget" style="display: none;">
|
|
<label for="txtAddRecordSRVTarget">Target</label>
|
|
<input type="text" class="form-control" id="txtAddRecordSRVTarget" placeholder="target" style="width: 200px;">
|
|
</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">
|
|
<form class="form-inline">
|
|
<div class="form-group" style="width: 100%">
|
|
<input type="text" class="form-control" style="width: inherit;" id="txtCacheZone" placeholder="example.com">
|
|
</div>
|
|
<div class="form-group">
|
|
<button id="btnBrowseCacheZone" type="submit" class="btn btn-primary" data-loading-text="Browse" onclick="return refreshCachedZonesList($('#txtCacheZone').val());">Browse</button>
|
|
</div>
|
|
</form>
|
|
|
|
<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="mainPanelTabPaneAllowedZones" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
|
|
|
|
<div class="well well-sm zone-list-pane">
|
|
<form class="form-inline">
|
|
<div class="form-group" style="width: 100%">
|
|
<input type="text" class="form-control" style="width: inherit;" id="txtAllowZone" placeholder="example.com">
|
|
</div>
|
|
<div class="form-group">
|
|
<button id="btnAllowZone" type="submit" class="btn btn-primary" data-loading-text="Allow" onclick="return allowZone();">Allow</button>
|
|
<button id="btnBrowseAllowZone" type="button" class="btn btn-default" data-loading-text="Browse" onclick="return refreshAllowedZonesList($('#txtAllowZone').val());">Browse</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="lstAllowedZones" class="zones">
|
|
<div class="zone"><a href="#" onclick="return refreshAllowedZonesList('technitium.com');">technitium.com</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="divAllowedZoneViewer" class="zone-viewer-pane">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading" style="height: 36px; padding: 4px 6px;">
|
|
<div id="txtAllowedZoneViewerTitle" style="float: left; padding: 4px;">technitium.com</div>
|
|
<div style="float: right;">
|
|
<button id="btnImportAllowedZone" type="button" class="btn btn-default" data-loading-text="Import" onclick="return resetImportAllowedZonesModal();" data-toggle="modal" data-target="#modalImportAllowedZones" style="font-size: 12px; padding: 4px 6px;">Import</button>
|
|
<button id="btnExportAllowedZone" type="button" class="btn btn-default" data-loading-text="Export" onclick="return exportAllowedZones();" style="font-size: 12px; padding: 4px 6px;">Export</button>
|
|
<button id="btnDeleteAllowedZone" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteAllowedZone();" style="font-size: 12px; padding: 4px 6px;">Delete</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
<pre id="preAllowedZoneViewerBody">
|
|
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="mainPanelTabPaneBlockedZones" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
|
|
|
|
<div class="well well-sm zone-list-pane">
|
|
<form class="form-inline">
|
|
<div class="form-group" style="width: 100%">
|
|
<input type="text" class="form-control" style="width: inherit;" id="txtBlockZone" placeholder="example.com">
|
|
</div>
|
|
<div class="form-group">
|
|
<button id="btnCustomBlockZone" type="submit" class="btn btn-primary" data-loading-text="Block" onclick="return customBlockZone();">Block</button>
|
|
<button id="btnBrowseBlockZone" type="button" class="btn btn-default" data-loading-text="Browse" onclick="return refreshBlockedZonesList($('#txtBlockZone').val());">Browse</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="lstBlockedZones" class="zones">
|
|
<div class="zone"><a href="#" onclick="return refreshBlockedZonesList('technitium.com');">technitium.com</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="divBlockedZoneViewer" class="zone-viewer-pane">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading" style="height: 36px; padding: 4px 6px;">
|
|
<div id="txtBlockedZoneViewerTitle" style="float: left; padding: 4px;">technitium.com</div>
|
|
<div style="float: right;">
|
|
<button id="btnImportBlockedZone" type="button" class="btn btn-default" data-loading-text="Import" onclick="return resetImportCustomBlockedZonesModal();" data-toggle="modal" data-target="#modalImportCustomBlockedZones" style="font-size: 12px; padding: 4px 6px;">Import</button>
|
|
<button id="btnExportBlockedZone" type="button" class="btn btn-default" data-loading-text="Export" onclick="return exportCustomBlockedZones();" style="font-size: 12px; padding: 4px 6px;">Export</button>
|
|
<button id="btnDeleteCustomBlockedZone" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteCustomBlockedZone();" style="font-size: 12px; padding: 4px 6px;">Delete</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
<pre id="preBlockedZoneViewerBody">
|
|
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="mainPanelTabPaneDnsClient" role="tabpanel" class="tab-pane" style="padding: 10px 0 0 0;">
|
|
|
|
<form class="form-inline well" style="padding-bottom: 6px;">
|
|
<div class="form-group">
|
|
<label for="txtDnsClientNameServer">Server</label>
|
|
<div class="input-group dropdown">
|
|
<input type="text" class="form-control dropdown-toggle" style="width: 240px;" 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="#">Recursive Query (recursive-resolver)</a></li>
|
|
<li><a href="#">Cloudflare (1.1.1.1)</a></li>
|
|
<li><a href="#">Cloudflare (1.0.0.1)</a></li>
|
|
<li><a href="#">Cloudflare ([2606:4700:4700::1111])</a></li>
|
|
<li><a href="#">Cloudflare ([2606:4700:4700::1001])</a></li>
|
|
<li><a href="#">Cloudflare TLS (cloudflare-dns.com (1.1.1.1:853))</a></li>
|
|
<li><a href="#">Cloudflare TLS (cloudflare-dns.com (1.0.0.1:853))</a></li>
|
|
<li><a href="#">Cloudflare TLS (cloudflare-dns.com ([2606:4700:4700::1111]:853))</a></li>
|
|
<li><a href="#">Cloudflare TLS (cloudflare-dns.com ([2606:4700:4700::1001]:853))</a></li>
|
|
<li><a href="#">Cloudflare HTTPS (https://cloudflare-dns.com/dns-query)</a></li>
|
|
<li><a href="#">Cloudflare HTTPS-JSON (https://cloudflare-dns.com/dns-query)</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="#">Google ([2001:4860:4860::8888])</a></li>
|
|
<li><a href="#">Google ([2001:4860:4860::8844])</a></li>
|
|
<li><a href="#">Google TLS (dns.google (8.8.8.8:853))</a></li>
|
|
<li><a href="#">Google TLS (dns.google (8.8.4.4:853))</a></li>
|
|
<li><a href="#">Google TLS (dns.google ([2001:4860:4860::8888]:853))</a></li>
|
|
<li><a href="#">Google TLS (dns.google ([2001:4860:4860::8844]:853))</a></li>
|
|
<li><a href="#">Google HTTPS-JSON (https://dns.google.com/resolve)</a></li>
|
|
<li><a href="#">Quad9 Secure (9.9.9.9)</a></li>
|
|
<li><a href="#">Quad9 Secure ([2620:fe::fe])</a></li>
|
|
<li><a href="#">Quad9 Secure TLS (dns.quad9.net (9.9.9.9:853))</a></li>
|
|
<li><a href="#">Quad9 Secure TLS (dns.quad9.net ([2620:fe::fe]:853))</a></li>
|
|
<li><a href="#">Quad9 Secure HTTPS (https://dns.quad9.net/dns-query)</a></li>
|
|
<li><a href="#">Quad9 Unsecure (9.9.9.10)</a></li>
|
|
<li><a href="#">Quad9 Unsecure ([2620:fe::10])</a></li>
|
|
<li><a href="#">Quad9 Unsecure HTTPS (https://dns10.quad9.net/dns-query)</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="#">OpenDNS ([2620:0:ccc::2])</a></li>
|
|
<li><a href="#">OpenDNS ([2620:0:ccd::2])</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="#">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: 260px;" 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>SRV</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>
|
|
<option>TLS</option>
|
|
<option value="Https">HTTPS</option>
|
|
<option value="HttpsJson">HTTPS (JSON)</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;" onsubmit="return false;">
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label for="txtServerDomain" class="col-sm-3 control-label">DNS Server Domain</label>
|
|
<div class="col-sm-6">
|
|
<input type="text" class="form-control" id="txtServerDomain" placeholder="Domain Name">
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">The primary domain name used by this DNS Server to identify itself.</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtdnsServerLocalAddresses" class="col-sm-3 control-label">DNS Server Local Addresses</label>
|
|
<div class="col-sm-6">
|
|
<textarea id="txtdnsServerLocalAddresses" class="form-control" rows="3"></textarea>
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">Local addresses are the network interface IP addresses you want the DNS Server to listen for requests.</div>
|
|
</div>
|
|
|
|
<div>To apply DNS Server local address changes, you will need to manually restart the main service.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label for="txtWebServicePort" 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" style="width: 100px;">
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">Specify the TCP port number for this web console.</div>
|
|
</div>
|
|
|
|
<div>To apply web service port changes, you will need to manually restart the main service.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">Optional DNS Server Protocols</label>
|
|
<div class="col-sm-8">
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkEnableDnsOverHttp" type="checkbox"> Enable DNS-over-HTTP
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable this option to accept DNS-over-HTTP requests for both wire and json response formats. It must be used with a TLS terminating reverse proxy like nginx and will work only on private networks.</div>
|
|
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkEnableDnsOverTls" type="checkbox"> Enable DNS-over-TLS
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable this option to accept DNS-over-TLS requests.</div>
|
|
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkEnableDnsOverHttps" type="checkbox"> Enable DNS-over-HTTPS
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable this option to accept DNS-over-HTTPS requests for both wire and json response formats.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtTlsCertificatePath" class="col-sm-3 control-label">TLS Certificate File Path</label>
|
|
<div class="col-sm-6">
|
|
<input type="text" class="form-control" id="txtTlsCertificatePath" placeholder="TLS Certificate File Path On Server">
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">Specify a PKCS #12 certificate (.pfx) file path on the server. The certificate must contain private key.</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtTlsCertificatePassword" class="col-sm-3 control-label">TLS Certificate Password</label>
|
|
<div class="col-sm-6">
|
|
<input type="password" class="form-control" id="txtTlsCertificatePassword" placeholder="TLS Certificate Password">
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">Enter the certificate (.pfx) password, if any.</div>
|
|
</div>
|
|
|
|
<div>To enable or disable these protocols, you will need to manually restart the main service. For DNS-over-HTTP, use <i>http://<span id="lblDoHHost">localhost:8053</span>/dns-query</i> with a TLS terminating reverse proxy like nginx. For DNS-over-TLS, use <i>tls-certificate-domain:853</i> and for DNS-over-HTTPS use <i>https://tls-certificate-domain/dns-query</i> to configure supported DNS clients.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">IPv6 Support</label>
|
|
<div class="col-sm-8">
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkPreferIPv6" type="checkbox"> Prefer IPv6
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">DNS Server will use IPv6 for querying whenever possible with this option enabled.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>Use this option only if this DNS server has native IPv6 Internet access otherwise it will affect performance.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">Logging</label>
|
|
<div class="col-sm-8">
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkLogQueries" type="checkbox"> Log All Queries
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable this option to log every query received by this DNS Server and the corresponding response answers into the log file.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>Enabling query logging will significantly increase the log file size. Error and audit logs are enabled by default.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">Recursive Resolver</label>
|
|
<div class="col-sm-8">
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkAllowRecursion" type="checkbox"> Allow Recursion
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable recursion to allow this DNS Server to resolve any domain name.</div>
|
|
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkAllowRecursionOnlyForPrivateNetworks" type="checkbox"> Allow Recursion Only For Private Networks
|
|
</label>
|
|
</div>
|
|
<div style="padding-top: 5px;">Enable this option if you want to support recursion only on private networks. Any recursive request from public network will be refused.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>Disable recursion if you wish this server to act only as authoritative name server for the configured zones.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label for="txtCachePrefetchEligibility" class="col-sm-3 control-label">Prefetch Eligibility</label>
|
|
<div class="col-sm-6">
|
|
<input type="number" class="form-control" id="txtCachePrefetchEligibility" placeholder="eligibility" style="width: 100px; display: inline;">
|
|
<span>(recommended 2)</span>
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">The minimum initial TTL value of a record needed to be eligible for prefetching.</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtCachePrefetchTrigger" class="col-sm-3 control-label">Prefetch Trigger</label>
|
|
<div class="col-sm-6">
|
|
<input type="number" class="form-control" id="txtCachePrefetchTrigger" placeholder="trigger" style="width: 100px; display: inline;">
|
|
<span>(recommended 9; set 0 to completely disable prefetching)</span>
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">A record with TTL value less than trigger value will initiate prefetch operation immediately for itself.</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtCachePrefetchSampleIntervalInMinutes" class="col-sm-3 control-label">Auto Prefetch Sample Interval</label>
|
|
<div class="col-sm-6">
|
|
<input type="number" class="form-control" id="txtCachePrefetchSampleIntervalInMinutes" placeholder="interval" style="width: 100px; display: inline;">
|
|
<span>minutes (valid range 1-60; default 5)</span>
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">The interval to sample eligible domain names from last hour stats for auto prefetch.</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtCachePrefetchSampleEligibilityHitsPerHour" class="col-sm-3 control-label">Auto Prefetch Sample Eligibility</label>
|
|
<div class="col-sm-6">
|
|
<input type="number" class="form-control" id="txtCachePrefetchSampleEligibilityHitsPerHour" placeholder="hits" style="width: 100px; display: inline;">
|
|
<span>hits/hour (default 30)</span>
|
|
</div>
|
|
<label class="col-sm-3 control-label"> </label>
|
|
<div class="col-sm-8" style="padding-top: 5px;">Minimum required hits per hour for a domain name to be eligible for auto prefetch.</div>
|
|
</div>
|
|
|
|
<div>The DNS Server cache auto prefetch option can keep eligible domain names from last hour stats "hot" in cache. Sample eligibility value can be decided by keeping an eye on the hits shown for last hour on the dashboard. Experiment with sample interval and sample eligibility to get best results.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label for="txtBlockListUrls" class="col-sm-3 control-label">Block List URLs</label>
|
|
<div class="col-sm-6">
|
|
<textarea id="txtBlockListUrls" class="form-control" rows="7"></textarea>
|
|
|
|
<label for="optQuickBlockList" class="control-label">Quick Add</label>
|
|
<select id="optQuickBlockList" style="width: 100%;">
|
|
<option value="blank" selected></option>
|
|
<option value="none">None</option>
|
|
<option value="default">Default</option>
|
|
|
|
<option id="optCustomLocalBlockList" value="http://localhost:5380/blocklist.txt">Custom Local Block List (http://localhost:5380/blocklist.txt)</option>
|
|
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts">Steven Black [adware + malware] (https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts">Steven Black [adware + malware + fakenews] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts">Steven Black [adware + malware + gambling] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts">Steven Black [adware + malware + porn] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/social/hosts">Steven Black [adware + malware + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts">Steven Black [adware + malware + fakenews + gambling] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-porn/hosts">Steven Black [adware + malware + fakenews + porn] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-porn/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-social/hosts">Steven Black [adware + malware + fakenews + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn/hosts">Steven Black [adware + malware + gambling + porn] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-social/hosts">Steven Black [adware + malware + gambling + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn-social/hosts">Steven Black [adware + malware + porn + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts">Steven Black [adware + malware + fakenews + gambling + porn] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts">Steven Black [adware + malware + fakenews + gambling + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-porn-social/hosts">Steven Black [adware + malware + fakenews + porn + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-porn-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn-social/hosts">Steven Black [adware + malware + gambling + porn + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling-porn-social/hosts)</option>
|
|
<option value="https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts">Steven Black [adware + malware + fakenews + gambling + porn + social] (https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts)</option>
|
|
|
|
<option value="https://mirror1.malwaredomains.com/files/justdomains">Malware Domains (https://mirror1.malwaredomains.com/files/justdomains)</option>
|
|
<option value="https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist">Zeus Tracker (https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist)</option>
|
|
|
|
<option value="https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt">Disconnect.me [tracking] (https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt)</option>
|
|
<option value="https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt">Disconnect.me [ads] (https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt)</option>
|
|
|
|
<option value="https://hosts-file.net/ad_servers.txt">hosts-file.net [ad/tracking] (https://hosts-file.net/ad_servers.txt)</option>
|
|
<option value="https://hosts-file.net/emd.txt">hosts-file.net [malware] (https://hosts-file.net/emd.txt)</option>
|
|
<option value="https://hosts-file.net/exp.txt">hosts-file.net [exploit] (https://hosts-file.net/exp.txt)</option>
|
|
<option value="https://hosts-file.net/fsa.txt">hosts-file.net [fraud] (https://hosts-file.net/fsa.txt)</option>
|
|
<option value="https://hosts-file.net/grm.txt">hosts-file.net [spam] (https://hosts-file.net/grm.txt)</option>
|
|
<option value="https://hosts-file.net/hjk.txt">hosts-file.net [hijack] (https://hosts-file.net/hjk.txt)</option>
|
|
<option value="https://hosts-file.net/mmt.txt">hosts-file.net [misleading marketing] (https://hosts-file.net/mmt.txt)</option>
|
|
<option value="https://hosts-file.net/pha.txt">hosts-file.net [illegal pharmacy] (https://hosts-file.net/pha.txt)</option>
|
|
<option value="https://hosts-file.net/psh.txt">hosts-file.net [phishing] (https://hosts-file.net/psh.txt)</option>
|
|
<option value="https://hosts-file.net/pup.txt">hosts-file.net [potentially unwanted programs] (https://hosts-file.net/pup.txt)</option>
|
|
<option value="https://hosts-file.net/wrz.txt">hosts-file.net [warez/piracy] (https://hosts-file.net/wrz.txt)</option>
|
|
</select>
|
|
|
|
<div style="margin-top: 10px;">Enter block list URL one below another in the above text field or use the Quick Add list to add known block list URLs.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-top: 10px;">DNS Server will use the data returned by the block list URLs to update the blocked zone automatically every 24 hours. The expected file format is standard <i>hosts</i> file format or plain text file containing list of domains to block.</div>
|
|
<div style="margin-top: 10px;"><a href="https://blog.technitium.com/2018/10/blocking-internet-ads-using-dns-sinkhole.html" target="_blank">Help: Blocking Internet Ads Using DNS Sinkhole</a></div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">Network Proxy</label>
|
|
<div class="col-sm-6">
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdProxyType" id="rdProxyTypeNone" value="None" checked>
|
|
No Proxy (default)
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdProxyType" id="rdProxyTypeHttp" value="Http">
|
|
HTTP Proxy
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdProxyType" id="rdProxyTypeSocks5" value="Socks5">
|
|
SOCKS5 Proxy
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtProxyAddress" class="col-sm-3 control-label">Proxy Address</label>
|
|
<div class="col-sm-6">
|
|
<input type="text" class="form-control" id="txtProxyAddress" placeholder="Proxy Server Address">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtProxyPort" class="col-sm-3 control-label">Proxy Port</label>
|
|
<div class="col-sm-6">
|
|
<input type="number" class="form-control" id="txtProxyPort" placeholder="Proxy Server Port" style="width: 170px;">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtProxyUsername" class="col-sm-3 control-label">Username</label>
|
|
<div class="col-sm-6">
|
|
<input type="text" class="form-control" id="txtProxyUsername" placeholder="Proxy Server Username">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="txtProxyPassword" class="col-sm-3 control-label">Password</label>
|
|
<div class="col-sm-6">
|
|
<input type="password" class="form-control" id="txtProxyPassword" placeholder="Proxy Server Password">
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-top: 10px;">When proxy server is configured, DNS Server will use it for all outbound network requests.</div>
|
|
</div>
|
|
|
|
<div class="well well-sm form-horizontal">
|
|
<div class="form-group">
|
|
<label for="txtForwarders" class="col-sm-3 control-label">Forwarders</label>
|
|
<div class="col-sm-6">
|
|
<textarea id="txtForwarders" class="form-control" rows="3"></textarea>
|
|
|
|
<label for="optQuickForwarders" class="control-label">Quick Select</label>
|
|
<select id="optQuickForwarders" style="width: 100%;">
|
|
<option value="blank" selected></option>
|
|
<option value="none">None</option>
|
|
|
|
<option value="cloudflare-udp">Cloudflare (DNS-over-UDP)</option>
|
|
<option value="cloudflare-udp-ipv6">Cloudflare (DNS-over-UDP IPv6)</option>
|
|
<option value="cloudflare-tcp">Cloudflare (DNS-over-TCP)</option>
|
|
<option value="cloudflare-tcp-ipv6">Cloudflare (DNS-over-TCP IPv6)</option>
|
|
<option value="cloudflare-tls">Cloudflare (DNS-over-TLS)</option>
|
|
<option value="cloudflare-tls-ipv6">Cloudflare (DNS-over-TLS IPv6)</option>
|
|
<option value="cloudflare-https">Cloudflare (DNS-over-HTTPS)</option>
|
|
<option value="cloudflare-json">Cloudflare (DNS-over-HTTPS-JSON)</option>
|
|
<option value="cloudflare-tor">Cloudflare (DNS-over-TOR!)</option>
|
|
|
|
<option value="google-udp">Google (DNS-over-UDP)</option>
|
|
<option value="google-udp-ipv6">Google (DNS-over-UDP IPv6)</option>
|
|
<option value="google-tcp">Google (DNS-over-TCP)</option>
|
|
<option value="google-tcp-ipv6">Google (DNS-over-TCP IPv6)</option>
|
|
<option value="google-tls">Google (DNS-over-TLS)</option>
|
|
<option value="google-tls-ipv6">Google (DNS-over-TLS IPv6)</option>
|
|
<option value="google-json">Google (DNS-over-HTTPS-JSON)</option>
|
|
|
|
<option value="quad9-udp">Quad9 Secure (DNS-over-UDP)</option>
|
|
<option value="quad9-udp-ipv6">Quad9 Secure (DNS-over-UDP IPv6)</option>
|
|
<option value="quad9-tcp">Quad9 Secure (DNS-over-TCP)</option>
|
|
<option value="quad9-tcp-ipv6">Quad9 Secure (DNS-over-TCP IPv6)</option>
|
|
<option value="quad9-tls">Quad9 Secure (DNS-over-TLS)</option>
|
|
<option value="quad9-tls-ipv6">Quad9 Secure (DNS-over-TLS IPv6)</option>
|
|
<option value="quad9-https">Quad9 Secure (DNS-over-HTTPS)</option>
|
|
|
|
<option value="opendns-udp">OpenDNS (DNS-over-UDP)</option>
|
|
<option value="opendns-udp-ipv6">OpenDNS (DNS-over-UDP IPv6)</option>
|
|
<option value="opendns-tcp">OpenDNS (DNS-over-TCP)</option>
|
|
<option value="opendns-tcp-ipv6">OpenDNS (DNS-over-TCP IPv6)</option>
|
|
</select>
|
|
|
|
<div style="margin-top: 10px;">Enter forwarder DNS Server IP addresses or URLs one below another in above text field or use the Quick Select list to select desired forwarder.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">Forwarder Protocol</label>
|
|
<div class="col-sm-8">
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdForwarderProtocol" id="rdForwarderProtocolUdp" value="Udp" checked>
|
|
DNS-over-UDP (default)
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdForwarderProtocol" id="rdForwarderProtocolTcp" value="Tcp">
|
|
DNS-over-TCP
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdForwarderProtocol" id="rdForwarderProtocolTls" value="Tls">
|
|
DNS-over-TLS
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdForwarderProtocol" id="rdForwarderProtocolHttps" value="Https">
|
|
DNS-over-HTTPS
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label>
|
|
<input type="radio" name="rdForwarderProtocol" id="rdForwarderProtocolHttpJsons" value="HttpsJson">
|
|
DNS-over-HTTPS (JSON)
|
|
</label>
|
|
</div>
|
|
|
|
<div style="margin-top: 10px;">Select a protocol that this DNS server must use to query the forwarders specified above.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-top: 10px;">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 to perform recursive resolution.</div>
|
|
<div style="margin-top: 10px;"><a href="https://blog.technitium.com/2018/06/configuring-dns-server-for-privacy.html" target="_blank">Help: Configuring DNS Server For Privacy & Security</a></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();">Save Settings</button>
|
|
<button id="btnFlushDnsCache" type="button" class="btn btn-warning" data-loading-text="Flushing..." onclick="return flushDnsCache();" style="margin-left: 6px;">Flush Cache</button>
|
|
<button id="btnFlushAllowedZone" type="button" class="btn btn-warning" data-loading-text="Flushing..." onclick="return flushAllowedZone();" style="margin-left: 6px;">Flush Allowed Zone</button>
|
|
<button id="btnFlushCustomBlockedZone" type="button" class="btn btn-warning" data-loading-text="Flushing..." onclick="return flushCustomBlockedZone();" style="margin-left: 6px;">Flush Custom Blocked Zone</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; word-wrap: normal; word-break: normal;"></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="mainPanelTabPaneAbout" role="tabpanel" class="tab-pane" style="padding: 40px 0 20px 0;">
|
|
|
|
<div class="about" style="text-align: center;">
|
|
<img src="/img/logo.png" alt="Technitium Logo" />
|
|
<h1>Technitium DNS Server</h1>
|
|
<p>Version <span id="lblAboutVersion"></span></p>
|
|
<p style="max-width: 800px; margin: 0 auto 10px auto;">
|
|
Copyright (C) 2019 Shreyas Zare (shreyas@technitium.com)<br />
|
|
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.<br />
|
|
</p>
|
|
<p>Source code available under <a href="https://github.com/TechnitiumSoftware/DnsServer/blob/master/LICENSE" target="_blank">GNU General Public License v3.0</a> on <a href="https://github.com/TechnitiumSoftware/DnsServer" target="_blank"><i class="fa fa-github"></i> GitHub</a></p>
|
|
|
|
<h3 style="margin-top: 40px;"><a style="color: rgb(51,51,51) !important;" href="https://go.technitium.com/?id=25" target="_blank">Help Topics</a></h3>
|
|
<p>Read the latest <a href="https://go.technitium.com/?id=25" target="_blank">online help topics</a> which contains the DNS Server user manual and covers frequently asked questions.</p>
|
|
|
|
<h3 style="margin-top: 40px;">Support</h3>
|
|
<p>For support, send an email to <a href="mailto:support@technitium.com" target="_blank">support@technitium.com</a>.</p>
|
|
<p>
|
|
Follow <a href="https://twitter.com/Technitium" target="_blank">@technitium</a> on Twitter.<br />
|
|
Checkout <a href="https://blog.technitium.com/" target="_blank">Technitium Blog</a>.
|
|
</p>
|
|
|
|
<h3 style="margin-top: 40px;"><a style="color: rgb(51,51,51) !important;" href="https://www.patreon.com/technitium" target="_blank">Become A Patron</a></h3>
|
|
<p>Make contribution to Technitium by becoming a Patron and help making new software, updates, and features possible.</p>
|
|
<p>
|
|
<a href="https://www.patreon.com/technitium" target="_blank">Become A Patron Now!</a>
|
|
</p>
|
|
</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">×</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="modalForgotPassword" class="modal fade" tabindex="-1" role="dialog">
|
|
<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">×</span></button>
|
|
<h4 class="modal-title">Forgot Password?</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>Follow these steps to reset 'admin' password:</p>
|
|
<ol>
|
|
<li>Find the DNS Server config folder and locate the <b>dns.config</b> file. The config folder will be found where the DNS Server is installed.</li>
|
|
<li>Rename the <b>dns.config</b> file as <b>reset.config</b></li>
|
|
<li>Restart the DNS Server to complete the password reset process.</li>
|
|
<li>Just refresh this web page in the web browser to auto login with default credentials and quickly change the password.</li>
|
|
</ol>
|
|
<p>Note: To reset 'admin' password, you will need file system access on the server running this DNS Server. </p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="modalImportAllowedZones" class="modal fade" tabindex="-1" role="dialog">
|
|
<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">×</span></button>
|
|
<h4 class="modal-title">Import Allowed Zones</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div id="divImportAllowedZonesAlert"></div>
|
|
|
|
<p>Enter domain names one below other to import into Allowed Zone:</p>
|
|
|
|
<div class="form-group">
|
|
<label for="txtImportAllowedZones" class="control-label">Allowed Zones</label>
|
|
<textarea id="txtImportAllowedZones" class="form-control" rows="15"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button id="btnImportAllowedZones" type="submit" class="btn btn-primary" data-loading-text="Importing..." onclick="return importAllowedZones();">Import</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="modalImportCustomBlockedZones" class="modal fade" tabindex="-1" role="dialog">
|
|
<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">×</span></button>
|
|
<h4 class="modal-title">Import Custom Blocked Zones</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div id="divImportCustomBlockedZonesAlert"></div>
|
|
|
|
<p>Enter domain names one below other to import into custom blocked zone:</p>
|
|
|
|
<div class="form-group">
|
|
<label for="txtImportCustomBlockedZones" class="control-label">Blocked Zones</label>
|
|
<textarea id="txtImportCustomBlockedZones" class="form-control" rows="15"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button id="btnImportCustomBlockedZones" type="submit" class="btn btn-primary" data-loading-text="Importing..." onclick="return importCustomBlockedZones();">Import</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="footer"></div>
|
|
</body>
|
|
</html> |