mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2025-12-30 21:38:06 +00:00
1112 lines
93 KiB
HTML
1112 lines
93 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>
|
|
<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">
|
|
<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>
|
|
</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 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">
|
|
<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 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">
|
|
<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">
|
|
<input type="text" class="form-control" style="width: 170px;" id="txtAllowZone" placeholder="example.com">
|
|
<button id="btnAllowZone" type="submit" class="btn btn-primary" data-loading-text="Allow" onclick="return allowZone();">Allow</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="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">
|
|
<input type="text" class="form-control" style="width: 170px;" id="txtBlockZone" placeholder="example.com">
|
|
<button id="btnBlockZone" type="submit" class="btn btn-primary" data-loading-text="Block" onclick="return blockZone();">Block</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="btnDeleteBlockedZone" type="button" class="btn btn-danger" data-loading-text="Delete" onclick="return deleteBlockedZone();" 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 Via Root Servers (root-servers)</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 HTTPS-JSON (https://dns.google.com/resolve)</a></li>
|
|
<li><a href="#">IBM Quad9 Secure (9.9.9.9)</a></li>
|
|
<li><a href="#">IBM Quad9 Secure ([2620:fe::fe])</a></li>
|
|
<li><a href="#">IBM Quad9 Secure TLS (dns.quad9.net (9.9.9.9:853))</a></li>
|
|
<li><a href="#">IBM Quad9 Secure TLS (dns.quad9.net ([2620:fe::fe]:853))</a></li>
|
|
<li><a href="#">IBM Quad9 Unsecure (9.9.9.10)</a></li>
|
|
<li><a href="#">IBM Quad9 Unsecure ([2620:fe::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="#">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">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" style="margin-bottom: 0px;">
|
|
<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; margin-bottom: 8px;">
|
|
<div>To apply web service port changes, you need to manually restart the main service.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="well well-sm">
|
|
<div class="form-group" style="margin-bottom: 0px;">
|
|
<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" style="margin-bottom: 0px;">
|
|
<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" style="margin-bottom: 0px;">
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkAllowRecursion" type="checkbox"> Allow Recursion
|
|
</label>
|
|
</div>
|
|
<div class="checkbox">
|
|
<label>
|
|
<input id="chkAllowRecursionOnlyForPrivateNetworks" type="checkbox"> Allow Recursion Only For Private Networks
|
|
</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. Enable recursion only for private networks option if you do not what the DNS server to support recursion over Internet but want to support it on private networks.</div>
|
|
</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-8">
|
|
<textarea id="txtBlockListUrls" class="form-control" style="width: 600px; height: 150px;" rows="3"></textarea>
|
|
|
|
<label for="optQuickBlockList" class="control-label">Quick Add</label>
|
|
<select id="optQuickBlockList" style="width: 520px;">
|
|
<option value="blank" selected></option>
|
|
<option value="none">None</option>
|
|
<option value="default">Default</option>
|
|
|
|
<option 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>
|
|
|
|
<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-8">
|
|
<textarea id="txtForwarders" class="form-control" style="width: 600px;" rows="3"></textarea>
|
|
|
|
<label for="optQuickForwarders" class="control-label">Quick Select</label>
|
|
<select id="optQuickForwarders">
|
|
<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-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-json">Google (DNS-over-HTTPS-JSON)</option>
|
|
|
|
<option value="quad9-udp">IBM Quad9 Secure (DNS-over-UDP)</option>
|
|
<option value="quad9-udp-ipv6">IBM Quad9 Secure (DNS-over-UDP IPv6)</option>
|
|
<option value="quad9-tls">IBM Quad9 Secure (DNS-over-TLS)</option>
|
|
<option value="quad9-tls-ipv6">IBM Quad9 Secure (DNS-over-TLS IPv6)</option>
|
|
|
|
<option value="opendns-udp">OpenDNS (DNS-over-UDP)</option>
|
|
<option value="opendns-udp-ipv6">OpenDNS (DNS-over-UDP 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="btnFlushBlockedZone" type="button" class="btn btn-warning" data-loading-text="Flushing..." onclick="return flushBlockedZone();" style="margin-left: 6px;">Flush 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>
|
|
</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="footer"></div>
|
|
</body>
|
|
</html> |