diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index 210d7848..6c2fc7c6 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -174,273 +174,3 @@ class ServerHandler(BaseHandler): data=page_data, translate=self.translator.translate, ) - - @tornado.web.authenticated - def post(self, page): - api_key, _token_data, exec_user = self.current_user - superuser = exec_user["superuser"] - if api_key is not None: - superuser = superuser and api_key.superuser - - template = "public/404.html" - page_data = { - "version_data": "version_data_here", # TODO - "user_data": exec_user, - "show_contribute": self.helper.get_setting("show_contribute_link", True), - "background": self.controller.cached_login, - "lang": self.controller.users.get_user_lang_by_id(exec_user["user_id"]), - "lang_page": Helpers.get_lang_page( - self.controller.users.get_user_lang_by_id(exec_user["user_id"]) - ), - } - - if page == "command": - server_id = bleach.clean(self.get_argument("id", None)) - command = bleach.clean(self.get_argument("command", None)) - - if server_id is not None: - if command == "clone_server": - if ( - not superuser - and not self.controller.crafty_perms.can_create_server( - exec_user["user_id"] - ) - ): - time.sleep(3) - self.helper.websocket_helper.broadcast_user( - exec_user["user_id"], - "send_start_error", - { - "error": "" - " Not a server creator or server limit reached." - }, - ) - return - - def is_name_used(name): - for server in self.controller.servers.get_all_defined_servers(): - if server["server_name"] == name: - return True - return - - template = "/panel/dashboard" - server_data = self.controller.servers.get_server_data_by_id( - server_id - ) - new_server_name = server_data.get("server_name") + " (Copy)" - - name_counter = 1 - while is_name_used(new_server_name): - name_counter += 1 - new_server_name = ( - server_data.get("server_name") + f" (Copy {name_counter})" - ) - - new_server_uuid = Helpers.create_uuid() - while os.path.exists( - os.path.join(self.helper.servers_dir, new_server_uuid) - ): - new_server_uuid = Helpers.create_uuid() - new_server_path = os.path.join( - self.helper.servers_dir, new_server_uuid - ) - - # copy the old server - FileHelpers.copy_dir(server_data.get("path"), new_server_path) - - # TODO get old server DB data to individual variables - stop_command = server_data.get("stop_command") - new_server_command = str(server_data.get("execution_command")) - new_executable = server_data.get("executable") - new_server_log_file = str( - Helpers.get_os_understandable_path(server_data.get("log_path")) - ) - backup_path = os.path.join(self.helper.backup_path, new_server_uuid) - server_port = server_data.get("server_port") - server_type = server_data.get("type") - created_by = exec_user["user_id"] - - new_server_id = self.controller.servers.create_server( - new_server_name, - new_server_uuid, - new_server_path, - backup_path, - new_server_command, - new_executable, - new_server_log_file, - stop_command, - server_type, - created_by, - server_port, - ) - if not exec_user["superuser"]: - new_server_uuid = self.controller.servers.get_server_data_by_id( - new_server_id - ).get("server_uuid") - role_id = self.controller.roles.add_role( - f"Creator of Server with uuid={new_server_uuid}", - exec_user["user_id"], - ) - self.controller.server_perms.add_role_server( - new_server_id, role_id, "11111111" - ) - self.controller.users.add_role_to_user( - exec_user["user_id"], role_id - ) - - self.controller.servers.init_all_servers() - - return - - self.controller.management.send_command( - exec_user["user_id"], server_id, self.get_remote_ip(), command - ) - - if page == "bedrock_step1": - if not superuser and not self.controller.crafty_perms.can_create_server( - exec_user["user_id"] - ): - self.redirect( - "/panel/error?error=Unauthorized access: " - "not a server creator or server limit reached" - ) - return - if not superuser: - user_roles = self.controller.roles.get_all_roles() - else: - user_roles = self.controller.roles.get_all_roles() - server_name = bleach.clean(self.get_argument("server_name", "")) - port = bleach.clean(self.get_argument("port", "")) - - if not port: - port = 19132 - 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", "")) - captured_roles = [] - for role in user_roles: - if bleach.clean(self.get_argument(str(role), "")) == "on": - captured_roles.append(role) - - if not server_name: - self.redirect("/panel/error?error=Server name cannot be empty!") - return - - if import_type == "import_jar": - if self.helper.is_subdir( - self.controller.project_root, import_server_path - ): - self.redirect( - "/panel/error?error=Loop Error: The selected path will cause" - " an infinite copy loop. Make sure Crafty's directory is not" - " in your server path." - ) - return - good_path = self.controller.verify_jar_server( - import_server_path, import_server_exe - ) - - if not good_path: - self.redirect( - "/panel/error?error=Server path or Server Jar not found!" - ) - return - - new_server_id = self.controller.import_bedrock_server( - server_name, - import_server_path, - import_server_exe, - port, - exec_user["user_id"], - ) - self.controller.management.add_to_audit_log( - exec_user["user_id"], - f'imported a jar server named "{server_name}"', - new_server_id, - self.get_remote_ip(), - ) - elif import_type == "import_zip": - # here import_server_path means the zip path - zip_path = bleach.clean(self.get_argument("root_path")) - good_path = Helpers.check_path_exists(zip_path) - if not good_path: - self.redirect("/panel/error?error=Temp path not found!") - return - - new_server_id = self.controller.import_bedrock_zip_server( - server_name, - zip_path, - import_server_exe, - port, - exec_user["user_id"], - ) - if new_server_id == "false": - self.redirect( - f"/panel/error?error=Zip file not accessible! " - f"You can fix this permissions issue with" - f"sudo chown -R crafty:crafty {import_server_path} " - f"And sudo chmod 2775 -R {import_server_path}" - ) - return - self.controller.management.add_to_audit_log( - exec_user["user_id"], - f'imported a zip server named "{server_name}"', - new_server_id, - self.get_remote_ip(), - ) - else: - new_server_id = self.controller.create_bedrock_server( - server_name, - exec_user["user_id"], - ) - self.controller.management.add_to_audit_log( - exec_user["user_id"], - "created a Bedrock " f'server named "{server_name}"', - # Example: Admin created a 1.16.5 Bukkit server named "survival" - new_server_id, - self.get_remote_ip(), - ) - - # These lines create a new Role for the Server with full permissions - # and add the user to it if he's not a superuser - if len(captured_roles) == 0: - if not superuser: - new_server_uuid = self.controller.servers.get_server_data_by_id( - new_server_id - ).get("server_uuid") - role_id = self.controller.roles.add_role( - f"Creator of Server with uuid={new_server_uuid}", - exec_user["user_id"], - ) - self.controller.server_perms.add_role_server( - new_server_id, role_id, "11111111" - ) - self.controller.users.add_role_to_user( - exec_user["user_id"], role_id - ) - - else: - for role in captured_roles: - role_id = role - self.controller.server_perms.add_role_server( - new_server_id, role_id, "11111111" - ) - - self.controller.servers.stats.record_stats() - self.redirect("/panel/dashboard") - - try: - self.render( - template, - data=page_data, - translate=self.translator.translate, - ) - except RuntimeError: - self.redirect("/panel/dashboard")