mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-05-23 19:46:06 +00:00
web app: implemented import and export UI options for allowed zones and custom blocked zones. Added about tab.
This commit is contained in:
@@ -281,3 +281,8 @@ label {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.about p {
|
||||
color: rgb(119, 119, 119);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
BIN
DnsServerCore/www/img/logo.png
Normal file
BIN
DnsServerCore/www/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 325 B |
@@ -98,6 +98,7 @@
|
||||
<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">
|
||||
@@ -610,6 +611,8 @@
|
||||
<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>
|
||||
@@ -647,6 +650,8 @@
|
||||
<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>
|
||||
@@ -1084,9 +1089,36 @@
|
||||
|
||||
</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;">Contact</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>
|
||||
@@ -1159,6 +1191,56 @@
|
||||
</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>
|
||||
@@ -510,6 +510,7 @@ function loadDnsSettings() {
|
||||
url: "/api/getDnsSettings?token=" + token,
|
||||
success: function (responseJSON) {
|
||||
document.title = "Technitium DNS Server " + responseJSON.response.version + " - " + responseJSON.response.serverDomain;
|
||||
$("#lblAboutVersion").text(responseJSON.response.version);
|
||||
|
||||
$("#txtServerDomain").val(responseJSON.response.serverDomain);
|
||||
$("#lblServerDomain").text(" - " + responseJSON.response.serverDomain);
|
||||
@@ -2761,3 +2762,103 @@ function deleteLog() {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function resetImportAllowedZonesModal() {
|
||||
|
||||
$("#divImportAllowedZonesAlert").html("");
|
||||
$("#txtImportAllowedZones").val("");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function importAllowedZones() {
|
||||
var divImportAllowedZonesAlert = $("#divImportAllowedZonesAlert");
|
||||
var allowedZones = cleanTextList($("#txtImportAllowedZones").val());
|
||||
|
||||
if ((allowedZones.length === 0) || (allowedZones === ",")) {
|
||||
showAlert("warning", "Missing!", "Please enter allowed zones to import.", divImportAllowedZonesAlert);
|
||||
return false;
|
||||
}
|
||||
|
||||
var btn = $("#btnImportAllowedZones").button('loading');
|
||||
|
||||
HTTPRequest({
|
||||
url: "/api/importAllowedZones?token=" + token,
|
||||
data: "allowedZones=" + allowedZones,
|
||||
success: function (responseJSON) {
|
||||
$("#modalImportAllowedZones").modal("hide");
|
||||
btn.button('reset');
|
||||
|
||||
showAlert("success", "Imported!", "Domain names were imported to allowed zone successfully.");
|
||||
},
|
||||
error: function () {
|
||||
btn.button('reset');
|
||||
},
|
||||
invalidToken: function () {
|
||||
btn.button('reset');
|
||||
showPageLogin();
|
||||
},
|
||||
objAlertPlaceholder: divImportAllowedZonesAlert
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function exportAllowedZones() {
|
||||
|
||||
window.open("/api/exportAllowedZones?token=" + token, "_blank");
|
||||
|
||||
showAlert("success", "Exported!", "Allowed zones were exported successfully.");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function resetImportCustomBlockedZonesModal() {
|
||||
|
||||
$("#divImportCustomBlockedZonesAlert").html("");
|
||||
$("#txtImportCustomBlockedZones").val("");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function importCustomBlockedZones() {
|
||||
var divImportCustomBlockedZonesAlert = $("#divImportCustomBlockedZonesAlert");
|
||||
var blockedZones = cleanTextList($("#txtImportCustomBlockedZones").val());
|
||||
|
||||
if ((blockedZones.length === 0) || (blockedZones === ",")) {
|
||||
showAlert("warning", "Missing!", "Please enter custom blocked zones to import.", divImportCustomBlockedZonesAlert);
|
||||
return false;
|
||||
}
|
||||
|
||||
var btn = $("#btnImportCustomBlockedZones").button('loading');
|
||||
|
||||
HTTPRequest({
|
||||
url: "/api/importCustomBlockedZones?token=" + token,
|
||||
data: "blockedZones=" + blockedZones,
|
||||
success: function (responseJSON) {
|
||||
$("#modalImportCustomBlockedZones").modal("hide");
|
||||
btn.button('reset');
|
||||
|
||||
showAlert("success", "Imported!", "Domain names were imported to custom blocked zone successfully.");
|
||||
},
|
||||
error: function () {
|
||||
btn.button('reset');
|
||||
},
|
||||
invalidToken: function () {
|
||||
btn.button('reset');
|
||||
showPageLogin();
|
||||
},
|
||||
objAlertPlaceholder: divImportCustomBlockedZonesAlert
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function exportCustomBlockedZones() {
|
||||
|
||||
window.open("/api/exportCustomBlockedZones?token=" + token, "_blank");
|
||||
|
||||
showAlert("success", "Exported!", "Custom blocked zones were exported successfully.");
|
||||
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user