Merge branch 'dev' into bug/edit-user-issues

This commit is contained in:
Zedifus 2022-07-06 02:50:06 +01:00
commit 102a470348
9 changed files with 52 additions and 25 deletions

1
.gitignore vendored
View File

@ -20,6 +20,7 @@ venv.bak/
.idea/ .idea/
/servers/ /servers/
/backups/ /backups/
/temp/
/docker/servers/ /docker/servers/
/docker/backups/ /docker/backups/
session.lock session.lock

View File

@ -8,6 +8,7 @@ None
- Fix issue with stats pinging on slow starting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/391)) - Fix issue with stats pinging on slow starting servers ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/391))
- Fix unhandled exeption when serverjars api returns 'None' ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/392)) - Fix unhandled exeption when serverjars api returns 'None' ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/392))
- Fix ajax issue with unzip on firefox ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/393)) - Fix ajax issue with unzip on firefox ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/393))
- Turn off verbose logging on Docker ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/394))
### Tweaks ### Tweaks
None None
### Lang ### Lang

View File

@ -53,7 +53,7 @@ EXPOSE 25500-25600
# Start Crafty through wrapper # Start Crafty through wrapper
ENTRYPOINT ["/crafty/docker_launcher.sh"] ENTRYPOINT ["/crafty/docker_launcher.sh"]
CMD ["-v", "-d", "-i"] CMD ["-d", "-i"]
# Add meta labels # Add meta labels
ARG BUILD_DATE ARG BUILD_DATE

View File

@ -2,11 +2,11 @@
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![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) [![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.4--beta-orange)](https://gitlab.com/crafty-controller/crafty-4/-/releases) [![Version(temp-hardcoded)](https://img.shields.io/badge/release-v4.0.5--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) [![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) [![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.4-beta # Crafty Controller 4.0.5-beta
> Python based Control Panel for your Minecraft Server > Python based Control Panel for your Minecraft Server
## What is Crafty Controller? ## What is Crafty Controller?

View File

@ -101,7 +101,7 @@ class FileHelpers:
ziproot = path_to_zip ziproot = path_to_zip
for file in files: for file in files:
try: try:
logger.info(f"backing up: {os.path.join(root, file)}") logger.info(f"packaging: {os.path.join(root, file)}")
if os.name == "nt": if os.name == "nt":
zip_file.write( zip_file.write(
os.path.join(root, file), os.path.join(root, file),
@ -115,7 +115,7 @@ class FileHelpers:
except Exception as e: except Exception as e:
logger.warning( logger.warning(
f"Error backing up: {os.path.join(root, file)}!" f"Error packaging: {os.path.join(root, file)}!"
f" - Error was: {e}" f" - Error was: {e}"
) )

View File

@ -4,7 +4,6 @@ from pathlib import Path
import shutil import shutil
import time import time
import logging import logging
import tempfile
from peewee import DoesNotExist from peewee import DoesNotExist
# TZLocal is set as a hidden import on win pipeline # TZLocal is set as a hidden import on win pipeline
@ -85,27 +84,38 @@ class Controller:
self.users.set_prepare(exec_user["user_id"]) self.users.set_prepare(exec_user["user_id"])
logger.info("Checking for previous support logs.") logger.info("Checking for previous support logs.")
if exec_user["support_logs"] != "": if exec_user["support_logs"] != "":
logger.info( if os.path.exists(exec_user["support_logs"]):
f"Found previous support log request at {exec_user['support_logs']}" logger.info(
) f"Found previous support log request at {exec_user['support_logs']}"
if self.helper.validate_traversal( )
tempfile.gettempdir(), exec_user["support_logs"] if self.helper.validate_traversal(
): os.path.join(self.project_root, "temp"), exec_user["support_logs"]
logger.debug("No transversal detected. Going for the delete.") ):
self.del_support_file(exec_user["support_logs"]) logger.debug("No transversal detected. Going for the delete.")
self.del_support_file(exec_user["support_logs"])
# pausing so on screen notifications can run for user # pausing so on screen notifications can run for user
time.sleep(7) time.sleep(7)
self.helper.websocket_helper.broadcast_user( self.helper.websocket_helper.broadcast_user(
exec_user["user_id"], "notification", "Preparing your support logs" exec_user["user_id"], "notification", "Preparing your support logs"
) )
temp_dir = tempfile.mkdtemp() self.helper.ensure_dir_exists(
temp_zip_storage = tempfile.mkdtemp() os.path.join(self.project_root, "temp", str(exec_user["user_id"]))
full_temp = os.path.join(temp_dir, "support_logs") )
os.mkdir(full_temp) temp_dir = os.path.join(
self.project_root, "temp", str(exec_user["user_id"]), "support_logs"
)
self.helper.ensure_dir_exists(
os.path.join(self.project_root, "temp", str(exec_user["user_id"]), "zip")
)
temp_zip_storage = os.path.join(
self.project_root, "temp", str(exec_user["user_id"]), "zip"
)
os.mkdir(temp_dir)
temp_zip_storage = os.path.join(temp_zip_storage, "support_logs") temp_zip_storage = os.path.join(temp_zip_storage, "support_logs")
crafty_path = os.path.join(full_temp, "crafty") crafty_path = os.path.join(temp_dir, "crafty")
os.mkdir(crafty_path) os.mkdir(crafty_path)
server_path = os.path.join(full_temp, "server") server_path = os.path.join(temp_dir, "server")
os.mkdir(server_path) os.mkdir(server_path)
if exec_user["superuser"]: if exec_user["superuser"]:
defined_servers = self.servers.list_defined_servers() defined_servers = self.servers.list_defined_servers()
@ -160,15 +170,14 @@ class Controller:
"interval", "interval",
seconds=1, seconds=1,
id="logs_" + str(exec_user["user_id"]), id="logs_" + str(exec_user["user_id"]),
args=[full_temp, temp_zip_storage + ".zip", exec_user], args=[temp_dir, temp_zip_storage + ".zip", exec_user],
) )
FileHelpers.make_archive(temp_zip_storage, temp_dir) FileHelpers.make_compressed_archive(temp_zip_storage, temp_dir)
if len(self.helper.websocket_helper.clients) > 0: if len(self.helper.websocket_helper.clients) > 0:
self.helper.websocket_helper.broadcast_user( self.helper.websocket_helper.broadcast_user(
exec_user["user_id"], exec_user["user_id"],
"support_status_update", "support_status_update",
Helpers.calc_percent(full_temp, temp_zip_storage + ".zip"), Helpers.calc_percent(temp_dir, temp_zip_storage + ".zip"),
) )
temp_zip_storage += ".zip" temp_zip_storage += ".zip"

View File

@ -15,6 +15,7 @@ from app.classes.models.management import HelpersManagement
from app.classes.models.users import HelperUsers from app.classes.models.users import HelperUsers
from app.classes.controllers.users_controller import UsersController from app.classes.controllers.users_controller import UsersController
from app.classes.shared.console import Console from app.classes.shared.console import Console
from app.classes.shared.file_helpers import FileHelpers
from app.classes.shared.helpers import Helpers from app.classes.shared.helpers import Helpers
from app.classes.shared.main_controller import Controller from app.classes.shared.main_controller import Controller
from app.classes.web.tornado_handler import Webserver from app.classes.web.tornado_handler import Webserver
@ -145,6 +146,15 @@ class TasksManager:
self.controller.servers.stop_all_servers() self.controller.servers.stop_all_servers()
except: except:
logger.info("Caught error during shutdown", exc_info=True) logger.info("Caught error during shutdown", exc_info=True)
try:
temp_dir = os.path.join(self.controller.project_root, "temp")
FileHelpers.del_dirs(temp_dir)
except:
logger.info(
"Caught error during shutdown - "
"unable to delete files from Crafty Temp Dir",
exc_info=True,
)
logger.info("***** Crafty Shutting Down *****\n\n") logger.info("***** Crafty Shutting Down *****\n\n")
Console.info("***** Crafty Shutting Down *****\n\n") Console.info("***** Crafty Shutting Down *****\n\n")

View File

@ -1,6 +1,6 @@
{ {
"major": 4, "major": 4,
"minor": 0, "minor": 0,
"sub": 4, "sub": 5,
"meta": "beta" "meta": "beta"
} }

View File

@ -226,6 +226,12 @@ if __name__ == "__main__":
Console.info("Crafty has fully started and is now ready for use!") Console.info("Crafty has fully started and is now ready for use!")
crafty_prompt.prompt = f"Crafty Controller v{helper.get_version_string()} > " crafty_prompt.prompt = f"Crafty Controller v{helper.get_version_string()} > "
try:
logger.info("Removing old temp dirs")
FileHelpers.del_dirs(os.path.join(controller.project_root, "temp"))
except:
logger.info("Did not find old temp dir.")
os.mkdir(os.path.join(controller.project_root, "temp"))
if not args.daemon: if not args.daemon:
# Put the prompt under the cursor # Put the prompt under the cursor