mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-02-05 15:33:57 +00:00
main.js: implemented support for udp and tcp proxy protocol options. Code refactoring done.
This commit is contained in:
@@ -116,7 +116,7 @@ function showPageMain() {
|
||||
else if (sessionData.info.permissions.Settings.canView) {
|
||||
$("#mainPanelTabListSettings").addClass("active");
|
||||
$("#mainPanelTabPaneSettings").addClass("active");
|
||||
loadDnsSettings()
|
||||
refreshDnsSettings()
|
||||
}
|
||||
else if (sessionData.info.permissions.DhcpServer.canView) {
|
||||
$("#mainPanelTabListDhcp").addClass("active");
|
||||
@@ -306,6 +306,18 @@ $(function () {
|
||||
$("#txtWebServiceTlsCertificatePassword").prop("disabled", !webServiceEnableTls);
|
||||
});
|
||||
|
||||
$("#chkEnableDnsOverUdpProxy").click(function () {
|
||||
var enableDnsOverUdpProxy = $("#chkEnableDnsOverUdpProxy").prop("checked");
|
||||
|
||||
$("#txtDnsOverUdpProxyPort").prop("disabled", !enableDnsOverUdpProxy);
|
||||
});
|
||||
|
||||
$("#chkEnableDnsOverTcpProxy").click(function () {
|
||||
var enableDnsOverTcpProxy = $("#chkEnableDnsOverTcpProxy").prop("checked");
|
||||
|
||||
$("#txtDnsOverTcpProxyPort").prop("disabled", !enableDnsOverTcpProxy);
|
||||
});
|
||||
|
||||
$("#chkEnableDnsOverHttp").click(function () {
|
||||
var enableDnsOverHttp = $("#chkEnableDnsOverHttp").prop("checked");
|
||||
|
||||
@@ -900,7 +912,7 @@ function checkForUpdate() {
|
||||
});
|
||||
}
|
||||
|
||||
function loadDnsSettings() {
|
||||
function refreshDnsSettings() {
|
||||
var divDnsSettingsLoader = $("#divDnsSettingsLoader");
|
||||
var divDnsSettings = $("#divDnsSettings");
|
||||
|
||||
@@ -910,377 +922,7 @@ function loadDnsSettings() {
|
||||
HTTPRequest({
|
||||
url: "/api/settings/get?token=" + sessionData.token,
|
||||
success: function (responseJSON) {
|
||||
document.title = responseJSON.response.dnsServerDomain + " - " + "Technitium DNS Server v" + responseJSON.response.version;
|
||||
$("#lblAboutVersion").text(responseJSON.response.version);
|
||||
$("#lblAboutUptime").text(moment(responseJSON.response.uptimestamp).local().format("lll") + " (" + moment(responseJSON.response.uptimestamp).fromNow() + ")");
|
||||
checkForReverseProxy(responseJSON);
|
||||
|
||||
//general
|
||||
$("#txtDnsServerDomain").val(responseJSON.response.dnsServerDomain);
|
||||
$("#lblDnsServerDomain").text(" - " + responseJSON.response.dnsServerDomain);
|
||||
|
||||
var dnsServerLocalEndPoints = responseJSON.response.dnsServerLocalEndPoints;
|
||||
if (dnsServerLocalEndPoints == null) {
|
||||
$("#txtDnsServerLocalEndPoints").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < dnsServerLocalEndPoints.length; i++)
|
||||
value += dnsServerLocalEndPoints[i] + "\r\n";
|
||||
|
||||
$("#txtDnsServerLocalEndPoints").val(value);
|
||||
}
|
||||
|
||||
$("#txtDefaultRecordTtl").val(responseJSON.response.defaultRecordTtl);
|
||||
$("#txtAddEditRecordTtl").attr("placeholder", responseJSON.response.defaultRecordTtl);
|
||||
$("#chkDnsAppsEnableAutomaticUpdate").prop("checked", responseJSON.response.dnsAppsEnableAutomaticUpdate);
|
||||
|
||||
$("#chkPreferIPv6").prop("checked", responseJSON.response.preferIPv6);
|
||||
$("#txtEdnsUdpPayloadSize").val(responseJSON.response.udpPayloadSize);
|
||||
$("#chkDnssecValidation").prop("checked", responseJSON.response.dnssecValidation);
|
||||
|
||||
$("#chkEDnsClientSubnet").prop("checked", responseJSON.response.eDnsClientSubnet);
|
||||
$("#txtEDnsClientSubnetIPv4PrefixLength").val(responseJSON.response.eDnsClientSubnetIPv4PrefixLength);
|
||||
$("#txtEDnsClientSubnetIPv6PrefixLength").val(responseJSON.response.eDnsClientSubnetIPv6PrefixLength);
|
||||
|
||||
$("#txtQpmLimitRequests").val(responseJSON.response.qpmLimitRequests);
|
||||
$("#txtQpmLimitErrors").val(responseJSON.response.qpmLimitErrors);
|
||||
$("#txtQpmLimitSampleMinutes").val(responseJSON.response.qpmLimitSampleMinutes);
|
||||
$("#txtQpmLimitIPv4PrefixLength").val(responseJSON.response.qpmLimitIPv4PrefixLength);
|
||||
$("#txtQpmLimitIPv6PrefixLength").val(responseJSON.response.qpmLimitIPv6PrefixLength);
|
||||
|
||||
$("#txtClientTimeout").val(responseJSON.response.clientTimeout);
|
||||
$("#txtTcpSendTimeout").val(responseJSON.response.tcpSendTimeout);
|
||||
$("#txtTcpReceiveTimeout").val(responseJSON.response.tcpReceiveTimeout);
|
||||
$("#txtQuicIdleTimeout").val(responseJSON.response.quicIdleTimeout);
|
||||
$("#txtQuicMaxInboundStreams").val(responseJSON.response.quicMaxInboundStreams);
|
||||
$("#txtListenBacklog").val(responseJSON.response.listenBacklog);
|
||||
|
||||
//web service
|
||||
var webServiceLocalAddresses = responseJSON.response.webServiceLocalAddresses;
|
||||
if (webServiceLocalAddresses == null) {
|
||||
$("#txtWebServiceLocalAddresses").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < webServiceLocalAddresses.length; i++)
|
||||
value += webServiceLocalAddresses[i] + "\r\n";
|
||||
|
||||
$("#txtWebServiceLocalAddresses").val(value);
|
||||
}
|
||||
|
||||
$("#txtWebServiceHttpPort").val(responseJSON.response.webServiceHttpPort);
|
||||
|
||||
$("#chkWebServiceEnableTls").prop("checked", responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceHttpToTlsRedirect").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceUseSelfSignedTlsCertificate").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsPort").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePath").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePassword").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
|
||||
$("#chkWebServiceHttpToTlsRedirect").prop("checked", responseJSON.response.webServiceHttpToTlsRedirect);
|
||||
$("#chkWebServiceUseSelfSignedTlsCertificate").prop("checked", responseJSON.response.webServiceUseSelfSignedTlsCertificate);
|
||||
$("#txtWebServiceTlsPort").val(responseJSON.response.webServiceTlsPort);
|
||||
$("#txtWebServiceTlsCertificatePath").val(responseJSON.response.webServiceTlsCertificatePath);
|
||||
|
||||
if (responseJSON.response.webServiceTlsCertificatePath == null)
|
||||
$("#txtWebServiceTlsCertificatePassword").val("");
|
||||
else
|
||||
$("#txtWebServiceTlsCertificatePassword").val(responseJSON.response.webServiceTlsCertificatePassword);
|
||||
|
||||
//optional protocols
|
||||
$("#chkEnableDnsOverHttp").prop("checked", responseJSON.response.enableDnsOverHttp);
|
||||
$("#chkEnableDnsOverTls").prop("checked", responseJSON.response.enableDnsOverTls);
|
||||
$("#chkEnableDnsOverHttps").prop("checked", responseJSON.response.enableDnsOverHttps);
|
||||
$("#chkEnableDnsOverQuic").prop("checked", responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsOverHttpPort").prop("disabled", !responseJSON.response.enableDnsOverHttp);
|
||||
$("#txtDnsOverTlsPort").prop("disabled", !responseJSON.response.enableDnsOverTls);
|
||||
$("#txtDnsOverHttpsPort").prop("disabled", !responseJSON.response.enableDnsOverHttps);
|
||||
$("#txtDnsOverQuicPort").prop("disabled", !responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsOverHttpPort").val(responseJSON.response.dnsOverHttpPort);
|
||||
$("#txtDnsOverTlsPort").val(responseJSON.response.dnsOverTlsPort);
|
||||
$("#txtDnsOverHttpsPort").val(responseJSON.response.dnsOverHttpsPort);
|
||||
$("#txtDnsOverQuicPort").val(responseJSON.response.dnsOverQuicPort);
|
||||
|
||||
$("#txtDnsTlsCertificatePath").prop("disabled", !responseJSON.response.enableDnsOverTls && !responseJSON.response.enableDnsOverHttps && !responseJSON.response.enableDnsOverQuic);
|
||||
$("#txtDnsTlsCertificatePassword").prop("disabled", !responseJSON.response.enableDnsOverTls && !responseJSON.response.enableDnsOverHttps && !responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsTlsCertificatePath").val(responseJSON.response.dnsTlsCertificatePath);
|
||||
|
||||
if (responseJSON.response.dnsTlsCertificatePath == null)
|
||||
$("#txtDnsTlsCertificatePassword").val("");
|
||||
else
|
||||
$("#txtDnsTlsCertificatePassword").val(responseJSON.response.dnsTlsCertificatePassword);
|
||||
|
||||
$("#lblDoHHost").text(window.location.hostname + (responseJSON.response.dnsOverHttpPort == 80 ? "" : ":" + responseJSON.response.dnsOverHttpPort));
|
||||
$("#lblDoTHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverTlsPort);
|
||||
$("#lblDoQHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverQuicPort);
|
||||
$("#lblDoHsHost").text("tls-certificate-domain" + (responseJSON.response.dnsOverHttpsPort == 443 ? "" : ":" + responseJSON.response.dnsOverHttpsPort));
|
||||
|
||||
//tsig
|
||||
$("#tableTsigKeys").html("");
|
||||
|
||||
if (responseJSON.response.tsigKeys != null) {
|
||||
for (var i = 0; i < responseJSON.response.tsigKeys.length; i++) {
|
||||
addTsigKeyRow(responseJSON.response.tsigKeys[i].keyName, responseJSON.response.tsigKeys[i].sharedSecret, responseJSON.response.tsigKeys[i].algorithmName);
|
||||
}
|
||||
}
|
||||
|
||||
//recursion
|
||||
$("#txtRecursionDeniedNetworks").prop("disabled", true);
|
||||
$("#txtRecursionAllowedNetworks").prop("disabled", true);
|
||||
|
||||
switch (responseJSON.response.recursion) {
|
||||
case "Allow":
|
||||
$("#rdRecursionAllow").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "AllowOnlyForPrivateNetworks":
|
||||
$("#rdRecursionAllowOnlyForPrivateNetworks").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "UseSpecifiedNetworks":
|
||||
$("#rdRecursionUseSpecifiedNetworks").prop("checked", true);
|
||||
$("#txtRecursionDeniedNetworks").prop("disabled", false);
|
||||
$("#txtRecursionAllowedNetworks").prop("disabled", false);
|
||||
break;
|
||||
|
||||
case "Deny":
|
||||
default:
|
||||
$("#rdRecursionDeny").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.recursionDeniedNetworks.length; i++)
|
||||
value += responseJSON.response.recursionDeniedNetworks[i] + "\r\n";
|
||||
|
||||
$("#txtRecursionDeniedNetworks").val(value);
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.recursionAllowedNetworks.length; i++)
|
||||
value += responseJSON.response.recursionAllowedNetworks[i] + "\r\n";
|
||||
|
||||
$("#txtRecursionAllowedNetworks").val(value);
|
||||
}
|
||||
|
||||
$("#chkRandomizeName").prop("checked", responseJSON.response.randomizeName);
|
||||
$("#chkQnameMinimization").prop("checked", responseJSON.response.qnameMinimization);
|
||||
$("#chkNsRevalidation").prop("checked", responseJSON.response.nsRevalidation);
|
||||
|
||||
$("#txtResolverRetries").val(responseJSON.response.resolverRetries);
|
||||
$("#txtResolverTimeout").val(responseJSON.response.resolverTimeout);
|
||||
$("#txtResolverMaxStackCount").val(responseJSON.response.resolverMaxStackCount);
|
||||
|
||||
//cache
|
||||
$("#chkSaveCache").prop("checked", responseJSON.response.saveCache);
|
||||
|
||||
$("#chkServeStale").prop("checked", responseJSON.response.serveStale);
|
||||
$("#txtServeStaleTtl").prop("disabled", !responseJSON.response.serveStale);
|
||||
$("#txtServeStaleTtl").val(responseJSON.response.serveStaleTtl);
|
||||
|
||||
$("#txtCacheMaximumEntries").val(responseJSON.response.cacheMaximumEntries);
|
||||
$("#txtCacheMinimumRecordTtl").val(responseJSON.response.cacheMinimumRecordTtl);
|
||||
$("#txtCacheMaximumRecordTtl").val(responseJSON.response.cacheMaximumRecordTtl);
|
||||
$("#txtCacheNegativeRecordTtl").val(responseJSON.response.cacheNegativeRecordTtl);
|
||||
$("#txtCacheFailureRecordTtl").val(responseJSON.response.cacheFailureRecordTtl);
|
||||
|
||||
$("#txtCachePrefetchEligibility").val(responseJSON.response.cachePrefetchEligibility);
|
||||
$("#txtCachePrefetchTrigger").val(responseJSON.response.cachePrefetchTrigger);
|
||||
$("#txtCachePrefetchSampleIntervalInMinutes").val(responseJSON.response.cachePrefetchSampleIntervalInMinutes);
|
||||
$("#txtCachePrefetchSampleEligibilityHitsPerHour").val(responseJSON.response.cachePrefetchSampleEligibilityHitsPerHour);
|
||||
|
||||
//blocking
|
||||
$("#chkEnableBlocking").prop("checked", responseJSON.response.enableBlocking);
|
||||
$("#chkAllowTxtBlockingReport").prop("checked", responseJSON.response.allowTxtBlockingReport);
|
||||
|
||||
if (responseJSON.response.temporaryDisableBlockingTill == null)
|
||||
$("#lblTemporaryDisableBlockingTill").text("Not Set");
|
||||
else
|
||||
$("#lblTemporaryDisableBlockingTill").text(moment(responseJSON.response.temporaryDisableBlockingTill).local().format("YYYY-MM-DD HH:mm:ss"));
|
||||
|
||||
$("#txtTemporaryDisableBlockingMinutes").val("");
|
||||
|
||||
$("#txtCustomBlockingAddresses").prop("disabled", true);
|
||||
|
||||
switch (responseJSON.response.blockingType) {
|
||||
case "NxDomain":
|
||||
$("#rdBlockingTypeNxDomain").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "CustomAddress":
|
||||
$("#rdBlockingTypeCustomAddress").prop("checked", true);
|
||||
$("#txtCustomBlockingAddresses").prop("disabled", false);
|
||||
break;
|
||||
|
||||
case "AnyAddress":
|
||||
default:
|
||||
$("#rdBlockingTypeAnyAddress").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.customBlockingAddresses.length; i++)
|
||||
value += responseJSON.response.customBlockingAddresses[i] + "\r\n";
|
||||
|
||||
$("#txtCustomBlockingAddresses").val(value);
|
||||
}
|
||||
|
||||
var blockListUrls = responseJSON.response.blockListUrls;
|
||||
if (blockListUrls == null) {
|
||||
$("#txtBlockListUrls").val("");
|
||||
$("#btnUpdateBlockListsNow").prop("disabled", true);
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < blockListUrls.length; i++)
|
||||
value += blockListUrls[i] + "\r\n";
|
||||
|
||||
$("#txtBlockListUrls").val(value);
|
||||
$("#btnUpdateBlockListsNow").prop("disabled", false);
|
||||
}
|
||||
|
||||
$("#optQuickBlockList").val("blank");
|
||||
|
||||
//fix custom block list url in case port changes
|
||||
{
|
||||
var optCustomLocalBlockList = $("#optCustomLocalBlockList");
|
||||
|
||||
optCustomLocalBlockList.attr("value", "http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt");
|
||||
optCustomLocalBlockList.text("Custom Local Block List (http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt)");
|
||||
}
|
||||
|
||||
$("#txtBlockListUpdateIntervalHours").val(responseJSON.response.blockListUpdateIntervalHours);
|
||||
|
||||
if (responseJSON.response.blockListNextUpdatedOn == null) {
|
||||
$("#lblBlockListNextUpdatedOn").text("Not Scheduled");
|
||||
}
|
||||
else {
|
||||
var blockListNextUpdatedOn = moment(responseJSON.response.blockListNextUpdatedOn);
|
||||
|
||||
if (moment().utc().isBefore(blockListNextUpdatedOn))
|
||||
$("#lblBlockListNextUpdatedOn").text(blockListNextUpdatedOn.local().format("YYYY-MM-DD HH:mm:ss"));
|
||||
else
|
||||
$("#lblBlockListNextUpdatedOn").text("Updating Now");
|
||||
}
|
||||
|
||||
//proxy & forwarders
|
||||
var proxy = responseJSON.response.proxy;
|
||||
if (proxy === null) {
|
||||
$("#rdProxyTypeNone").prop("checked", true);
|
||||
|
||||
$("#txtProxyAddress").prop("disabled", true);
|
||||
$("#txtProxyPort").prop("disabled", true);
|
||||
$("#txtProxyUsername").prop("disabled", true);
|
||||
$("#txtProxyPassword").prop("disabled", true);
|
||||
$("#txtProxyBypassList").prop("disabled", true);
|
||||
|
||||
$("#txtProxyAddress").val("");
|
||||
$("#txtProxyPort").val("");
|
||||
$("#txtProxyUsername").val("");
|
||||
$("#txtProxyPassword").val("");
|
||||
$("#txtProxyBypassList").val("");
|
||||
}
|
||||
else {
|
||||
switch (proxy.type.toLowerCase()) {
|
||||
case "http":
|
||||
$("#rdProxyTypeHttp").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "socks5":
|
||||
$("#rdProxyTypeSocks5").prop("checked", true);
|
||||
break;
|
||||
|
||||
default:
|
||||
$("#rdProxyTypeNone").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
$("#txtProxyAddress").val(proxy.address);
|
||||
$("#txtProxyPort").val(proxy.port);
|
||||
$("#txtProxyUsername").val(proxy.username);
|
||||
$("#txtProxyPassword").val(proxy.password);
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < proxy.bypass.length; i++)
|
||||
value += proxy.bypass[i] + "\r\n";
|
||||
|
||||
$("#txtProxyBypassList").val(value);
|
||||
}
|
||||
|
||||
$("#txtProxyAddress").prop("disabled", false);
|
||||
$("#txtProxyPort").prop("disabled", false);
|
||||
$("#txtProxyUsername").prop("disabled", false);
|
||||
$("#txtProxyPassword").prop("disabled", false);
|
||||
$("#txtProxyBypassList").prop("disabled", false);
|
||||
}
|
||||
|
||||
var forwarders = responseJSON.response.forwarders;
|
||||
if (forwarders == null) {
|
||||
$("#txtForwarders").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < forwarders.length; i++)
|
||||
value += forwarders[i] + "\r\n";
|
||||
|
||||
$("#txtForwarders").val(value);
|
||||
}
|
||||
|
||||
$("#optQuickForwarders").val("blank");
|
||||
|
||||
switch (responseJSON.response.forwarderProtocol.toLowerCase()) {
|
||||
case "tcp":
|
||||
$("#rdForwarderProtocolTcp").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "tls":
|
||||
$("#rdForwarderProtocolTls").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "https":
|
||||
$("#rdForwarderProtocolHttps").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "quic":
|
||||
$("#rdForwarderProtocolQuic").prop("checked", true);
|
||||
break;
|
||||
|
||||
default:
|
||||
$("#rdForwarderProtocolUdp").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
$("#txtForwarderRetries").val(responseJSON.response.forwarderRetries);
|
||||
$("#txtForwarderTimeout").val(responseJSON.response.forwarderTimeout);
|
||||
$("#txtForwarderConcurrency").val(responseJSON.response.forwarderConcurrency);
|
||||
|
||||
//logging
|
||||
$("#chkEnableLogging").prop("checked", responseJSON.response.enableLogging);
|
||||
$("#chkLogQueries").prop("disabled", !responseJSON.response.enableLogging);
|
||||
$("#chkUseLocalTime").prop("disabled", !responseJSON.response.enableLogging);
|
||||
$("#txtLogFolderPath").prop("disabled", !responseJSON.response.enableLogging);
|
||||
|
||||
$("#chkLogQueries").prop("checked", responseJSON.response.logQueries);
|
||||
$("#chkUseLocalTime").prop("checked", responseJSON.response.useLocalTime);
|
||||
$("#txtLogFolderPath").val(responseJSON.response.logFolder);
|
||||
$("#txtMaxLogFileDays").val(responseJSON.response.maxLogFileDays);
|
||||
$("#txtMaxStatFileDays").val(responseJSON.response.maxStatFileDays);
|
||||
loadDnsSettings(responseJSON);
|
||||
|
||||
divDnsSettingsLoader.hide();
|
||||
divDnsSettings.show();
|
||||
@@ -1292,6 +934,386 @@ function loadDnsSettings() {
|
||||
});
|
||||
}
|
||||
|
||||
function loadDnsSettings(responseJSON) {
|
||||
document.title = responseJSON.response.dnsServerDomain + " - " + "Technitium DNS Server v" + responseJSON.response.version;
|
||||
$("#lblAboutVersion").text(responseJSON.response.version);
|
||||
$("#lblAboutUptime").text(moment(responseJSON.response.uptimestamp).local().format("lll") + " (" + moment(responseJSON.response.uptimestamp).fromNow() + ")");
|
||||
checkForReverseProxy(responseJSON);
|
||||
|
||||
//general
|
||||
$("#txtDnsServerDomain").val(responseJSON.response.dnsServerDomain);
|
||||
$("#lblDnsServerDomain").text(" - " + responseJSON.response.dnsServerDomain);
|
||||
|
||||
var dnsServerLocalEndPoints = responseJSON.response.dnsServerLocalEndPoints;
|
||||
if (dnsServerLocalEndPoints == null) {
|
||||
$("#txtDnsServerLocalEndPoints").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < dnsServerLocalEndPoints.length; i++)
|
||||
value += dnsServerLocalEndPoints[i] + "\r\n";
|
||||
|
||||
$("#txtDnsServerLocalEndPoints").val(value);
|
||||
}
|
||||
|
||||
$("#txtDefaultRecordTtl").val(responseJSON.response.defaultRecordTtl);
|
||||
$("#txtAddEditRecordTtl").attr("placeholder", responseJSON.response.defaultRecordTtl);
|
||||
$("#chkDnsAppsEnableAutomaticUpdate").prop("checked", responseJSON.response.dnsAppsEnableAutomaticUpdate);
|
||||
|
||||
$("#chkPreferIPv6").prop("checked", responseJSON.response.preferIPv6);
|
||||
$("#txtEdnsUdpPayloadSize").val(responseJSON.response.udpPayloadSize);
|
||||
$("#chkDnssecValidation").prop("checked", responseJSON.response.dnssecValidation);
|
||||
|
||||
$("#chkEDnsClientSubnet").prop("checked", responseJSON.response.eDnsClientSubnet);
|
||||
$("#txtEDnsClientSubnetIPv4PrefixLength").val(responseJSON.response.eDnsClientSubnetIPv4PrefixLength);
|
||||
$("#txtEDnsClientSubnetIPv6PrefixLength").val(responseJSON.response.eDnsClientSubnetIPv6PrefixLength);
|
||||
|
||||
$("#txtQpmLimitRequests").val(responseJSON.response.qpmLimitRequests);
|
||||
$("#txtQpmLimitErrors").val(responseJSON.response.qpmLimitErrors);
|
||||
$("#txtQpmLimitSampleMinutes").val(responseJSON.response.qpmLimitSampleMinutes);
|
||||
$("#txtQpmLimitIPv4PrefixLength").val(responseJSON.response.qpmLimitIPv4PrefixLength);
|
||||
$("#txtQpmLimitIPv6PrefixLength").val(responseJSON.response.qpmLimitIPv6PrefixLength);
|
||||
|
||||
$("#txtClientTimeout").val(responseJSON.response.clientTimeout);
|
||||
$("#txtTcpSendTimeout").val(responseJSON.response.tcpSendTimeout);
|
||||
$("#txtTcpReceiveTimeout").val(responseJSON.response.tcpReceiveTimeout);
|
||||
$("#txtQuicIdleTimeout").val(responseJSON.response.quicIdleTimeout);
|
||||
$("#txtQuicMaxInboundStreams").val(responseJSON.response.quicMaxInboundStreams);
|
||||
$("#txtListenBacklog").val(responseJSON.response.listenBacklog);
|
||||
|
||||
//web service
|
||||
var webServiceLocalAddresses = responseJSON.response.webServiceLocalAddresses;
|
||||
if (webServiceLocalAddresses == null) {
|
||||
$("#txtWebServiceLocalAddresses").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < webServiceLocalAddresses.length; i++)
|
||||
value += webServiceLocalAddresses[i] + "\r\n";
|
||||
|
||||
$("#txtWebServiceLocalAddresses").val(value);
|
||||
}
|
||||
|
||||
$("#txtWebServiceHttpPort").val(responseJSON.response.webServiceHttpPort);
|
||||
|
||||
$("#chkWebServiceEnableTls").prop("checked", responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceHttpToTlsRedirect").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceUseSelfSignedTlsCertificate").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsPort").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePath").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePassword").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
|
||||
$("#chkWebServiceHttpToTlsRedirect").prop("checked", responseJSON.response.webServiceHttpToTlsRedirect);
|
||||
$("#chkWebServiceUseSelfSignedTlsCertificate").prop("checked", responseJSON.response.webServiceUseSelfSignedTlsCertificate);
|
||||
$("#txtWebServiceTlsPort").val(responseJSON.response.webServiceTlsPort);
|
||||
$("#txtWebServiceTlsCertificatePath").val(responseJSON.response.webServiceTlsCertificatePath);
|
||||
|
||||
if (responseJSON.response.webServiceTlsCertificatePath == null)
|
||||
$("#txtWebServiceTlsCertificatePassword").val("");
|
||||
else
|
||||
$("#txtWebServiceTlsCertificatePassword").val(responseJSON.response.webServiceTlsCertificatePassword);
|
||||
|
||||
//optional protocols
|
||||
$("#chkEnableDnsOverUdpProxy").prop("checked", responseJSON.response.enableDnsOverUdpProxy);
|
||||
$("#chkEnableDnsOverTcpProxy").prop("checked", responseJSON.response.enableDnsOverTcpProxy);
|
||||
$("#chkEnableDnsOverHttp").prop("checked", responseJSON.response.enableDnsOverHttp);
|
||||
$("#chkEnableDnsOverTls").prop("checked", responseJSON.response.enableDnsOverTls);
|
||||
$("#chkEnableDnsOverHttps").prop("checked", responseJSON.response.enableDnsOverHttps);
|
||||
$("#chkEnableDnsOverQuic").prop("checked", responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsOverUdpProxyPort").prop("disabled", !responseJSON.response.enableDnsOverUdpProxy);
|
||||
$("#txtDnsOverTcpProxyPort").prop("disabled", !responseJSON.response.enableDnsOverTcpProxy);
|
||||
$("#txtDnsOverHttpPort").prop("disabled", !responseJSON.response.enableDnsOverHttp);
|
||||
$("#txtDnsOverTlsPort").prop("disabled", !responseJSON.response.enableDnsOverTls);
|
||||
$("#txtDnsOverHttpsPort").prop("disabled", !responseJSON.response.enableDnsOverHttps);
|
||||
$("#txtDnsOverQuicPort").prop("disabled", !responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsOverUdpProxyPort").val(responseJSON.response.dnsOverUdpProxyPort);
|
||||
$("#txtDnsOverTcpProxyPort").val(responseJSON.response.dnsOverTcpProxyPort);
|
||||
$("#txtDnsOverHttpPort").val(responseJSON.response.dnsOverHttpPort);
|
||||
$("#txtDnsOverTlsPort").val(responseJSON.response.dnsOverTlsPort);
|
||||
$("#txtDnsOverHttpsPort").val(responseJSON.response.dnsOverHttpsPort);
|
||||
$("#txtDnsOverQuicPort").val(responseJSON.response.dnsOverQuicPort);
|
||||
|
||||
$("#txtDnsTlsCertificatePath").prop("disabled", !responseJSON.response.enableDnsOverTls && !responseJSON.response.enableDnsOverHttps && !responseJSON.response.enableDnsOverQuic);
|
||||
$("#txtDnsTlsCertificatePassword").prop("disabled", !responseJSON.response.enableDnsOverTls && !responseJSON.response.enableDnsOverHttps && !responseJSON.response.enableDnsOverQuic);
|
||||
|
||||
$("#txtDnsTlsCertificatePath").val(responseJSON.response.dnsTlsCertificatePath);
|
||||
|
||||
if (responseJSON.response.dnsTlsCertificatePath == null)
|
||||
$("#txtDnsTlsCertificatePassword").val("");
|
||||
else
|
||||
$("#txtDnsTlsCertificatePassword").val(responseJSON.response.dnsTlsCertificatePassword);
|
||||
|
||||
$("#lblDoHHost").text(window.location.hostname + (responseJSON.response.dnsOverHttpPort == 80 ? "" : ":" + responseJSON.response.dnsOverHttpPort));
|
||||
$("#lblDoTHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverTlsPort);
|
||||
$("#lblDoQHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverQuicPort);
|
||||
$("#lblDoHsHost").text("tls-certificate-domain" + (responseJSON.response.dnsOverHttpsPort == 443 ? "" : ":" + responseJSON.response.dnsOverHttpsPort));
|
||||
|
||||
//tsig
|
||||
$("#tableTsigKeys").html("");
|
||||
|
||||
if (responseJSON.response.tsigKeys != null) {
|
||||
for (var i = 0; i < responseJSON.response.tsigKeys.length; i++) {
|
||||
addTsigKeyRow(responseJSON.response.tsigKeys[i].keyName, responseJSON.response.tsigKeys[i].sharedSecret, responseJSON.response.tsigKeys[i].algorithmName);
|
||||
}
|
||||
}
|
||||
|
||||
//recursion
|
||||
$("#txtRecursionDeniedNetworks").prop("disabled", true);
|
||||
$("#txtRecursionAllowedNetworks").prop("disabled", true);
|
||||
|
||||
switch (responseJSON.response.recursion) {
|
||||
case "Allow":
|
||||
$("#rdRecursionAllow").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "AllowOnlyForPrivateNetworks":
|
||||
$("#rdRecursionAllowOnlyForPrivateNetworks").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "UseSpecifiedNetworks":
|
||||
$("#rdRecursionUseSpecifiedNetworks").prop("checked", true);
|
||||
$("#txtRecursionDeniedNetworks").prop("disabled", false);
|
||||
$("#txtRecursionAllowedNetworks").prop("disabled", false);
|
||||
break;
|
||||
|
||||
case "Deny":
|
||||
default:
|
||||
$("#rdRecursionDeny").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.recursionDeniedNetworks.length; i++)
|
||||
value += responseJSON.response.recursionDeniedNetworks[i] + "\r\n";
|
||||
|
||||
$("#txtRecursionDeniedNetworks").val(value);
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.recursionAllowedNetworks.length; i++)
|
||||
value += responseJSON.response.recursionAllowedNetworks[i] + "\r\n";
|
||||
|
||||
$("#txtRecursionAllowedNetworks").val(value);
|
||||
}
|
||||
|
||||
$("#chkRandomizeName").prop("checked", responseJSON.response.randomizeName);
|
||||
$("#chkQnameMinimization").prop("checked", responseJSON.response.qnameMinimization);
|
||||
$("#chkNsRevalidation").prop("checked", responseJSON.response.nsRevalidation);
|
||||
|
||||
$("#txtResolverRetries").val(responseJSON.response.resolverRetries);
|
||||
$("#txtResolverTimeout").val(responseJSON.response.resolverTimeout);
|
||||
$("#txtResolverMaxStackCount").val(responseJSON.response.resolverMaxStackCount);
|
||||
|
||||
//cache
|
||||
$("#chkSaveCache").prop("checked", responseJSON.response.saveCache);
|
||||
|
||||
$("#chkServeStale").prop("checked", responseJSON.response.serveStale);
|
||||
$("#txtServeStaleTtl").prop("disabled", !responseJSON.response.serveStale);
|
||||
$("#txtServeStaleTtl").val(responseJSON.response.serveStaleTtl);
|
||||
|
||||
$("#txtCacheMaximumEntries").val(responseJSON.response.cacheMaximumEntries);
|
||||
$("#txtCacheMinimumRecordTtl").val(responseJSON.response.cacheMinimumRecordTtl);
|
||||
$("#txtCacheMaximumRecordTtl").val(responseJSON.response.cacheMaximumRecordTtl);
|
||||
$("#txtCacheNegativeRecordTtl").val(responseJSON.response.cacheNegativeRecordTtl);
|
||||
$("#txtCacheFailureRecordTtl").val(responseJSON.response.cacheFailureRecordTtl);
|
||||
|
||||
$("#txtCachePrefetchEligibility").val(responseJSON.response.cachePrefetchEligibility);
|
||||
$("#txtCachePrefetchTrigger").val(responseJSON.response.cachePrefetchTrigger);
|
||||
$("#txtCachePrefetchSampleIntervalInMinutes").val(responseJSON.response.cachePrefetchSampleIntervalInMinutes);
|
||||
$("#txtCachePrefetchSampleEligibilityHitsPerHour").val(responseJSON.response.cachePrefetchSampleEligibilityHitsPerHour);
|
||||
|
||||
//blocking
|
||||
$("#chkEnableBlocking").prop("checked", responseJSON.response.enableBlocking);
|
||||
$("#chkAllowTxtBlockingReport").prop("checked", responseJSON.response.allowTxtBlockingReport);
|
||||
|
||||
if (responseJSON.response.temporaryDisableBlockingTill == null)
|
||||
$("#lblTemporaryDisableBlockingTill").text("Not Set");
|
||||
else
|
||||
$("#lblTemporaryDisableBlockingTill").text(moment(responseJSON.response.temporaryDisableBlockingTill).local().format("YYYY-MM-DD HH:mm:ss"));
|
||||
|
||||
$("#txtTemporaryDisableBlockingMinutes").val("");
|
||||
|
||||
$("#txtCustomBlockingAddresses").prop("disabled", true);
|
||||
|
||||
switch (responseJSON.response.blockingType) {
|
||||
case "NxDomain":
|
||||
$("#rdBlockingTypeNxDomain").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "CustomAddress":
|
||||
$("#rdBlockingTypeCustomAddress").prop("checked", true);
|
||||
$("#txtCustomBlockingAddresses").prop("disabled", false);
|
||||
break;
|
||||
|
||||
case "AnyAddress":
|
||||
default:
|
||||
$("#rdBlockingTypeAnyAddress").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < responseJSON.response.customBlockingAddresses.length; i++)
|
||||
value += responseJSON.response.customBlockingAddresses[i] + "\r\n";
|
||||
|
||||
$("#txtCustomBlockingAddresses").val(value);
|
||||
}
|
||||
|
||||
var blockListUrls = responseJSON.response.blockListUrls;
|
||||
if (blockListUrls == null) {
|
||||
$("#txtBlockListUrls").val("");
|
||||
$("#btnUpdateBlockListsNow").prop("disabled", true);
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < blockListUrls.length; i++)
|
||||
value += blockListUrls[i] + "\r\n";
|
||||
|
||||
$("#txtBlockListUrls").val(value);
|
||||
$("#btnUpdateBlockListsNow").prop("disabled", false);
|
||||
}
|
||||
|
||||
$("#optQuickBlockList").val("blank");
|
||||
|
||||
//fix custom block list url in case port changes
|
||||
{
|
||||
var optCustomLocalBlockList = $("#optCustomLocalBlockList");
|
||||
|
||||
optCustomLocalBlockList.attr("value", "http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt");
|
||||
optCustomLocalBlockList.text("Custom Local Block List (http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt)");
|
||||
}
|
||||
|
||||
$("#txtBlockListUpdateIntervalHours").val(responseJSON.response.blockListUpdateIntervalHours);
|
||||
|
||||
if (responseJSON.response.blockListNextUpdatedOn == null) {
|
||||
$("#lblBlockListNextUpdatedOn").text("Not Scheduled");
|
||||
}
|
||||
else {
|
||||
var blockListNextUpdatedOn = moment(responseJSON.response.blockListNextUpdatedOn);
|
||||
|
||||
if (moment().utc().isBefore(blockListNextUpdatedOn))
|
||||
$("#lblBlockListNextUpdatedOn").text(blockListNextUpdatedOn.local().format("YYYY-MM-DD HH:mm:ss"));
|
||||
else
|
||||
$("#lblBlockListNextUpdatedOn").text("Updating Now");
|
||||
}
|
||||
|
||||
//proxy & forwarders
|
||||
var proxy = responseJSON.response.proxy;
|
||||
if (proxy === null) {
|
||||
$("#rdProxyTypeNone").prop("checked", true);
|
||||
|
||||
$("#txtProxyAddress").prop("disabled", true);
|
||||
$("#txtProxyPort").prop("disabled", true);
|
||||
$("#txtProxyUsername").prop("disabled", true);
|
||||
$("#txtProxyPassword").prop("disabled", true);
|
||||
$("#txtProxyBypassList").prop("disabled", true);
|
||||
|
||||
$("#txtProxyAddress").val("");
|
||||
$("#txtProxyPort").val("");
|
||||
$("#txtProxyUsername").val("");
|
||||
$("#txtProxyPassword").val("");
|
||||
$("#txtProxyBypassList").val("");
|
||||
}
|
||||
else {
|
||||
switch (proxy.type.toLowerCase()) {
|
||||
case "http":
|
||||
$("#rdProxyTypeHttp").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "socks5":
|
||||
$("#rdProxyTypeSocks5").prop("checked", true);
|
||||
break;
|
||||
|
||||
default:
|
||||
$("#rdProxyTypeNone").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
$("#txtProxyAddress").val(proxy.address);
|
||||
$("#txtProxyPort").val(proxy.port);
|
||||
$("#txtProxyUsername").val(proxy.username);
|
||||
$("#txtProxyPassword").val(proxy.password);
|
||||
|
||||
{
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < proxy.bypass.length; i++)
|
||||
value += proxy.bypass[i] + "\r\n";
|
||||
|
||||
$("#txtProxyBypassList").val(value);
|
||||
}
|
||||
|
||||
$("#txtProxyAddress").prop("disabled", false);
|
||||
$("#txtProxyPort").prop("disabled", false);
|
||||
$("#txtProxyUsername").prop("disabled", false);
|
||||
$("#txtProxyPassword").prop("disabled", false);
|
||||
$("#txtProxyBypassList").prop("disabled", false);
|
||||
}
|
||||
|
||||
var forwarders = responseJSON.response.forwarders;
|
||||
if (forwarders == null) {
|
||||
$("#txtForwarders").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < forwarders.length; i++)
|
||||
value += forwarders[i] + "\r\n";
|
||||
|
||||
$("#txtForwarders").val(value);
|
||||
}
|
||||
|
||||
$("#optQuickForwarders").val("blank");
|
||||
|
||||
switch (responseJSON.response.forwarderProtocol.toLowerCase()) {
|
||||
case "tcp":
|
||||
$("#rdForwarderProtocolTcp").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "tls":
|
||||
$("#rdForwarderProtocolTls").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "https":
|
||||
$("#rdForwarderProtocolHttps").prop("checked", true);
|
||||
break;
|
||||
|
||||
case "quic":
|
||||
$("#rdForwarderProtocolQuic").prop("checked", true);
|
||||
break;
|
||||
|
||||
default:
|
||||
$("#rdForwarderProtocolUdp").prop("checked", true);
|
||||
break;
|
||||
}
|
||||
|
||||
$("#txtForwarderRetries").val(responseJSON.response.forwarderRetries);
|
||||
$("#txtForwarderTimeout").val(responseJSON.response.forwarderTimeout);
|
||||
$("#txtForwarderConcurrency").val(responseJSON.response.forwarderConcurrency);
|
||||
|
||||
//logging
|
||||
$("#chkEnableLogging").prop("checked", responseJSON.response.enableLogging);
|
||||
$("#chkLogQueries").prop("disabled", !responseJSON.response.enableLogging);
|
||||
$("#chkUseLocalTime").prop("disabled", !responseJSON.response.enableLogging);
|
||||
$("#txtLogFolderPath").prop("disabled", !responseJSON.response.enableLogging);
|
||||
|
||||
$("#chkLogQueries").prop("checked", responseJSON.response.logQueries);
|
||||
$("#chkUseLocalTime").prop("checked", responseJSON.response.useLocalTime);
|
||||
$("#txtLogFolderPath").val(responseJSON.response.logFolder);
|
||||
$("#txtMaxLogFileDays").val(responseJSON.response.maxLogFileDays);
|
||||
$("#txtMaxStatFileDays").val(responseJSON.response.maxStatFileDays);
|
||||
}
|
||||
|
||||
function saveDnsSettings() {
|
||||
//general
|
||||
var dnsServerDomain = $("#txtDnsServerDomain").val();
|
||||
@@ -1429,11 +1451,27 @@ function saveDnsSettings() {
|
||||
var webServiceTlsCertificatePassword = $("#txtWebServiceTlsCertificatePassword").val();
|
||||
|
||||
//optional protocols
|
||||
var enableDnsOverUdpProxy = $("#chkEnableDnsOverUdpProxy").prop("checked");
|
||||
var enableDnsOverTcpProxy = $("#chkEnableDnsOverTcpProxy").prop("checked");
|
||||
var enableDnsOverHttp = $("#chkEnableDnsOverHttp").prop("checked");
|
||||
var enableDnsOverTls = $("#chkEnableDnsOverTls").prop("checked");
|
||||
var enableDnsOverHttps = $("#chkEnableDnsOverHttps").prop("checked");
|
||||
var enableDnsOverQuic = $("#chkEnableDnsOverQuic").prop("checked");
|
||||
|
||||
var dnsOverUdpProxyPort = $("#txtDnsOverUdpProxyPort").val();
|
||||
if ((dnsOverUdpProxyPort == null) || (dnsOverUdpProxyPort === "")) {
|
||||
showAlert("warning", "Missing!", "Please enter a value for DNS-over-UDP-PROXY Port.");
|
||||
$("#txtDnsOverUdpProxyPort").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
var dnsOverTcpProxyPort = $("#txtDnsOverTcpProxyPort").val();
|
||||
if ((dnsOverTcpProxyPort == null) || (dnsOverTcpProxyPort === "")) {
|
||||
showAlert("warning", "Missing!", "Please enter a value for DNS-over-TCP-PROXY Port.");
|
||||
$("#txtDnsOverTcpProxyPort").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
var dnsOverHttpPort = $("#txtDnsOverHttpPort").val();
|
||||
if ((dnsOverHttpPort == null) || (dnsOverHttpPort === "")) {
|
||||
showAlert("warning", "Missing!", "Please enter a value for DNS-over-HTTP Port.");
|
||||
@@ -1688,7 +1726,7 @@ function saveDnsSettings() {
|
||||
+ "&qpmLimitRequests=" + qpmLimitRequests + "&qpmLimitErrors=" + qpmLimitErrors + "&qpmLimitSampleMinutes=" + qpmLimitSampleMinutes + "&qpmLimitIPv4PrefixLength=" + qpmLimitIPv4PrefixLength + "&qpmLimitIPv6PrefixLength=" + qpmLimitIPv6PrefixLength
|
||||
+ "&clientTimeout=" + clientTimeout + "&tcpSendTimeout=" + tcpSendTimeout + "&tcpReceiveTimeout=" + tcpReceiveTimeout + "&quicIdleTimeout=" + quicIdleTimeout + "&quicMaxInboundStreams=" + quicMaxInboundStreams + "&listenBacklog=" + listenBacklog
|
||||
+ "&webServiceLocalAddresses=" + encodeURIComponent(webServiceLocalAddresses) + "&webServiceHttpPort=" + webServiceHttpPort + "&webServiceEnableTls=" + webServiceEnableTls + "&webServiceHttpToTlsRedirect=" + webServiceHttpToTlsRedirect + "&webServiceUseSelfSignedTlsCertificate=" + webServiceUseSelfSignedTlsCertificate + "&webServiceTlsPort=" + webServiceTlsPort + "&webServiceTlsCertificatePath=" + encodeURIComponent(webServiceTlsCertificatePath) + "&webServiceTlsCertificatePassword=" + encodeURIComponent(webServiceTlsCertificatePassword)
|
||||
+ "&enableDnsOverHttp=" + enableDnsOverHttp + "&enableDnsOverTls=" + enableDnsOverTls + "&enableDnsOverHttps=" + enableDnsOverHttps + "&enableDnsOverQuic=" + enableDnsOverQuic + "&dnsOverHttpPort=" + dnsOverHttpPort + "&dnsOverTlsPort=" + dnsOverTlsPort + "&dnsOverHttpsPort=" + dnsOverHttpsPort + "&dnsOverQuicPort=" + dnsOverQuicPort + "&dnsTlsCertificatePath=" + encodeURIComponent(dnsTlsCertificatePath) + "&dnsTlsCertificatePassword=" + encodeURIComponent(dnsTlsCertificatePassword)
|
||||
+ "&enableDnsOverUdpProxy=" + enableDnsOverUdpProxy + "&enableDnsOverTcpProxy=" + enableDnsOverTcpProxy + "&enableDnsOverHttp=" + enableDnsOverHttp + "&enableDnsOverTls=" + enableDnsOverTls + "&enableDnsOverHttps=" + enableDnsOverHttps + "&enableDnsOverQuic=" + enableDnsOverQuic + "&dnsOverUdpProxyPort=" + dnsOverUdpProxyPort + "&dnsOverTcpProxyPort=" + dnsOverTcpProxyPort + "&dnsOverHttpPort=" + dnsOverHttpPort + "&dnsOverTlsPort=" + dnsOverTlsPort + "&dnsOverHttpsPort=" + dnsOverHttpsPort + "&dnsOverQuicPort=" + dnsOverQuicPort + "&dnsTlsCertificatePath=" + encodeURIComponent(dnsTlsCertificatePath) + "&dnsTlsCertificatePassword=" + encodeURIComponent(dnsTlsCertificatePassword)
|
||||
+ "&tsigKeys=" + encodeURIComponent(tsigKeys)
|
||||
+ "&recursion=" + recursion + "&recursionDeniedNetworks=" + encodeURIComponent(recursionDeniedNetworks) + "&recursionAllowedNetworks=" + encodeURIComponent(recursionAllowedNetworks) + "&randomizeName=" + randomizeName + "&qnameMinimization=" + qnameMinimization + "&nsRevalidation=" + nsRevalidation + "&resolverRetries=" + resolverRetries + "&resolverTimeout=" + resolverTimeout + "&resolverMaxStackCount=" + resolverMaxStackCount
|
||||
+ "&saveCache=" + saveCache + "&serveStale=" + serveStale + "&serveStaleTtl=" + serveStaleTtl + "&cacheMaximumEntries=" + cacheMaximumEntries + "&cacheMinimumRecordTtl=" + cacheMinimumRecordTtl + "&cacheMaximumRecordTtl=" + cacheMaximumRecordTtl + "&cacheNegativeRecordTtl=" + cacheNegativeRecordTtl + "&cacheFailureRecordTtl=" + cacheFailureRecordTtl + "&cachePrefetchEligibility=" + cachePrefetchEligibility + "&cachePrefetchTrigger=" + cachePrefetchTrigger + "&cachePrefetchSampleIntervalInMinutes=" + cachePrefetchSampleIntervalInMinutes + "&cachePrefetchSampleEligibilityHitsPerHour=" + cachePrefetchSampleEligibilityHitsPerHour
|
||||
@@ -1697,87 +1735,7 @@ function saveDnsSettings() {
|
||||
+ "&enableLogging=" + enableLogging + "&logQueries=" + logQueries + "&useLocalTime=" + useLocalTime + "&logFolder=" + encodeURIComponent(logFolder) + "&maxLogFileDays=" + maxLogFileDays + "&maxStatFileDays=" + maxStatFileDays,
|
||||
processData: false,
|
||||
success: function (responseJSON) {
|
||||
document.title = responseJSON.response.dnsServerDomain + " - " + "Technitium DNS Server v" + responseJSON.response.version;
|
||||
$("#lblDnsServerDomain").text(" - " + responseJSON.response.dnsServerDomain);
|
||||
$("#txtDnsServerDomain").val(responseJSON.response.dnsServerDomain);
|
||||
|
||||
$("#txtAddEditRecordTtl").attr("placeholder", responseJSON.response.defaultRecordTtl);
|
||||
|
||||
//reload local addresses
|
||||
var webServiceLocalAddresses = responseJSON.response.webServiceLocalAddresses;
|
||||
if (webServiceLocalAddresses == null) {
|
||||
$("#txtWebServiceLocalAddresses").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < webServiceLocalAddresses.length; i++)
|
||||
value += webServiceLocalAddresses[i] + "\r\n";
|
||||
|
||||
$("#txtWebServiceLocalAddresses").val(value);
|
||||
}
|
||||
|
||||
//reset tls state
|
||||
$("#chkWebServiceEnableTls").prop("checked", responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceHttpToTlsRedirect").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#chkWebServiceUseSelfSignedTlsCertificate").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsPort").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePath").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
$("#txtWebServiceTlsCertificatePassword").prop("disabled", !responseJSON.response.webServiceEnableTls);
|
||||
|
||||
//optional protocols
|
||||
$("#lblDoHHost").text(window.location.hostname + (responseJSON.response.dnsOverHttpPort == 80 ? "" : ":" + responseJSON.response.dnsOverHttpPort));
|
||||
$("#lblDoTHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverTlsPort);
|
||||
$("#lblDoQHost").text("tls-certificate-domain:" + responseJSON.response.dnsOverQuicPort);
|
||||
$("#lblDoHsHost").text("tls-certificate-domain" + (responseJSON.response.dnsOverHttpsPort == 443 ? "" : ":" + responseJSON.response.dnsOverHttpsPort));
|
||||
|
||||
//reload tsig keys
|
||||
$("#tableTsigKeys").html("");
|
||||
|
||||
if (responseJSON.response.tsigKeys != null) {
|
||||
for (var i = 0; i < responseJSON.response.tsigKeys.length; i++) {
|
||||
addTsigKeyRow(responseJSON.response.tsigKeys[i].keyName, responseJSON.response.tsigKeys[i].sharedSecret, responseJSON.response.tsigKeys[i].algorithmName);
|
||||
}
|
||||
}
|
||||
|
||||
//fix custom block list url in case port changes
|
||||
{
|
||||
var optCustomLocalBlockList = $("#optCustomLocalBlockList");
|
||||
|
||||
optCustomLocalBlockList.attr("value", "http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt");
|
||||
optCustomLocalBlockList.text("Custom Local Block List (http://localhost:" + responseJSON.response.webServiceHttpPort + "/blocklist.txt)");
|
||||
}
|
||||
|
||||
if (enableBlocking)
|
||||
$("#lblTemporaryDisableBlockingTill").text("Not Set");
|
||||
|
||||
if (responseJSON.response.blockListNextUpdatedOn == null) {
|
||||
$("#lblBlockListNextUpdatedOn").text("Not Scheduled");
|
||||
}
|
||||
else {
|
||||
var blockListNextUpdatedOn = moment(responseJSON.response.blockListNextUpdatedOn);
|
||||
|
||||
if (moment().utc().isBefore(blockListNextUpdatedOn))
|
||||
$("#lblBlockListNextUpdatedOn").text(blockListNextUpdatedOn.local().format("YYYY-MM-DD HH:mm:ss"));
|
||||
else
|
||||
$("#lblBlockListNextUpdatedOn").text("Updating Now");
|
||||
}
|
||||
|
||||
$("#btnUpdateBlockListsNow").prop("disabled", (responseJSON.response.blockListUrls == null));
|
||||
|
||||
//reload forwarders
|
||||
var forwarders = responseJSON.response.forwarders;
|
||||
if (forwarders == null) {
|
||||
$("#txtForwarders").val("");
|
||||
}
|
||||
else {
|
||||
var value = "";
|
||||
|
||||
for (var i = 0; i < forwarders.length; i++)
|
||||
value += forwarders[i] + "\r\n";
|
||||
|
||||
$("#txtForwarders").val(value);
|
||||
}
|
||||
loadDnsSettings(responseJSON);
|
||||
|
||||
btn.button('reset');
|
||||
showAlert("success", "Settings Saved!", "DNS Server settings were saved successfully.");
|
||||
@@ -2424,7 +2382,7 @@ function resolveQuery(importRecords) {
|
||||
|
||||
var server = $("#txtDnsClientNameServer").val();
|
||||
|
||||
if (server.indexOf("recursive-resolver") !== -1)
|
||||
if ((server.indexOf("recursive-resolver") !== -1) || (server.indexOf("system-dns") !== -1))
|
||||
$("#optDnsClientProtocol").val("UDP");
|
||||
|
||||
var domain = $("#txtDnsClientDomain").val();
|
||||
@@ -2657,9 +2615,7 @@ function restoreSettings() {
|
||||
dataContentType: false,
|
||||
processData: false,
|
||||
success: function (responseJSON) {
|
||||
document.title = responseJSON.response.dnsServerDomain + " - " + "Technitium DNS Server v" + responseJSON.response.version;
|
||||
$("#lblDnsServerDomain").text(" - " + responseJSON.response.dnsServerDomain);
|
||||
$("#txtDnsServerDomain").val(responseJSON.response.dnsServerDomain);
|
||||
loadDnsSettings(responseJSON);
|
||||
|
||||
$("#modalRestoreSettings").modal("hide");
|
||||
btn.button('reset');
|
||||
|
||||
Reference in New Issue
Block a user