From 19e4a31bf79a305c2f7017573c3d10449f50b730 Mon Sep 17 00:00:00 2001 From: Phillip Date: Tue, 19 Jan 2021 08:56:00 -0500 Subject: [PATCH 1/2] fixed console.debug printing - added module auto-installer --- app/classes/shared/console.py | 10 ++++++---- app/classes/shared/installer.py | 25 +++++++++++++++++++++++++ app/classes/web/panel_handler.py | 4 ++-- main.py | 3 +++ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 app/classes/shared/installer.py diff --git a/app/classes/shared/console.py b/app/classes/shared/console.py index 1d70d893..087cdcc4 100644 --- a/app/classes/shared/console.py +++ b/app/classes/shared/console.py @@ -1,6 +1,6 @@ import datetime import logging -from sys import modules +import sys logger = logging.getLogger(__name__) @@ -11,18 +11,20 @@ try: except ModuleNotFoundError as e: logging.critical("Import Error: Unable to load {} module".format(e, e.name)) print("Import Error: Unable to load {} module".format(e, e.name)) - pass + from app.classes.shared.installer import installer + installer.do_install() + sys.exit(1) class Console: def __init__(self): - if 'colorama' in modules: + if 'colorama' in sys.modules: init() @staticmethod def do_print(message, color): - if 'termcolor' in modules or 'colorama' in modules: + if 'termcolor' in sys.modules or 'colorama' in sys.modules: print(colored(message, color)) else: print(message) diff --git a/app/classes/shared/installer.py b/app/classes/shared/installer.py new file mode 100644 index 00000000..e52191ea --- /dev/null +++ b/app/classes/shared/installer.py @@ -0,0 +1,25 @@ +import sys +import subprocess + + +class install: + + @staticmethod + def is_venv(): + return (hasattr(sys, 'real_prefix') or + (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)) + + def do_install(self): + + # are we in a venv? + if not self.is_venv(): + print("Crafty Requires a venv to install") + sys.exit(1) + + # do our pip install + subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", 'requirements.txt']) + print("Crafty has installed it's dependencies, please restart Crafty") + sys.exit(0) + + +installer = install() \ No newline at end of file diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 4433f8b8..c380ff5d 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -112,9 +112,9 @@ class PanelHandler(BaseHandler): valid_subpages = ['term', 'logs', 'config', 'files'] if subpage not in valid_subpages: - console.debug('not a valid subpage') + logger.debug('not a valid subpage') subpage = 'term' - console.debug('Subpage: "{}"'.format(subpage)) + logger.debug('Subpage: "{}"'.format(subpage)) # server_data isn't needed since the server_stats also pulls server data # page_data['server_data'] = db_helper.get_server_data_by_id(server_id) diff --git a/main.py b/main.py index 108abefc..7ef4b02f 100644 --- a/main.py +++ b/main.py @@ -44,7 +44,9 @@ def setup_logging(debug=False): logging_config = json.load(f) if debug: logging_config['loggers']['']['level'] = 'DEBUG' + logging.config.dictConfig(logging_config) + else: logging.basicConfig(level=logging.DEBUG) logging.warning("Unable to read logging config from {}".format(logging_config_file)) @@ -74,6 +76,7 @@ if __name__ == '__main__': # setting up the logger object logger = logging.getLogger(__name__) + print("Logging set to: {} ".format(logger.level)) # print our pretty start message do_intro() From 9fb80a50624b1e64a08bbcde32e4dccaeca338b8 Mon Sep 17 00:00:00 2001 From: Phillip Date: Tue, 19 Jan 2021 09:17:29 -0500 Subject: [PATCH 2/2] added float_to_string for server memory configs --- app/classes/shared/controller.py | 12 +++++++++--- app/classes/shared/helpers.py | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/classes/shared/controller.py b/app/classes/shared/controller.py index d486e22a..65be08f2 100644 --- a/app/classes/shared/controller.py +++ b/app/classes/shared/controller.py @@ -212,7 +212,9 @@ class Controller: logger.error("Unable to create required server files due to :{}".format(e)) return False - server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(float(min_mem) * 1000, float(max_mem) * 1000, full_jar_path) + server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(helper.float_to_string(min_mem), + helper.float_to_string(max_mem), + full_jar_path) server_log_file = "{}/logs/latest.log".format(server_dir) server_stop = "stop" @@ -245,7 +247,9 @@ class Controller: dir_util.copy_tree(server_path, new_server_dir) full_jar_path = os.path.join(new_server_dir, server_jar) - server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(float(min_mem) * 1000, float(max_mem) * 1000, full_jar_path) + server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(helper.float_to_string(min_mem), + helper.float_to_string(max_mem), + full_jar_path) server_log_file = "{}/logs/latest.log".format(new_server_dir) server_stop = "stop" @@ -264,7 +268,9 @@ class Controller: return "false" full_jar_path = os.path.join(new_server_dir, server_jar) - server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(float(min_mem) * 1000, float(max_mem) * 1000, full_jar_path) + server_command = 'java -Xms{}M -Xmx{}M -jar {} nogui'.format(helper.float_to_string(min_mem), + helper.float_to_string(max_mem), + full_jar_path) print('command: ' + server_command) server_log_file = "{}/logs/latest.log".format(new_server_dir) server_stop = "stop" diff --git a/app/classes/shared/helpers.py b/app/classes/shared/helpers.py index 68ddec24..6fa08888 100644 --- a/app/classes/shared/helpers.py +++ b/app/classes/shared/helpers.py @@ -46,6 +46,10 @@ class Helpers: self.passhasher = PasswordHasher() self.exiting = False + def float_to_string(self, gbs: int): + s = str(float(gbs) * 1000).rstrip("0").rstrip(".") + return s + def check_file_perms(self, path): try: fp = open(path, "r").close()