diff --git a/pkg/gpserver/apihandler.go b/pkg/gpserver/apihandler.go index 367f7c2..c2d5253 100644 --- a/pkg/gpserver/apihandler.go +++ b/pkg/gpserver/apihandler.go @@ -47,6 +47,18 @@ 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) + 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/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/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 49d88ff..5d34e64 100644 --- a/server/document_root/gPanel.html +++ b/server/document_root/gPanel.html @@ -169,6 +169,7 @@ @@ -230,6 +231,13 @@ + + + + + + +