From 958dc789acc4887ad8418829589b7a6d58109c72 Mon Sep 17 00:00:00 2001 From: George Shaw Date: Sun, 26 Nov 2017 15:50:24 -0600 Subject: [PATCH 1/2] account public server management from server done, need to do logs --- pkg/gpserver/apihandler.go | 8 +++++ .../bundles/specific/server/maintenance.js | 20 +++++++++++ .../bundles/specific/server/restart.js | 33 +++++++++++++++++++ .../bundles/specific/server/shutdown.js | 32 ++++++++++++++++++ .../bundles/specific/server/start.js | 25 ++++++++++++++ server/document_root/gPanel.html | 4 +++ 6 files changed, 122 insertions(+) create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/server/maintenance.js create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/server/restart.js create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/server/shutdown.js create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/server/start.js diff --git a/pkg/gpserver/apihandler.go b/pkg/gpserver/apihandler.go index 367f7c2..5075060 100644 --- a/pkg/gpserver/apihandler.go +++ b/pkg/gpserver/apihandler.go @@ -47,6 +47,14 @@ func (con *Controller) apiHandler(res http.ResponseWriter, req *http.Request) (b switch suspectApi { case "/server/status": return true, server.Status(res, req, specific.Public) + case "/server/start": + return true, server.Start(res, req, specific.Public) + case "/server/shutdown": + return true, server.Shutdown(res, req, specific.Public) + case "/server/maintenance": + return true, server.Maintenance(res, req, specific.Public) + case "/server/restart": + return true, server.Restart(res, req, specific.Public) default: return false, false } diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/server/maintenance.js b/server/document_root/assets/js/panelHandlers/bundles/specific/server/maintenance.js new file mode 100644 index 0000000..aa625c9 --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/server/maintenance.js @@ -0,0 +1,20 @@ +jQuery('._js_specific-bundle-public-maintenance-mode').on('click', function(e){ + e.preventDefault(); + + var name = jQuery('.specific-bundle-modal').attr('data'); + var requestData = {}; + requestData["bundle_name"] = name; + + var xhr = new XMLHttpRequest(); + xhr.open('UPDATE', 'api/server/maintenance', true); + xhr.send(JSON.stringify(requestData)); + + xhr.onloadend = function() { + if(xhr.status == 204) { + getPublicServerStatus(name); + } + else { + alert('An error has occurred, please contact your webhost administrator.'); + } + } +}); diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/server/restart.js b/server/document_root/assets/js/panelHandlers/bundles/specific/server/restart.js new file mode 100644 index 0000000..2fa44b3 --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/server/restart.js @@ -0,0 +1,33 @@ +jQuery('._js_specific-bundle-public-restart-graceful, ._js_specific-bundle-public-restart-forceful').on('click', function(e){ + e.preventDefault(); + + var name = jQuery('.specific-bundle-modal').attr('data'); + var requestData = {}; + requestData["bundle_name"] = name + + if(jQuery(this).hasClass('_js_specific-bundle-public-restart-graceful')) { + requestData["graceful"] = true; + } + else { + requestData["graceful"] = false; + } + + var xhr = new XMLHttpRequest(); + xhr.open('UPDATE', 'api/server/restart', true); + xhr.send(JSON.stringify(requestData)); + + xhr.onloadend = function() { + if(xhr.status == 204) { + getPublicServerStatus(name); + alert('Server successfully restarted.'); + } + else { + if(xhr.response) { + alert(xhr.response); + } + else { + alert('An error has occurred, please contact your webhost administrator.'); + } + } + } +}); diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/server/shutdown.js b/server/document_root/assets/js/panelHandlers/bundles/specific/server/shutdown.js new file mode 100644 index 0000000..1b5f92f --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/server/shutdown.js @@ -0,0 +1,32 @@ +jQuery('._js_specific-bundle-public-shutdown-graceful, ._js_specific-bundle-public-shutdown-forceful').on('click', function(e){ + e.preventDefault(); + + var name = jQuery('.specific-bundle-modal').attr('data'); + var requestData = {}; + requestData["bundle_name"] = name; + + if(jQuery(this).hasClass('_js_specific-bundle-public-shutdown-graceful')) { + requestData["graceful"] = true; + } + else { + requestData["graceful"] = false; + } + + var xhr = new XMLHttpRequest(); + xhr.open('UPDATE', 'api/server/shutdown', true); + xhr.send(JSON.stringify(requestData)); + + xhr.onloadend = function() { + if(xhr.status == 204) { + getPublicServerStatus(name); + } + else { + if(xhr.response) { + alert(xhr.response); + } + else { + alert('An error has occurred, please contact your webhost administrator.'); + } + } + } +}); diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/server/start.js b/server/document_root/assets/js/panelHandlers/bundles/specific/server/start.js new file mode 100644 index 0000000..b8a3c4c --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/server/start.js @@ -0,0 +1,25 @@ +jQuery('._js_specific-bundle-public-start').on('click', function(e){ + e.preventDefault(); + + var name = jQuery('.specific-bundle-modal').attr('data'); + requestData = {}; + requestData["bundle_name"] = name; + + var xhr = new XMLHttpRequest(); + xhr.open('UPDATE', 'api/server/start', true); + xhr.send(JSON.stringify(requestData)); + + xhr.onloadend = function() { + if(xhr.status == 204) { + getPublicServerStatus(name); + } + else { + if(xhr.response) { + alert(xhr.response); + } + else { + alert('An error has occurred, please contact your webhost administrator.'); + } + } + } +}); diff --git a/server/document_root/gPanel.html b/server/document_root/gPanel.html index 49d88ff..76cccc8 100644 --- a/server/document_root/gPanel.html +++ b/server/document_root/gPanel.html @@ -230,6 +230,10 @@ + + + + From a786ed3094ae3d8b81c406878cf1dde89cb0cb41 Mon Sep 17 00:00:00 2001 From: George Shaw Date: Sun, 26 Nov 2017 18:38:49 -0600 Subject: [PATCH 2/2] accessing bundle logs from server now works --- pkg/gpserver/apihandler.go | 4 ++ .../bundles/specific/log/back.js | 11 ++++ .../bundles/specific/log/view.js | 62 +++++++++++++++++++ .../assets/js/panelHandlers/log/delete.js | 9 +++ server/document_root/gPanel.html | 4 ++ 5 files changed, 90 insertions(+) create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/log/back.js create mode 100644 server/document_root/assets/js/panelHandlers/bundles/specific/log/view.js diff --git a/pkg/gpserver/apihandler.go b/pkg/gpserver/apihandler.go index 5075060..c2d5253 100644 --- a/pkg/gpserver/apihandler.go +++ b/pkg/gpserver/apihandler.go @@ -55,6 +55,10 @@ func (con *Controller) apiHandler(res http.ResponseWriter, req *http.Request) (b return true, server.Maintenance(res, req, specific.Public) case "/server/restart": return true, server.Restart(res, req, specific.Public) + case "/log/read": + return true, log.Read(res, req, specific.Directory) + case "/log/delete": + return true, log.Delete(res, req, specific.Directory) default: return false, false } diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/log/back.js b/server/document_root/assets/js/panelHandlers/bundles/specific/log/back.js new file mode 100644 index 0000000..3a6fb76 --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/log/back.js @@ -0,0 +1,11 @@ +jQuery('._js_back-to-specific-bundle').on('click', function(e){ + e.preventDefault(); + + jQuery('.view-log-modal').modal('hide'); + jQuery('.specific-bundle-modal').modal('show'); +}); + +jQuery('.view-log-modal').on('hidden.bs.modal', function(e){ + jQuery('._js_back-to-specific-bundle').removeClass('d-none'); + jQuery('._js_back-to-specific-bundle').addClass('d-none'); +}); diff --git a/server/document_root/assets/js/panelHandlers/bundles/specific/log/view.js b/server/document_root/assets/js/panelHandlers/bundles/specific/log/view.js new file mode 100644 index 0000000..4ac531d --- /dev/null +++ b/server/document_root/assets/js/panelHandlers/bundles/specific/log/view.js @@ -0,0 +1,62 @@ +var logModal = jQuery('.view-log-modal'); + +jQuery('._js_specific-bundle-log-view').on('click', function(e){ + e.preventDefault(); + + var logName = jQuery(this).attr('data'); + + var title; + switch(logName) { + case "public_errors": + title = "Public Error Log"; + break; + case "account_errors": + title = "Account Error Log"; + break; + case "public_load_time": + title = "Public Load Time Log"; + break; + default: + return; + break; + } + jQuery(logModal).find('.modal-title').html(title); + jQuery(logModal).find('._js_back-to-specific-bundle').removeClass('d-none'); + jQuery(logModal).find('._js_log-clear').attr('data', logName); + + var name = jQuery('.specific-bundle-modal').attr('data'); + + var requestData = {}; + requestData["bundle_name"] = name; + requestData["name"] = logName; + + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'api/log/read', true); + xhr.send(JSON.stringify(requestData)); + + xhr.onloadend = function() { + if(xhr.status == 200) { + var responseData; + + if(xhr.response != undefined && xhr.response.length != 0) { + responseData = xhr.response; + } + else { + responseData = "The log is currently empty." + } + + jQuery(logModal).find('.modal-body textarea').html(responseData); + jQuery('.specific-bundle-modal').modal('hide'); + jQuery(logModal).modal('show'); + } + else { + if(xhr.response != undefined && xhr.response.length != 0) { + alert(xhr.response); + } + else { + alert('An error has occurred, please contact your webhost administrator.'); + } + } + } + +}); diff --git a/server/document_root/assets/js/panelHandlers/log/delete.js b/server/document_root/assets/js/panelHandlers/log/delete.js index 6b81873..52217e1 100644 --- a/server/document_root/assets/js/panelHandlers/log/delete.js +++ b/server/document_root/assets/js/panelHandlers/log/delete.js @@ -10,6 +10,15 @@ jQuery('._js_log-clear').on('click', function(e){ case "server_errors": title = "Server Error Log"; break; + case "public_errors": + title = "Public Error Log"; + break; + case "account_errors": + title = "Account Error Log"; + break; + case "public_load_time": + title = "Public Load Time Log"; + break; default: return; break; diff --git a/server/document_root/gPanel.html b/server/document_root/gPanel.html index 76cccc8..5d34e64 100644 --- a/server/document_root/gPanel.html +++ b/server/document_root/gPanel.html @@ -169,6 +169,7 @@ @@ -235,6 +236,9 @@ + + +