From 43470edaccb00cb7289bce5f2c33b72a5cd652aa Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Mon, 11 Dec 2017 00:19:48 +0530 Subject: [PATCH] WebPanel: implemented log management user interface. --- DnsServerCore/www/css/main.css | 19 +++++++ DnsServerCore/www/index.html | 31 +++++++++++ DnsServerCore/www/js/common.js | 72 +++++++++++++++++++++++++ DnsServerCore/www/js/main.js | 98 +++++++++++++++++++++++++++++++++- 4 files changed, 219 insertions(+), 1 deletion(-) diff --git a/DnsServerCore/www/css/main.css b/DnsServerCore/www/css/main.css index b3d4c55a..d24c04b1 100644 --- a/DnsServerCore/www/css/main.css +++ b/DnsServerCore/www/css/main.css @@ -183,3 +183,22 @@ label { .zone-viewer-pane .resource-record { background-color: #f5f5f5; } + +.log-list-pane { + float: left; + width: 15%; +} + +.logs { + font-size: 12px; +} + + .logs .log { + padding: 2px; + } + +.log-viewer-pane { + float: right; + width: 84%; + display: none; +} diff --git a/DnsServerCore/www/index.html b/DnsServerCore/www/index.html index 00da8627..27add454 100644 --- a/DnsServerCore/www/index.html +++ b/DnsServerCore/www/index.html @@ -88,6 +88,7 @@ +
@@ -478,6 +479,36 @@
+
+ +
+
+ +
+
+ +
+
+
+
20171012
+
+ + +
+
+ +
+
+ + +
+
+
+ +
+ diff --git a/DnsServerCore/www/js/common.js b/DnsServerCore/www/js/common.js index 827ef3c0..e48556a1 100644 --- a/DnsServerCore/www/js/common.js +++ b/DnsServerCore/www/js/common.js @@ -138,6 +138,78 @@ function HTTPRequest(url, data, success, error, invalidToken, objAlertPlaceholde return successFlag; } +function HTTPGetFileRequest(url, success, error, objAlertPlaceholder, objLoaderPlaceholder, dontHideAlert) { + + var async = false; + var finalUrl; + + finalUrl = arguments[0].url; + + if (success != null) + async = true; + else + if (arguments[0].success != null) { + async = true; + success = arguments[0].success; + } + + if (error == null) + error = arguments[0].error; + + if (objAlertPlaceholder == null) + objAlertPlaceholder = arguments[0].objAlertPlaceholder; + + if (dontHideAlert == null) + dontHideAlert = arguments[0].dontHideAlert; + + if ((dontHideAlert == null) || !dontHideAlert) + hideAlert(objAlertPlaceholder); + + if (objLoaderPlaceholder == null) + objLoaderPlaceholder = arguments[0].objLoaderPlaceholder; + + if (objLoaderPlaceholder != null) + objLoaderPlaceholder.html("
"); + + var successFlag = false; + + $.ajax({ + type: "GET", + url: finalUrl, + async: async, + cache: false, + success: function (response, status, jqXHR) { + + if (objLoaderPlaceholder != null) + objLoaderPlaceholder.html(""); + + if (success == null) + successFlag = true; + else + success(response); + }, + error: function (jqXHR, textStatus, errorThrown) { + + if (objLoaderPlaceholder != null) + objLoaderPlaceholder.html(""); + + if (error != null) + error(); + + var msg; + + if ((textStatus === "error") && (errorThrown === "")) + msg = "Unable to connect to the server. Please try again." + else + msg = textStatus + " - " + errorThrown; + + showAlert("danger", "Error!", msg, objAlertPlaceholder); + } + }); + + return successFlag; +} + function showAlert(type, title, message, objAlertPlaceholder) { var alertHTML = "
\ \ diff --git a/DnsServerCore/www/js/main.js b/DnsServerCore/www/js/main.js index 082ae3a9..ac17b768 100644 --- a/DnsServerCore/www/js/main.js +++ b/DnsServerCore/www/js/main.js @@ -465,7 +465,7 @@ function refreshZonesList(hideLoader) { for (var i = 0; i < zones.length; i++) { var zoneName = htmlEncode(zones[i].zoneName); - list += "" + list += "" } lstZones.html(list); @@ -1421,3 +1421,99 @@ function resolveQuery(importRecords) { return false; } + +function refreshLogFilesList() { + + var lstLogFiles = $("#lstLogFiles"); + + HTTPRequest({ + url: "/api/listLogs?token=" + token, + success: function (responseJSON) { + var logFiles = responseJSON.response.logFiles; + + var list = ""; + + for (var i = 0; i < logFiles.length; i++) { + var logFile = logFiles[i]; + + list += "" + } + + lstLogFiles.html(list); + }, + invalidToken: function () { + showPageLogin(); + }, + objLoaderPlaceholder: lstLogFiles + }); + + return false; +} + +function viewLog(logFile) { + + var divLogViewer = $("#divLogViewer"); + var txtLogViewerTitle = $("#txtLogViewerTitle"); + var divLogViewerLoader = $("#divLogViewerLoader"); + var preLogViewerBody = $("#preLogViewerBody"); + + txtLogViewerTitle.text(logFile); + + preLogViewerBody.hide(); + divLogViewerLoader.show(); + divLogViewer.show(); + + HTTPGetFileRequest({ + url: "/log/" + logFile + "?token=" + token, + success: function (response) { + + divLogViewerLoader.hide(); + + preLogViewerBody.text(response); + preLogViewerBody.show(); + }, + objLoaderPlaceholder: divLogViewerLoader + }); + + return false; +} + +function downloadLog() { + + var logFile = $("#txtLogViewerTitle").text(); + + window.open("/log/" + logFile + "?token=" + token, "_blank"); + + return false; +} + +function deleteLog() { + + var logFile = $("#txtLogViewerTitle").text(); + + if (!confirm("Are you sure you want to permanently delete the log file '" + logFile + "'?")) + return false; + + var btn = $("#btnDeleteLog").button('loading'); + + HTTPRequest({ + url: "/api/deleteLog?token=" + token + "&log=" + logFile, + success: function (responseJSON) { + refreshLogFilesList(); + + $("#divLogViewer").hide(); + btn.button('reset'); + + showAlert("success", "Log Deleted!", "Log file was deleted successfully."); + }, + error: function () { + btn.button('reset'); + }, + invalidToken: function () { + btn.button('reset'); + showPageLogin(); + } + }); + + return false; +} \ No newline at end of file