From e9473088d594ce48510bc0cc113028f03e492297 Mon Sep 17 00:00:00 2001 From: Aidaho Date: Mon, 4 Nov 2024 11:19:00 +0300 Subject: [PATCH] v8.1.2: Enhance server status checks and exception handling logic Improved the server status check by adding sessionStorage management and handling responses for better UI feedback. Changed some function signatures for consistency and better error handling. Updated routes and database initialization to reflect new functions and database versions. --- app/api/routes/routes.py | 2 +- app/create_db.py | 1 + app/modules/roxywi/common.py | 2 +- app/routes/server/routes.py | 2 +- app/static/js/admin/server.js | 13 +++++++++++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 950fb91b..c085dfe9 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -81,7 +81,7 @@ register_api_id_ip(CheckerView, 'checker', '/tools') register_api_id_ip(InstallView, 'install', '/install', methods=['POST', 'PUT', 'DELETE']) register_api_id_ip(ServiceActionView, 'service_action', '/', methods=['GET']) -register_api(ServerView, 'server', '/server', 'server_id') +register_api_for_not_api(ServerView, 'server', '/server', 'server_id') register_api(BackupView, 'backup_fs', '/server/backup/fs', 'backup_id') register_api(S3BackupView, 'backup_s3', '/server/backup/s3', 'backup_id') register_api(GitBackupView, 'backup_git', '/server/backup/git', 'backup_id') diff --git a/app/create_db.py b/app/create_db.py index 3072a6b1..b4e84313 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -722,4 +722,5 @@ def update_all(): update_db_v_8_1_0_1() update_db_v_8_1_0_2() update_db_v_8_1_0_3() + update_db_v_8_1_2() update_ver() diff --git a/app/modules/roxywi/common.py b/app/modules/roxywi/common.py index 4892d9de..73c325a0 100644 --- a/app/modules/roxywi/common.py +++ b/app/modules/roxywi/common.py @@ -323,7 +323,7 @@ def handle_json_exceptions(ex: Exception, message: str, server_ip='Roxy-WI serve return ErrorResponse(error=f'{message}: {ex}').model_dump(mode='json') -def handler_exceptions_for_json_data(ex: Exception, main_ex_mes: str) -> tuple[dict, int]: +def handler_exceptions_for_json_data(ex: Exception, main_ex_mes: str = '') -> tuple[dict, int]: if isinstance(ex, KeyError): return handle_json_exceptions(ex, 'Missing key in JSON data'), 500 elif isinstance(ex, ValueError): diff --git a/app/routes/server/routes.py b/app/routes/server/routes.py index 2a7e3ac9..dabc8eee 100644 --- a/app/routes/server/routes.py +++ b/app/routes/server/routes.py @@ -62,7 +62,7 @@ def check_server(server_id): try: server = server_sql.get_server_by_id(server_id) except Exception as e: - raise e + return roxywi_common.handler_exceptions_for_json_data(e) result = server_mod.server_is_up(server.ip) status = { "status": result, diff --git a/app/static/js/admin/server.js b/app/static/js/admin/server.js index a57ae330..5539f459 100644 --- a/app/static/js/admin/server.js +++ b/app/static/js/admin/server.js @@ -341,10 +341,23 @@ function showServerInfo(id, ip) { }); } async function serverIsUp(server_id) { + if (sessionStorage.getItem('server-' + server_id) === '0') { + return false; + } let server_div = $('#server_status-' + server_id); $.ajax({ url: "/server/check/server/" + server_id, contentType: "application/json; charset=utf-8", + statusCode: { + 204: function (xhr) { + $("#server-" + server_id).remove(); + sessionStorage.setItem('server-'+server_id, '0'); + }, + 404: function (xhr) { + $("#server-" + server_id).remove(); + sessionStorage.setItem('server-'+server_id, '0'); + } + }, success: function (data) { if (data.status === 'up') { server_div.removeClass('serverNone');