From 668808529244480e15d21dfc4895cd0e5455c8c5 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sun, 2 Oct 2022 22:23:59 +0100 Subject: [PATCH 01/57] Prepare 4.0.16 release base --- CHANGELOG.md | 11 +++++++++++ README.md | 2 +- app/config/version.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e7599cf..939f950e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ # Changelog +## --- [4.0.16] - 2022/TBD +### New features +TBD +### Bug fixes +TBD +### Tweaks +TBD +### Lang +TBD +

+ ## --- [4.0.15] - 2022/10/02 ### New features - Base Theme Switching (Dark, Light, Default) 🤩🎨 ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/471)) diff --git a/README.md b/README.md index 6010290d..f211adf8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Supported Python Versions](https://shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20-blue)](https://www.python.org) -[![Version(temp-hardcoded)](https://img.shields.io/badge/release-v4.0.15--beta-orange)](https://gitlab.com/crafty-controller/crafty-4/-/releases) +[![Version(temp-hardcoded)](https://img.shields.io/badge/release-v4.0.16--beta-orange)](https://gitlab.com/crafty-controller/crafty-4/-/releases) [![Code Quality(temp-hardcoded)](https://img.shields.io/badge/code%20quality-10-brightgreen)](https://gitlab.com/crafty-controller/crafty-4) [![Build Status](https://gitlab.com/crafty-controller/crafty-4/badges/master/pipeline.svg)](https://gitlab.com/crafty-controller/crafty-4/-/commits/master) diff --git a/app/config/version.json b/app/config/version.json index 19d34c97..a3b99705 100644 --- a/app/config/version.json +++ b/app/config/version.json @@ -1,6 +1,6 @@ { "major": 4, "minor": 0, - "sub": 15, + "sub": 16, "meta": "beta" } From 99693324dccb06fc862590568bb7fabacdbb775f Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Mon, 3 Oct 2022 18:48:49 +0200 Subject: [PATCH 02/57] Fix scrolling of sidebar --- app/frontend/static/assets/css/crafty.css | 24 +++++ app/frontend/templates/base.html | 119 +++++++++++----------- app/frontend/templates/main_menu.html | 7 +- 3 files changed, 88 insertions(+), 62 deletions(-) diff --git a/app/frontend/static/assets/css/crafty.css b/app/frontend/static/assets/css/crafty.css index a04d2542..d50f0c15 100644 --- a/app/frontend/static/assets/css/crafty.css +++ b/app/frontend/static/assets/css/crafty.css @@ -21,6 +21,30 @@ display: block; } +.sticky-sidebar { + position: fixed; + max-height: fit-content; + width: (100% - 270px); + z-index: 100; +} + +.main-panel { + margin-left: 70px; + margin-top: 63px; +} + +@media (min-width: 1200px) { + .main-panel { + margin-left: 270px; + } +} + +@media (max-width: 991px) { + .main-panel { + margin-left: 0px; + } +} + .toggle-handle { background-color: white !important; } diff --git a/app/frontend/templates/base.html b/app/frontend/templates/base.html index 786037fa..b9a77b87 100755 --- a/app/frontend/templates/base.html +++ b/app/frontend/templates/base.html @@ -15,7 +15,7 @@ + href="https://cdn.datatables.net/v/bs4/dt-1.10.22/fh-3.1.7/r-2.2.6/sc-2.0.3/sp-1.2.2/datatables.min.css" /> @@ -41,73 +41,74 @@ + integrity="sha512-ElRFoEQdI5Ht6kZvyzXhYG9NqjtkmlkfYk0wr6wHxU9JEHakS7UJZNeml5ALk+8IKlU6jDgMabC3vkumRokgJA==" + crossorigin="anonymous" referrerpolicy="no-referrer"> + integrity="sha512-UXumZrZNiOwnTcZSHLOfcTs0aos2MzBWHXOHOuB0J/R44QB0dwY5JgfbvljXcklVf65Gc4El6RjZ+lnwd2az2g==" + crossorigin="anonymous" referrerpolicy="no-referrer"> + integrity="sha512-klQv6lz2YR+MecyFYMFRuU2eAl8IPRo6zHnsc9n142TJuJHS8CG0ix4Oq9na9ceeg1u5EkBfZsFcV3U7J51iew==" + crossorigin="anonymous" referrerpolicy="no-referrer"> -
- - - - {% include main_menu.html %} - -
- -
- -
- - {% block content %} - {% end %} - - {% include footer.html %} - + + + +
+
+ +
+ +
+ +
+ + {% block content %} + {% end %} + + {% include footer.html %} + +
+ +
+
@@ -173,7 +174,7 @@ + src="https://cdn.datatables.net/v/bs4/dt-1.10.22/fh-3.1.7/r-2.2.6/sc-2.0.3/sp-1.2.2/datatables.min.js"> diff --git a/app/frontend/templates/main_menu.html b/app/frontend/templates/main_menu.html index be21d152..f65c55e9 100644 --- a/app/frontend/templates/main_menu.html +++ b/app/frontend/templates/main_menu.html @@ -1,5 +1,5 @@ -
+
+ + + {% end %} @@ -712,94 +793,15 @@ } else { bootbox.alert("You must input a path before selecting this button"); } + - .scroll { - max - height: 12em; - overflow - y: auto; - } +{% end %} - .menu - btn { - font - size: 0.9em; - padding: 2px 10px; - } - - .menu { - padding - top: 10px; - z - index: 200; - margin - top: 4px; - position: absolute; - background - color: #2a2c44; - } - - .menu - option { - padding: 6px 20px 6px; - color: white; - } - - #overlay { - position: absolute; - top: 0px; - left: 0px; - width: 100 %; - height: 100 %; - z - index: 100; - } - - - - {% end %} - - {% block js %} - - - - - - - - - - + +
+ + + + + + + + + + + + + \ No newline at end of file From 2e212cc788e5102f9b060bb0f748bbcfefa87a39 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 4 Oct 2022 15:55:52 -0400 Subject: [PATCH 07/57] Add port constraint for all server creation & api --- app/classes/shared/main_controller.py | 1 + app/classes/web/panel_handler.py | 6 ++++++ app/classes/web/routes/api/servers/index.py | 19 +++++++++++++++++-- app/classes/web/server_handler.py | 12 ++++++++++++ .../templates/server/bedrock_wizard.html | 6 +++--- app/frontend/templates/server/wizard.html | 8 ++++---- 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index 68645b86..f61941ca 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -420,6 +420,7 @@ class Controller: and root_create_data["create_type"] == "download_jar" ): self.server_jars.download_jar( + create_data["category"], create_data["type"], create_data["version"], full_jar_path, diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index d8c8b5c4..9111d358 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -1501,6 +1501,12 @@ class PanelHandler(BaseHandler): execution_command = self.get_argument("execution_command", None) server_ip = self.get_argument("server_ip", None) server_port = self.get_argument("server_port", None) + if int(server_port) < 1 or int(server_port) > 65535: + self.redirect( + "/panel/error?error=Constraint Error: " + "Port must be greater than 0 and less than 65535" + ) + return executable_update_url = self.get_argument("executable_update_url", "") show_status = int(float(self.get_argument("show_status", "0"))) else: diff --git a/app/classes/web/routes/api/servers/index.py b/app/classes/web/routes/api/servers/index.py index b94b4c01..a68e845b 100644 --- a/app/classes/web/routes/api/servers/index.py +++ b/app/classes/web/routes/api/servers/index.py @@ -648,7 +648,7 @@ class ApiServersIndexHandler(BaseApiHandler): try: data = orjson.loads(self.request.body) - except orjson.decoder.JSONDecodeError as e: + except orjson.JSONDecodeError as e: return self.finish_json( 400, {"status": "error", "error": "INVALID_JSON", "error_data": str(e)} ) @@ -664,7 +664,22 @@ class ApiServersIndexHandler(BaseApiHandler): "error_data": str(e), }, ) - + # Check to make sure port is allowable + if data["monitoring_type"] == "minecraft_java": + try: + port = data["minecraft_java_monitoring_data"]["port"] + except: + port = 25565 + else: + try: + port = data["minecraft_bedrock_monitoring_data"]["port"] + except: + port = 19132 + if port > 65535 or port < 1: + self.finish_json( + 405, {"status": "error", "error": "DATA CONSTRAINT FAILED"} + ) + return new_server_id, new_server_uuid = self.controller.create_api_server( data, user["user_id"] ) diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index b2419905..d60ce2a2 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -311,6 +311,12 @@ class ServerHandler(BaseHandler): min_mem = bleach.clean(self.get_argument("min_memory", "")) max_mem = bleach.clean(self.get_argument("max_memory", "")) port = bleach.clean(self.get_argument("port", "")) + if int(port) < 1 or int(port) > 65535: + self.redirect( + "/panel/error?error=Constraint Error: " + "Port must be greater than 0 and less than 65535" + ) + return import_type = bleach.clean(self.get_argument("create_type", "")) import_server_path = bleach.clean(self.get_argument("server_path", "")) import_server_jar = bleach.clean(self.get_argument("server_jar", "")) @@ -451,6 +457,12 @@ class ServerHandler(BaseHandler): server = bleach.clean(self.get_argument("server", "")) server_name = bleach.clean(self.get_argument("server_name", "")) port = bleach.clean(self.get_argument("port", "")) + if int(port) < 1 or int(port) > 65535: + self.redirect( + "/panel/error?error=Constraint Error: " + "Port must be greater than 0 and less than 65535" + ) + return import_type = bleach.clean(self.get_argument("create_type", "")) import_server_path = bleach.clean(self.get_argument("server_path", "")) import_server_exe = bleach.clean(self.get_argument("server_jar", "")) diff --git a/app/frontend/templates/server/bedrock_wizard.html b/app/frontend/templates/server/bedrock_wizard.html index 2ec6f4e8..8b9839e1 100644 --- a/app/frontend/templates/server/bedrock_wizard.html +++ b/app/frontend/templates/server/bedrock_wizard.html @@ -131,7 +131,7 @@ + max="65535" required>
@@ -241,7 +241,7 @@ + max="65535" required>
@@ -387,7 +387,7 @@ + max="65535" required> diff --git a/app/frontend/templates/server/wizard.html b/app/frontend/templates/server/wizard.html index 319dff65..8346ca92 100644 --- a/app/frontend/templates/server/wizard.html +++ b/app/frontend/templates/server/wizard.html @@ -109,7 +109,7 @@ + max="65535 " required>
@@ -224,7 +224,7 @@ + max="65535" required>
@@ -351,7 +351,7 @@ + max="65535" required>
@@ -515,7 +515,7 @@ + max="65535" required> From 3681f528563592e7905da81950db26f5bf0cf1cf Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 4 Oct 2022 16:07:08 -0400 Subject: [PATCH 08/57] Fix scheduled task disable --- app/classes/shared/tasks.py | 10 +++++++++- .../web/routes/api/servers/server/tasks/task/index.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/classes/shared/tasks.py b/app/classes/shared/tasks.py index a0c2eb7a..ae724ab2 100644 --- a/app/classes/shared/tasks.py +++ b/app/classes/shared/tasks.py @@ -436,7 +436,15 @@ class TasksManager: and "cron_string" in job_data and "interval_type" in job_data ): - return + if not "enabled" in job_data: + return + else: + if job_data["enabled"] is True: + job_data = HelpersManagement.get_scheduled_task(sch_id) + job_data["server_id"] = job_data["server_id"]["server_id"] + else: + self.scheduler.remove_job(str(sch_id)) + return try: if job_data["interval"] != "reaction": diff --git a/app/classes/web/routes/api/servers/server/tasks/task/index.py b/app/classes/web/routes/api/servers/server/tasks/task/index.py index 3c567fdd..c4ddde8d 100644 --- a/app/classes/web/routes/api/servers/server/tasks/task/index.py +++ b/app/classes/web/routes/api/servers/server/tasks/task/index.py @@ -97,7 +97,7 @@ class ApiServersServerTasksTaskIndexHandler(BaseApiHandler): if str(data.get("parent")) == str(task_id) and data.get("parent") is not None: data["parent"] = None - HelpersManagement.update_scheduled_task(task_id, data) + self.tasks_manager.update_job(task_id, data) self.controller.management.add_to_audit_log( auth_data[4]["user_id"], From b8e0e2b0fb8ad6975f73bedf2507419e3c9a1e10 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 4 Oct 2022 16:14:22 -0400 Subject: [PATCH 09/57] Add catch for those that have existing bad ports --- app/classes/minecraft/mc_ping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/classes/minecraft/mc_ping.py b/app/classes/minecraft/mc_ping.py index 039e8359..3417967c 100644 --- a/app/classes/minecraft/mc_ping.py +++ b/app/classes/minecraft/mc_ping.py @@ -139,7 +139,7 @@ def ping(ip, port): try: sock.connect((ip, port)) - except socket.error: + except: return False try: From ad419603385ecb7b74f81ee304cd4d0af1af93d1 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 4 Oct 2022 16:23:29 -0400 Subject: [PATCH 10/57] Appease the linter --- app/classes/web/routes/api/servers/server/tasks/task/index.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/classes/web/routes/api/servers/server/tasks/task/index.py b/app/classes/web/routes/api/servers/server/tasks/task/index.py index c4ddde8d..72bbf7b0 100644 --- a/app/classes/web/routes/api/servers/server/tasks/task/index.py +++ b/app/classes/web/routes/api/servers/server/tasks/task/index.py @@ -4,7 +4,6 @@ import json import logging from jsonschema import ValidationError, validate -from app.classes.models.management import HelpersManagement from app.classes.models.server_permissions import EnumPermissionsServer from app.classes.web.base_api_handler import BaseApiHandler From c58e4e3ebf291b361ed44e78ab7ad4510adebb62 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 4 Oct 2022 16:37:53 -0400 Subject: [PATCH 11/57] Clean up backup configs when deleting servers --- app/classes/controllers/servers_controller.py | 5 +++++ app/classes/models/management.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/app/classes/controllers/servers_controller.py b/app/classes/controllers/servers_controller.py index c1d5177c..b0a9044a 100644 --- a/app/classes/controllers/servers_controller.py +++ b/app/classes/controllers/servers_controller.py @@ -134,8 +134,13 @@ class ServersController(metaclass=Singleton): role_id = role.role_id role_data = RolesController.get_role_with_servers(role_id) role_data["servers"] = {server_id} + # Remove server id permissions from role PermissionsServers.delete_roles_permissions(role_id, role_data["servers"]) + # Remove roles from server PermissionsServers.remove_roles_of_server(server_id) + # Remove backup configs tied to server + self.management_helper.remove_backup_config(server_id) + # Finally remove server self.servers_helper.remove_server(server_id) @staticmethod diff --git a/app/classes/models/management.py b/app/classes/models/management.py index 67d1ff9c..c961f002 100644 --- a/app/classes/models/management.py +++ b/app/classes/models/management.py @@ -367,6 +367,10 @@ class HelpersManagement: } return conf + @staticmethod + def remove_backup_config(server_id): + Backups.delete().where(Backups.server_id == server_id).execute() + def set_backup_config( self, server_id: int, From d87a2c4c173daf261d29bea07d451413b5021a4a Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Tue, 4 Oct 2022 23:03:42 +0200 Subject: [PATCH 12/57] Revert "Fix scrolling of sidebar" This reverts commit 99693324dccb06fc862590568bb7fabacdbb775f. --- app/frontend/static/assets/css/crafty.css | 24 ----- app/frontend/templates/base.html | 109 +++++++++++----------- app/frontend/templates/main_menu.html | 7 +- 3 files changed, 57 insertions(+), 83 deletions(-) diff --git a/app/frontend/static/assets/css/crafty.css b/app/frontend/static/assets/css/crafty.css index d50f0c15..a04d2542 100644 --- a/app/frontend/static/assets/css/crafty.css +++ b/app/frontend/static/assets/css/crafty.css @@ -21,30 +21,6 @@ display: block; } -.sticky-sidebar { - position: fixed; - max-height: fit-content; - width: (100% - 270px); - z-index: 100; -} - -.main-panel { - margin-left: 70px; - margin-top: 63px; -} - -@media (min-width: 1200px) { - .main-panel { - margin-left: 270px; - } -} - -@media (max-width: 991px) { - .main-panel { - margin-left: 0px; - } -} - .toggle-handle { background-color: white !important; } diff --git a/app/frontend/templates/base.html b/app/frontend/templates/base.html index b9a77b87..786037fa 100755 --- a/app/frontend/templates/base.html +++ b/app/frontend/templates/base.html @@ -15,7 +15,7 @@ + href="https://cdn.datatables.net/v/bs4/dt-1.10.22/fh-3.1.7/r-2.2.6/sc-2.0.3/sp-1.2.2/datatables.min.css" /> @@ -41,74 +41,73 @@ + integrity="sha512-ElRFoEQdI5Ht6kZvyzXhYG9NqjtkmlkfYk0wr6wHxU9JEHakS7UJZNeml5ALk+8IKlU6jDgMabC3vkumRokgJA==" + crossorigin="anonymous" referrerpolicy="no-referrer"> + integrity="sha512-UXumZrZNiOwnTcZSHLOfcTs0aos2MzBWHXOHOuB0J/R44QB0dwY5JgfbvljXcklVf65Gc4El6RjZ+lnwd2az2g==" + crossorigin="anonymous" referrerpolicy="no-referrer"> + integrity="sha512-klQv6lz2YR+MecyFYMFRuU2eAl8IPRo6zHnsc9n142TJuJHS8CG0ix4Oq9na9ceeg1u5EkBfZsFcV3U7J51iew==" + crossorigin="anonymous" referrerpolicy="no-referrer"> - - -
-
- +
@@ -174,7 +173,7 @@ + src="https://cdn.datatables.net/v/bs4/dt-1.10.22/fh-3.1.7/r-2.2.6/sc-2.0.3/sp-1.2.2/datatables.min.js"> diff --git a/app/frontend/templates/main_menu.html b/app/frontend/templates/main_menu.html index f65c55e9..be21d152 100644 --- a/app/frontend/templates/main_menu.html +++ b/app/frontend/templates/main_menu.html @@ -1,5 +1,5 @@ -
+
- + + \ No newline at end of file From 27d33f79c61c5ee7e329306ff4bd9b6308db5bec Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Tue, 4 Oct 2022 23:17:27 +0200 Subject: [PATCH 14/57] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f511ad7..cbeb13f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ TBD ### Bug fixes - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) ### Tweaks -- Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/475)) +- Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) ### Lang TBD

From 002d89934e308c51bc58fdc1da8684e881cfdbc8 Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Tue, 4 Oct 2022 23:58:31 +0200 Subject: [PATCH 15/57] I hope this time it's ok, the sidebar works as intended --- app/frontend/static/assets/css/crafty.css | 20 ++++++++++++++++++++ app/frontend/templates/main_menu.html | 2 -- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/frontend/static/assets/css/crafty.css b/app/frontend/static/assets/css/crafty.css index a04d2542..2d97d90e 100644 --- a/app/frontend/static/assets/css/crafty.css +++ b/app/frontend/static/assets/css/crafty.css @@ -8,6 +8,26 @@ color: var(--base-text) } +nav.sidebar { + position: fixed; +} + + +@media (min-width: 992px) { + nav.sidebar { + position: fixed; + max-height: auto; + } + + .main-panel { + margin-left: 270px; + } + + .sidebar-icon-only .main-panel { + margin-left: 70px; + } +} + .sidebar>.nav>.nav-item:not(.nav-profile)>.nav-link:before { content: none; diff --git a/app/frontend/templates/main_menu.html b/app/frontend/templates/main_menu.html index f6fba68e..98bf2082 100644 --- a/app/frontend/templates/main_menu.html +++ b/app/frontend/templates/main_menu.html @@ -56,11 +56,9 @@ if (isExtraLargeBreakpoint()) { let value = localStorage.getItem('crafty-sidebar-expanded') !== 'false'; $('body').toggleClass('sidebar-icon-only', !value); - $('body').toggleClass('sidebar-fixed', true); localStorage.setItem('crafty-sidebar-expanded', value); } else if (isLargeBreakpoint()) { $('body').toggleClass('sidebar-icon-only', true); - $('body').toggleClass('sidebar-fixed', true); } } From 522adb765c856dc4828feacf2b7b5b1a2402f3e5 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Wed, 5 Oct 2022 22:02:17 +0100 Subject: [PATCH 16/57] Appease lint Major - R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it --- app/classes/shared/tasks.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/classes/shared/tasks.py b/app/classes/shared/tasks.py index ae724ab2..e7266db7 100644 --- a/app/classes/shared/tasks.py +++ b/app/classes/shared/tasks.py @@ -438,13 +438,13 @@ class TasksManager: ): if not "enabled" in job_data: return + + if job_data["enabled"] is True: + job_data = HelpersManagement.get_scheduled_task(sch_id) + job_data["server_id"] = job_data["server_id"]["server_id"] else: - if job_data["enabled"] is True: - job_data = HelpersManagement.get_scheduled_task(sch_id) - job_data["server_id"] = job_data["server_id"]["server_id"] - else: - self.scheduler.remove_job(str(sch_id)) - return + self.scheduler.remove_job(str(sch_id)) + return try: if job_data["interval"] != "reaction": From da37c2871285079a592cbd74383845122d611425 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Wed, 5 Oct 2022 22:05:13 +0100 Subject: [PATCH 17/57] Update changelog !478 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f511ad7..c47fce0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ TBD ### Bug fixes - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) +- Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/475)) ### Lang From 2d24682ee4550e986f3a2018d743378772637153 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Wed, 5 Oct 2022 22:13:55 +0100 Subject: [PATCH 18/57] Update changelog !479 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c47fce0d..05cb4d75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ TBD ### Bug fixes - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) - Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) +- Add port constraint for all server creation & api ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/479)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/475)) ### Lang From 7df2ef51c1b0ce09660bf7593180286a977587dd Mon Sep 17 00:00:00 2001 From: Zedifus Date: Wed, 5 Oct 2022 22:38:36 +0100 Subject: [PATCH 19/57] Update changelog !480 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05cb4d75..94d9a52d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ TBD - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) - Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) - Add port constraint for all server creation & api ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/479)) +- Clean up backup configs when deleting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/480)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/475)) ### Lang From 905be275ed06d2e8039c1b86bb2adc410d1e7dee Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Thu, 6 Oct 2022 07:52:24 +0200 Subject: [PATCH 20/57] Add Collapse Memory for sidebar on LargeBreakpoint --- app/frontend/static/assets/js/shared/misc.js | 6 ++++++ app/frontend/templates/main_menu.html | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/frontend/static/assets/js/shared/misc.js b/app/frontend/static/assets/js/shared/misc.js index 37d8e31d..70b4cc1e 100755 --- a/app/frontend/static/assets/js/shared/misc.js +++ b/app/frontend/static/assets/js/shared/misc.js @@ -197,6 +197,12 @@ if ($("canvas").length) { !body.hasClass("sidebar-icon-only") ); } + if (vw >= 992 && vw < 1200) { + localStorage.setItem( + "crafty-sidebar-expanded", + !body.hasClass("sidebar-icon-only") + ); + } } }); diff --git a/app/frontend/templates/main_menu.html b/app/frontend/templates/main_menu.html index 98bf2082..6f5da3d0 100644 --- a/app/frontend/templates/main_menu.html +++ b/app/frontend/templates/main_menu.html @@ -53,12 +53,10 @@ More code in `app/frontend/static/assets/js/shared/misc.js` and `app/frontend/templates/base.html` */ - if (isExtraLargeBreakpoint()) { + if (isLargeBreakpoint()) { let value = localStorage.getItem('crafty-sidebar-expanded') !== 'false'; $('body').toggleClass('sidebar-icon-only', !value); localStorage.setItem('crafty-sidebar-expanded', value); - } else if (isLargeBreakpoint()) { - $('body').toggleClass('sidebar-icon-only', true); } } From 3ac77d05c762ad427702f29ff451ab6560da71db Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Fri, 7 Oct 2022 19:42:28 -0400 Subject: [PATCH 21/57] Add timeout to socket --- app/classes/minecraft/mc_ping.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/classes/minecraft/mc_ping.py b/app/classes/minecraft/mc_ping.py index 3417967c..1c52ab98 100644 --- a/app/classes/minecraft/mc_ping.py +++ b/app/classes/minecraft/mc_ping.py @@ -136,6 +136,7 @@ def ping(ip, port): return i sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(5) try: sock.connect((ip, port)) From 360c9f0ef1df644957a4da4d47665f0cfe4071b0 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 18:13:55 +0100 Subject: [PATCH 22/57] Update changelog !477 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd354b71..3105c572 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ TBD - Clean up backup configs when deleting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/480)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) +- Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) ### Lang TBD

From 409cad3c03c3e01cc995aee0c15f8455da7f6aa1 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 18:22:32 +0100 Subject: [PATCH 23/57] Update changelog !482 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3105c572..5b3393d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # Changelog -## --- [4.0.16] - 2022/TBD +## --- [4.0.16] - 2022/10/09 ### New features TBD ### Bug fixes @@ -7,6 +7,7 @@ TBD - Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) - Add port constraint for all server creation & api ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/479)) - Clean up backup configs when deleting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/480)) +- Add timeout to socket for servers with incorrect port selection ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/482)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) From 0721c0d7d4fea280c05a448332c80fc6bb628c0d Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 18:34:38 +0100 Subject: [PATCH 24/57] Strip meta from sem version --- .github/workflows/docker-build.yml | 3 +-- .gitlab/docker-build.yml | 6 ++---- app/classes/shared/helpers.py | 3 +-- app/config/version.json | 3 +-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index b2efb520..20fe20f9 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -58,8 +58,7 @@ jobs: MAJOR=$(cat app/config/version.json | jq '.major' ) MINOR=$(cat app/config/version.json | jq '.minor' ) SUB=$(cat app/config/version.json | jq '.sub' ) - META=$(cat app/config/version.json | jq -r '.meta' ) - echo "::set-output name=version::$MAJOR.$MINOR.$SUB-$META" + echo "::set-output name=version::$MAJOR.$MINOR.$SUB" - name: Get branch tag id: branch diff --git a/.gitlab/docker-build.yml b/.gitlab/docker-build.yml index 49725030..5cd4233a 100644 --- a/.gitlab/docker-build.yml +++ b/.gitlab/docker-build.yml @@ -17,7 +17,6 @@ docker-build-dev: MAJOR=$(cat app/config/version.json | jq '.major' ) MINOR=$(cat app/config/version.json | jq '.minor' ) SUB=$(cat app/config/version.json | jq '.sub' ) - META=$(cat app/config/version.json | jq -r '.meta' ) - | apk --no-cache add curl latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p') @@ -33,7 +32,7 @@ docker-build-dev: script: - | tag=":$CI_COMMIT_REF_SLUG" - VERSION="${MAJOR}.${MINOR}.${SUB}-${META}" + VERSION="${MAJOR}.${MINOR}.${SUB}" - | echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" echo "Crafty Version: $VERSION" @@ -72,7 +71,6 @@ docker-build-prod: MAJOR=$(cat app/config/version.json | jq '.major' ) MINOR=$(cat app/config/version.json | jq '.minor' ) SUB=$(cat app/config/version.json | jq '.sub' ) - META=$(cat app/config/version.json | jq -r '.meta' ) - | apk --no-cache add curl latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p') @@ -88,7 +86,7 @@ docker-build-prod: script: - | tag="" - VERSION="${MAJOR}.${MINOR}.${SUB}-${META}" + VERSION="${MAJOR}.${MINOR}.${SUB}" - | echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" echo "Crafty Version: $VERSION" diff --git a/app/classes/shared/helpers.py b/app/classes/shared/helpers.py index 06779dc7..c4d9ad10 100644 --- a/app/classes/shared/helpers.py +++ b/app/classes/shared/helpers.py @@ -450,10 +450,9 @@ class Helpers: major = version_data.get("major", "?") minor = version_data.get("minor", "?") sub = version_data.get("sub", "?") - meta = version_data.get("meta", "?") # set some defaults if we don't get version_data from our helper - version = f"{major}.{minor}.{sub}-{meta}" + version = f"{major}.{minor}.{sub}" return str(version) def encode_pass(self, password): diff --git a/app/config/version.json b/app/config/version.json index a3b99705..2dece081 100644 --- a/app/config/version.json +++ b/app/config/version.json @@ -1,6 +1,5 @@ { "major": 4, "minor": 0, - "sub": 16, - "meta": "beta" + "sub": 16 } From cbd84f5b1ae71482ca04f474d31e56a077a91131 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 19:00:41 +0100 Subject: [PATCH 25/57] Update README v4.0.16 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f211adf8..babfc564 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Supported Python Versions](https://shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20-blue)](https://www.python.org) -[![Version(temp-hardcoded)](https://img.shields.io/badge/release-v4.0.16--beta-orange)](https://gitlab.com/crafty-controller/crafty-4/-/releases) -[![Code Quality(temp-hardcoded)](https://img.shields.io/badge/code%20quality-10-brightgreen)](https://gitlab.com/crafty-controller/crafty-4) +[![Version](https://img.shields.io/badge/release-v4.0.16-blue)](https://gitlab.com/crafty-controller/crafty-4/-/releases) +[![Code Quality](https://img.shields.io/badge/code%20quality-10-brightgreen)](https://gitlab.com/crafty-controller/crafty-4) [![Build Status](https://gitlab.com/crafty-controller/crafty-4/badges/master/pipeline.svg)](https://gitlab.com/crafty-controller/crafty-4/-/commits/master) - -# Crafty Controller 4.0.15-beta +[![Licence](https://img.shields.io/gitlab/license/20430749)](https://gitlab.com/crafty-controller/crafty-4/-/blob/master/LICENSE) +# Crafty Controller 4.0.16 > Python based Control Panel for your Minecraft Server ## What is Crafty Controller? From 77d9a8d26db1b93b8112e12695cc2ff9472eff98 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 19:29:34 +0100 Subject: [PATCH 26/57] Retain tagged versions of crafty images --- .gitlab/docker-build.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitlab/docker-build.yml b/.gitlab/docker-build.yml index 49725030..c4b94020 100644 --- a/.gitlab/docker-build.yml +++ b/.gitlab/docker-build.yml @@ -87,22 +87,23 @@ docker-build-prod: - echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY script: - | - tag="" VERSION="${MAJOR}.${MINOR}.${SUB}-${META}" - | - echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" + echo "Running on branch '$CI_COMMIT_BRANCH'" echo "Crafty Version: $VERSION" - docker context create tls-environment - docker buildx create --name zedBuilder --use tls-environment - docker buildx build - --cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}" + --cache-from type=registry,ref="$CI_REGISTRY_IMAGE" --build-arg BUILDKIT_INLINE_CACHE=1 --build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" --build-arg "BUILD_REF=${CI_COMMIT_SHA}" --build-arg "CRAFTY_VER=${VERSION}" - --tag "$CI_REGISTRY_IMAGE${tag}" - --platform linux/arm64/v8,linux/amd64 - --push . + --tag "crafty-build" + --platform linux/arm64/v8,linux/amd64 . + - docker image tag "crafty-build" "$CI_REGISTRY_IMAGE" + - docker image tag "crafty-build" "$CI_REGISTRY_IMAGE:${VERSION}" + - docker image push -a after_script: - | docker buildx rm zedBuilder && echo "Successfully Stopped builder instance" || echo "Failed to stop builder instance." From ea0cf228a0a45d637036b40c54589d2fdede0e98 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 8 Oct 2022 20:13:48 +0100 Subject: [PATCH 27/57] Tweak image tags for prod image push --- .gitlab/docker-build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab/docker-build.yml b/.gitlab/docker-build.yml index c4b94020..aadd0db5 100644 --- a/.gitlab/docker-build.yml +++ b/.gitlab/docker-build.yml @@ -99,10 +99,9 @@ docker-build-prod: --build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" --build-arg "BUILD_REF=${CI_COMMIT_SHA}" --build-arg "CRAFTY_VER=${VERSION}" - --tag "crafty-build" + --tag "$CI_REGISTRY_IMAGE" --platform linux/arm64/v8,linux/amd64 . - - docker image tag "crafty-build" "$CI_REGISTRY_IMAGE" - - docker image tag "crafty-build" "$CI_REGISTRY_IMAGE:${VERSION}" + - docker image tag "$CI_REGISTRY_IMAGE" "$CI_REGISTRY_IMAGE:${VERSION}" - docker image push -a after_script: - | From 3f4d23291019f889e00c4c32a503199d8ca320c5 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 12 Oct 2022 23:29:20 -0400 Subject: [PATCH 28/57] Add log filtering known bug: when adding more than 4 items to js array --- app/classes/web/ajax_handler.py | 2 +- app/frontend/templates/panel/server_logs.html | 107 +++++++++++++++++- app/translations/en_EN.json | 4 +- 3 files changed, 107 insertions(+), 6 deletions(-) diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index c0c49b9a..a90b4141 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -76,7 +76,7 @@ class AjaxHandler(BaseHandler): line = re.sub("(\033\\[(0;)?[0-9]*[A-z]?(;[0-9])?m?)", "", line) line = re.sub("[A-z]{2}\b\b", "", line) line = self.helper.log_colors(html.escape(line)) - self.write(f"{line}
") + self.write(f"{line}
") # self.write(d.encode("utf-8")) except Exception as e: diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 8ab272b3..1a7adb1f 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -42,10 +42,17 @@
+ style="width: 100%; font-size: .8em; padding: 5px 10px; border: 1px solid var(--outline); background-color:var(--card-banner-bg);height:500px; overflow: scroll;">

+ + +
+
+

{{ translate('serverDetails', 'filterList', data['lang']) }}

+
    +
    @@ -55,14 +62,30 @@
    - +
    + {% end %} {% block js %} diff --git a/app/translations/en_EN.json b/app/translations/en_EN.json index 88a76115..4309b28a 100644 --- a/app/translations/en_EN.json +++ b/app/translations/en_EN.json @@ -360,7 +360,9 @@ "serverDetails": "Server Details", "terminal": "Terminal", "metrics": "Metrics", - "reset": "Reset Scroll" + "reset": "Reset Scroll", + "filter": "Filter Logs", + "filterList": "Filtered Words" }, "serverFiles": { "clickUpload": "Click here to select your files", From ec746d2131b93811c7e99bbabac0016976dcd1cd Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 12 Oct 2022 23:55:25 -0400 Subject: [PATCH 29/57] Fix duplicate word bug Fix delete bug --- app/frontend/templates/panel/server_logs.html | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 1a7adb1f..6091eed9 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -132,13 +132,17 @@ //Use textContent for including hidden elements for (var i = 0; i < cards.length; i++) { if (words.length > 0) { + let flag = false; for (var k = 0; k < words.length; k++) { - if (!cards[i].textContent.toLowerCase().includes(words[k])) { - cards[i].classList.remove("is-hidden"); - } else { - cards[i].classList.add("is-hidden"); + if (cards[i].textContent.toLowerCase().includes(words[k])) { + flag = true; } } + if (!flag) { + cards[i].classList.remove("is-hidden"); + } else { + cards[i].classList.add("is-hidden"); + } } else { cards[i].classList.remove("is-hidden"); } @@ -187,7 +191,8 @@ function deleteItem(item) { safe_item = sanitize(item); - words.splice(words.indexOf(item)); + console.log(item) + words.splice(words.indexOf(item), words.indexOf(item)); $("#" + safe_item.replaceAll(" ", "-")).remove(); liveSearch(); localStorage.setItem("words", JSON.stringify(words)) From 3b813a6849dbf85e86d761d9199e0616dfa2c5e5 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 13 Oct 2022 00:01:53 -0400 Subject: [PATCH 30/57] Fix splice error --- app/frontend/templates/panel/server_logs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 6091eed9..210c52ea 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -192,7 +192,7 @@ function deleteItem(item) { safe_item = sanitize(item); console.log(item) - words.splice(words.indexOf(item), words.indexOf(item)); + words.splice(words.indexOf(item), 1); $("#" + safe_item.replaceAll(" ", "-")).remove(); liveSearch(); localStorage.setItem("words", JSON.stringify(words)) From a0454ad3f153ae8b86942d562bfa487ee068ef76 Mon Sep 17 00:00:00 2001 From: Silversthorn Date: Sat, 15 Oct 2022 10:13:17 +0200 Subject: [PATCH 31/57] Fix server_stats db file when deleting server --- app/classes/models/server_stats.py | 61 +++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/app/classes/models/server_stats.py b/app/classes/models/server_stats.py index 29fdb856..ccb21879 100644 --- a/app/classes/models/server_stats.py +++ b/app/classes/models/server_stats.py @@ -120,6 +120,7 @@ class HelperServerStats: return None def get_all_servers_stats(self): + self.database.connect(reuse_if_open=True) servers = HelperServers.get_all_defined_servers() server_data = [] try: @@ -136,18 +137,23 @@ class HelperServerStats: logger.error( f"Stats collection failed with error: {ex}. Was a server just created?" ) + self.database.close() return server_data def get_history_stats(self, server_id, num_days): + self.database.connect(reuse_if_open=True) max_age = datetime.datetime.now() - timedelta(days=num_days) - return ( + server_stats = ( ServerStats.select() .where(ServerStats.created > max_age) .where(ServerStats.server_id == server_id) .execute(self.database) ) + self.database.connect(reuse_if_open=True) + return server_stats def insert_server_stats(self, server_stats): + self.database.connect(reuse_if_open=True) server_id = server_stats.get("id", 0) if server_id == 0: @@ -176,13 +182,18 @@ class HelperServerStats: } ).execute(self.database) + self.database.close() + def remove_old_stats(self, last_week): + self.database.connect(reuse_if_open=True) # self.select_database(self.server_id) ServerStats.delete().where(ServerStats.created < last_week).execute( self.database ) + self.database.close() def get_latest_server_stats(self): + self.database.connect(reuse_if_open=True) latest = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) @@ -190,12 +201,15 @@ class HelperServerStats: .limit(1) .get(self.database) ) + + self.database.close() try: return DatabaseShortcuts.get_data_obj(latest) except IndexError: return {} def get_server_stats(self): + self.database.connect(reuse_if_open=True) stats = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) @@ -203,63 +217,70 @@ class HelperServerStats: .limit(1) .first(self.database) ) + self.database.close() return DatabaseShortcuts.get_data_obj(stats) def server_id_exists(self): - # self.select_database(self.server_id) if not HelperServers.get_server_data_by_id(self.server_id): return False return True def sever_crashed(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) ServerStats.update(crashed=True).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def set_import(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) ServerStats.update(importing=True).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def finish_import(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) ServerStats.update(importing=False).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def get_import_status(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) import_status = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) .get(self.database) ) + self.database.close() return import_status.importing def server_crash_reset(self): if self.server_id is None: return - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) ServerStats.update(crashed=False).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def is_crashed(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) svr: ServerStats = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) .get(self.database) ) + self.database.close() return svr.crashed def set_update(self, value): if self.server_id is None: return - # self.select_database(self.server_id) + + self.database.connect(reuse_if_open=True) try: # Checks if server even exists ServerStats.select().where(ServerStats.server_id == self.server_id).execute( @@ -267,22 +288,26 @@ class HelperServerStats: ) except DoesNotExist as ex: logger.error(f"Database entry not found! {ex}") + self.database.close() return + ServerStats.update(updating=value).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def get_update_status(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) update_status = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) .get(self.database) ) + self.database.close() return update_status.updating def set_first_run(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) # Sets first run to false try: # Checks if server even exists @@ -291,22 +316,25 @@ class HelperServerStats: ) except Exception as ex: logger.error(f"Database entry not found! {ex}") + self.database.close() return ServerStats.update(first_run=False).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def get_first_run(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) first_run = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) .get(self.database) ) + self.database.close() return first_run.first_run def get_ttl_without_player(self): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) last_stat = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) @@ -320,6 +348,7 @@ class HelperServerStats: .order_by(ServerStats.created.desc()) .first(self.database) ) + self.database.close() return last_stat.created - last_stat_with_player.created def can_stop_no_players(self, time_limit): @@ -327,7 +356,7 @@ class HelperServerStats: return (time_limit == -1) or (ttl_no_players > time_limit) def set_waiting_start(self, value): - # self.select_database(self.server_id) + self.database.connect(reuse_if_open=True) try: # Checks if server even exists ServerStats.select().where(ServerStats.server_id == self.server_id).execute( @@ -335,15 +364,19 @@ class HelperServerStats: ) except DoesNotExist as ex: logger.error(f"Database entry not found! {ex}") + self.database.close() return ServerStats.update(waiting_start=value).where( ServerStats.server_id == self.server_id ).execute(self.database) + self.database.close() def get_waiting_start(self): + self.database.connect(reuse_if_open=True) waiting_start = ( ServerStats.select() .where(ServerStats.server_id == self.server_id) .get(self.database) ) + self.database.close() return waiting_start.waiting_start From b21d0d82f28dfd616dda8509ab6f7a9abc9b74ea Mon Sep 17 00:00:00 2001 From: Iain Powrie Date: Tue, 18 Oct 2022 04:22:06 +0000 Subject: [PATCH 32/57] Apply 5 suggestion(s) to 1 file(s) --- app/frontend/templates/panel/server_logs.html | 44 +++++++------------ 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 210c52ea..4490d622 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -76,15 +76,14 @@ {% block js %} -{% end %} \ No newline at end of file +{% end %} From 1217f93c055d043a62e273c61cb384234b1a0c6a Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 18:11:54 +0100 Subject: [PATCH 41/57] Hoist sanatise declaration Function should be declared before trhe functions that use it, not after --- app/frontend/templates/panel/server_logs.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 19ff4f82..38119369 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -144,6 +144,10 @@ let typeInterval = 500; let searchInput = document.getElementById('searchbox'); + function sanitize(string) { + return string.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); + } + searchInput.addEventListener('keyup', (e) => { clearTimeout(typingTimer); typingTimer = setTimeout(liveSearch, typeInterval); @@ -181,10 +185,6 @@ }); - function sanitize(string) { - return string.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); - } - function deleteItem(item) { let safe_item = sanitize(item); words.splice(words.indexOf(item), 1); From fd906d56e8fda8900b187a0670858bd96f42a328 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 18:18:00 +0100 Subject: [PATCH 42/57] Clear input field after we've grabbed the value Reduce repetition of code --- app/frontend/templates/panel/server_logs.html | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 38119369..e188f540 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -156,33 +156,32 @@ if (e.keyCode !== 13) return; let word = document.getElementById("searchbox").value + document.getElementById("searchbox").value = ""; + word = word.toLowerCase(); word = word.replace(/[`'"]/gi, " ") safe_word = sanitize(word) if (word.includes("\\n")) { window.alert("Nice try..."); - document.getElementById("searchbox").value = ""; return; } if (!safe_word) { window.alert("Illegal character detected"); - document.getElementById("searchbox").value = ""; return; } if (safe_word.startsWith(" ")) { window.alert("Illegal first character"); - document.getElementById("searchbox").value = ""; return; } words.push(word); $("#ignored-words").append("
  • " + word + " 
  • ") - document.getElementById("searchbox").value = ""; - localStorage.setItem("words", JSON.stringify(words)) + // Set word filters in browser cache + localStorage.setItem("words", JSON.stringify(words)) }); function deleteItem(item) { From eaf5ae36648ec6cbdd96f66617ccc0a780868196 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 18:50:48 +0100 Subject: [PATCH 43/57] Tidy turbo long lines for scroll-less readability --- app/frontend/templates/panel/server_logs.html | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index e188f540..3b1285b8 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -114,10 +114,8 @@ console.log("ready!"); get_server_log(); populateWords(); - }); - function scroll() { var logview = $('#virt_console'); if (logview.length) @@ -177,30 +175,39 @@ return; } + // Display filtered word words.push(word); - $("#ignored-words").append("
  • " + word + " 
  • ") + $("#ignored-words").append( + `
  • ` + + "
    " + + `${word} 
  • " + ); // Set word filters in browser cache - localStorage.setItem("words", JSON.stringify(words)) + localStorage.setItem("words", JSON.stringify(words)); }); function deleteItem(item) { let safe_item = sanitize(item); words.splice(words.indexOf(item), 1); - if (safe_item) { - $("#" + safe_item.replaceAll(" ", "-")).remove(); - } + if (safe_item) $("#" + safe_item.replaceAll(" ", "-")).remove(); + liveSearch(); - localStorage.setItem("words", JSON.stringify(words)) + localStorage.setItem("words", JSON.stringify(words)); } function populateWords() { for (let i = 0; i < words.length; i++) { let safe_word = sanitize(words[i]); - $("#ignored-words").append("
  • " + words[i] + " 
  • ") + + $("#ignored-words").append( + `
  • ` + + "
    " + + `${word} 
  • " + ); } } - - {% end %} From a2a8b6449fe2fec1bb2c5559a7bb12b1d15d94ba Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 19:04:57 +0100 Subject: [PATCH 44/57] Tidy comments and declaration order Declare functions before the function that uses it --- app/frontend/templates/panel/server_logs.html | 104 +++++++++--------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 3b1285b8..4139ae3c 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -76,6 +76,7 @@ {% block js %} {% end %} From f3e41861d261ad03cad9cdcf7df7625b01f17d2b Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 19:24:06 +0100 Subject: [PATCH 45/57] Remove guard on whitspace We can just trim instead --- app/frontend/templates/panel/server_logs.html | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 4139ae3c..d3c85551 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -126,12 +126,12 @@ // Return/Enter key press otherwise bail if (e.keyCode !== 13) return; - let word = document.getElementById("searchbox").value + let word = document.getElementById("searchbox").value; document.getElementById("searchbox").value = ""; - word = word.toLowerCase(); - word = word.replace(/[`'"]/gi, " ") - safe_word = sanitize(word) + word = word.replace(/[`'"]/gi, " "); + + let safe_word = sanitize(word).trimLeft(); if (word.includes("\\n")) { window.alert("Nice try..."); @@ -143,11 +143,6 @@ return; } - if (safe_word.startsWith(" ")) { - window.alert("Illegal first character"); - return; - } - // Display filtered word words.push(word); $("#ignored-words").append( From cb6e034f30a0d21da831842778004685af1d2591 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 19:28:13 +0100 Subject: [PATCH 46/57] Guard against duplicate filters This protects against adding multiple filters of the same thing --- app/frontend/templates/panel/server_logs.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index d3c85551..2fba88bf 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -143,6 +143,8 @@ return; } + if (words.includes(safe_word)) return; + // Display filtered word words.push(word); $("#ignored-words").append( From 2599658321058c5d80136bf250e94d5c9b6e8f62 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 19:37:16 +0100 Subject: [PATCH 47/57] Fix word list display on page load Whoopsie --- app/frontend/templates/panel/server_logs.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index 2fba88bf..f7b3e675 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -159,8 +159,8 @@ }); function populateWords() { - for (let i = 0; i < words.length; i++) { - let safe_word = sanitize(words[i]); + words.map(word => { + let safe_word = sanitize(word); $("#ignored-words").append( `
  • ` + @@ -168,7 +168,7 @@ `${word} 
  • " ); - } + }); } // ##### End Log Filter Block ##### From 1f2ff2345d927d5e8da5bfd18d9c975a23a1da1d Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 19:43:59 +0100 Subject: [PATCH 48/57] Rename functions for readability --- app/frontend/templates/panel/server_logs.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/frontend/templates/panel/server_logs.html b/app/frontend/templates/panel/server_logs.html index f7b3e675..ccf40937 100644 --- a/app/frontend/templates/panel/server_logs.html +++ b/app/frontend/templates/panel/server_logs.html @@ -87,7 +87,7 @@ } } - function liveSearch() { + function hideFilteredWords() { for (let i = 0; i < lines.length; i++) { // Reinitialise line visibility lines[i].classList.remove("is-hidden"); @@ -106,12 +106,12 @@ return string.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); } - function deleteItem(item) { + function deleteWord(item) { let safe_item = sanitize(item); words.splice(words.indexOf(item), 1); if (safe_item) $("#" + safe_item.replaceAll(" ", "-")).remove(); - liveSearch(); + hideFilteredWords(); localStorage.setItem("words", JSON.stringify(words)); } @@ -121,7 +121,7 @@ let searchInput = document.getElementById('searchbox'); searchInput.addEventListener('keyup', (e) => { clearTimeout(typingTimer); - typingTimer = setTimeout(liveSearch, typeInterval); + typingTimer = setTimeout(hideFilteredWords, typeInterval); // Return/Enter key press otherwise bail if (e.keyCode !== 13) return; @@ -150,7 +150,7 @@ $("#ignored-words").append( `
  • ` + "
    " + - `${word} 
  • " ); @@ -165,7 +165,7 @@ $("#ignored-words").append( `
  • ` + "
    " + - `${word} 
  • " ); }); @@ -199,7 +199,7 @@ $('#virt_console').html(data); scroll(); lines = document.querySelectorAll('.box'); - liveSearch(); + hideFilteredWords(); }, }); } From bffe1807a8748701028ef8a9ec4ad8f3e411abcb Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:06:08 +0100 Subject: [PATCH 49/57] Update changelog !486 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b3393d0..4d5db67f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ TBD - Add port constraint for all server creation & api ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/479)) - Clean up backup configs when deleting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/480)) - Add timeout to socket for servers with incorrect port selection ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/482)) +- Fix server_stats db file when deleting server ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/486)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) From ea11863e352a9113eb7b7217a24e411799aab6cd Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 22 Oct 2022 15:12:02 -0400 Subject: [PATCH 50/57] Change the way we declare root by pyinstaller docs --- main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index b6fdd89f..bcfaa94e 100644 --- a/main.py +++ b/main.py @@ -197,8 +197,15 @@ if __name__ == "__main__": if not controller.check_system_user(): controller.add_system_user() - project_root = os.path.dirname(__file__) - controller.set_project_root(project_root) + if getattr(sys, "frozen", False): + # If the application is run as a bundle, the PyInstaller bootloader + # extends the sys module by a flag frozen=True and sets the app + # path into variable _MEIPASS'. + application_path = sys._MEIPASS + else: + application_path = os.path.dirname(os.path.abspath(__file__)) + + controller.set_project_root(application_path) controller.clear_unexecuted_commands() controller.clear_support_status() From 4923a18359e52a56ea2da030ddb762613d05addf Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:17:03 +0100 Subject: [PATCH 51/57] Update changelog !487 --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d5db67f..e374c8bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog -## --- [4.0.16] - 2022/10/09 +## --- [4.0.16] - 2022/10/23 ### New features -TBD +- Automatically set update url for (new) server creation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/487)) ### Bug fixes - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) - Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) From b3d28b149ef334f4baec6f38356f1edef6a84d64 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:26:34 +0100 Subject: [PATCH 52/57] Update changelog !488 --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e374c8bf..c9d2537d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,8 +12,7 @@ ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) -### Lang -TBD +- Only send realtime stats when clients connected ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/488))

    ## --- [4.0.15] - 2022/10/02 From 1a5728ccf1d0ece3db358416c8f725ead178b7ab Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:40:15 +0100 Subject: [PATCH 53/57] Update changelog !489 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9d2537d..99fefb13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Clean up backup configs when deleting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/480)) - Add timeout to socket for servers with incorrect port selection ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/482)) - Fix server_stats db file when deleting server ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/486)) +- Fix "cannot render after finish" from backup_now ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/489)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) From b8900ab0ea76b4f3c9c7dd235338b3a0303db4d7 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:47:47 +0100 Subject: [PATCH 54/57] Update changelog !484 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99fefb13..84c9df52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## --- [4.0.16] - 2022/10/23 ### New features - Automatically set update url for (new) server creation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/487)) +- Add filter to logs panel ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/484)) ### Bug fixes - Fix conditional issue with zip imports/uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/476)) - Fix API Schedule updates ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/478)) From a85c44989d3444ab78eff04e6277e2ea4b547ba9 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 22 Oct 2022 20:56:49 +0100 Subject: [PATCH 55/57] Update changelog !491 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c9df52..8a9b4f6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Add timeout to socket for servers with incorrect port selection ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/482)) - Fix server_stats db file when deleting server ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/486)) - Fix "cannot render after finish" from backup_now ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/489)) +- Fix Support Logs on windows by changing the way we declare projects working directory ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/491)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) From a6aa0f86797856a09c639317c5151c354f4024dc Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sun, 23 Oct 2022 18:48:23 +0100 Subject: [PATCH 56/57] Fix pyinstaller pathing --- main.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index bcfaa94e..a0d22144 100644 --- a/main.py +++ b/main.py @@ -198,14 +198,21 @@ if __name__ == "__main__": controller.add_system_user() if getattr(sys, "frozen", False): - # If the application is run as a bundle, the PyInstaller bootloader - # extends the sys module by a flag frozen=True and sets the app - # path into variable _MEIPASS'. - application_path = sys._MEIPASS + application_path = os.path.dirname(sys.executable) + running_mode = "Frozen/executable" else: - application_path = os.path.dirname(os.path.abspath(__file__)) + try: + app_full_path = os.path.realpath(__file__) + application_path = os.path.dirname(app_full_path) + running_mode = "Non-interactive (e.g. 'python main.py')" + except NameError: + application_path = os.getcwd() + running_mode = "Interactive" controller.set_project_root(application_path) + Console.info(f"Execution Mode: {running_mode}") + Console.info(f"Application path : '{application_path}'") + controller.clear_unexecuted_commands() controller.clear_support_status() From 1cbfb6eb10891c1f9b6f5553db2ff8c95c75e4ac Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sun, 23 Oct 2022 19:02:24 +0100 Subject: [PATCH 57/57] Update changelog with commit a6aa0f8 Also change console colour for path display --- CHANGELOG.md | 2 +- main.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a9b4f6a..2cab7514 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ - Add timeout to socket for servers with incorrect port selection ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/482)) - Fix server_stats db file when deleting server ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/486)) - Fix "cannot render after finish" from backup_now ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/489)) -- Fix Support Logs on windows by changing the way we declare projects working directory ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/491)) +- Fix Support Logs on windows by changing the way we declare projects working directory ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/491) | [Commit](https://gitlab.com/crafty-controller/crafty-4/-/commit/a6aa0f86797856a09c639317c5151c354f4024dc)) ### Tweaks - Fix sidebar to not move when scrolling ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/481)) - Add the rest of CSS predefined colors to themes ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/477)) diff --git a/main.py b/main.py index a0d22144..f46273e0 100644 --- a/main.py +++ b/main.py @@ -210,8 +210,8 @@ if __name__ == "__main__": running_mode = "Interactive" controller.set_project_root(application_path) - Console.info(f"Execution Mode: {running_mode}") - Console.info(f"Application path : '{application_path}'") + Console.debug(f"Execution Mode: {running_mode}") + Console.debug(f"Application path : '{application_path}'") controller.clear_unexecuted_commands() controller.clear_support_status()