From d4af11742149717847df8857bac3ebd6defb162e Mon Sep 17 00:00:00 2001 From: Analicia Abernathy Date: Mon, 29 Jul 2024 14:33:14 -0500 Subject: [PATCH 01/11] added ru_RU to the humanized json --- app/translations/humanized_index.json | 1 + 1 file changed, 1 insertion(+) diff --git a/app/translations/humanized_index.json b/app/translations/humanized_index.json index 6f2ea8c7..fea27870 100644 --- a/app/translations/humanized_index.json +++ b/app/translations/humanized_index.json @@ -11,6 +11,7 @@ "lv_LV": "Latviešu", "nl_BE": "nl_BE", "pl_PL": "Polski", + "ru_RU": "Русский", "th_TH": "ไทย", "tr_TR": "Türkçe", "uk_UA": "Українська", From e60b86c2380f7afd5f55238211f9e7f52b3c69e7 Mon Sep 17 00:00:00 2001 From: Analicia Abernathy Date: Mon, 29 Jul 2024 14:33:28 -0500 Subject: [PATCH 02/11] Adding new language ru_RU --- app/translations/ru_RU.json | 697 ++++++++++++++++++++++++++++++++++++ 1 file changed, 697 insertions(+) create mode 100644 app/translations/ru_RU.json diff --git a/app/translations/ru_RU.json b/app/translations/ru_RU.json new file mode 100644 index 00000000..8b98f9eb --- /dev/null +++ b/app/translations/ru_RU.json @@ -0,0 +1,697 @@ +{ + "404": { + "contact": "Свяжитесь со службой поддержки Crafty Control через Discord", + "notFound": "Страница не найдена", + "unableToFind": "Нам не удалось найти страницу, которую вы ищете. Пожалуйста, попробуйте еще раз или вернитесь и обновите страницу." + }, + "accessDenied": { + "accessDenied": "Доступ запрещен", + "contact": "Свяжитесь со службой поддержки Crafty Control через Discord", + "contactAdmin": "Обратитесь к администратору вашего сервера за доступом к этому ресурсу или, если вы считаете, что у вас должен быть доступ к этому ресурсу, обратитесь в службу поддержки.", + "noAccess": "У вас нет доступа к этому ресурсу" + }, + "apiKeys": { + "apiKeys": "API ключи", + "auth": "Разрешить? ", + "buttons": "Кнопки", + "config": "Конфиг", + "crafty": "Crafty: ", + "createNew": "Создать новый API токен", + "created": "Созданный", + "deleteKeyConfirmation": "Вы хотите удалить этот API ключ? Это невозможно отменить.", + "deleteKeyConfirmationTitle": "Удалить API ключ ${keyId}?", + "fullAccess": "Полный доступ", + "getToken": "Получить токен", + "name": "Имя", + "nameDesc": "Как бы вы хотели назвать этот API токен? ", + "no": "Нет", + "pageTitle": "Редактирование пользовательских ключей API", + "permName": "Имя разрешения", + "perms": "Разрешения", + "server": "Сервер: ", + "yes": "Да" + }, + "base": { + "doesNotWorkWithoutJavascript": "Внимание: Crafty не работает должным образом, если JavaScript не включен!" + }, + "credits": { + "developmentTeam": "Команда разработчиков", + "hugeDesc": "Большое", + "pageDescription": "Без этих людей у вас не было бы Crafty", + "pageTitle": "Благодарности", + "patreonDesc": "нашим Patreon / Ko-fi подписчикам!", + "patreonOther": "Другие", + "patreonSupporter": "Patreon / Ko-fi подписчики", + "patreonUpdate": "Последнее обновление:", + "retiredStaff": "Ветераны", + "subscriberName": "Имя", + "subscriptionLevel": "Уровень", + "supportTeam": "Отдел технической поддержки и документации", + "thankYou": "СПАСИБО", + "translationDesc": "сообществу, кто переводит! [ В процессе = 🟢 Неактивный/Законченный = ⚪ ]", + "translationName": "Имя", + "translationTitle": "Перевод", + "translator": "Переводчики" + }, + "customLogin": { + "apply": "Применить", + "backgroundUpload": "Загрузка фона", + "customLoginPage": "Настройки страницы входа в систему", + "delete": "Удалить", + "labelLoginImage": "Выберите фон для входа в систему", + "loginBackground": "Фоновое изображение входа в систему", + "loginImage": "Загрузите фоновое изображение для экрана входа в систему.", + "loginOpacity": "Выберите непрозрачность окна входа в систему", + "pageTitle": "Настройки страницы входа в систему", + "preview": "Превью", + "select": "Выбрать", + "selectImage": "Выбрать изображение" + }, + "dashboard": { + "actions": "Действия", + "allServers": "Все серверы", + "avg": "Avg", + "backups": "Бэкапы", + "bePatientClone": "Пожалуйста, наберитесь терпения, пока мы будем клонировать сервер.
Этот экран обновится через мгновение", + "bePatientRestart": "Пожалуйста, наберитесь терпения, пока мы перезапускаем сервер.
Этот экран обновится через мгновение", + "bePatientStart": "Пожалуйста, наберитесь терпения, пока мы запускаем сервер.
Этот экран обновится через мгновение", + "bePatientStop": "Пожалуйста, наберитесь терпения, пока мы не остановим сервер.
Этот экран обновится через мгновение", + "cannotSee": "Не видишь всего?", + "cannotSeeOnMobile": "Не видите всего на мобильном телефоне?", + "cannotSeeOnMobile2": "Попробуйте прокрутить таблицу в сторону.", + "clone": "Клонировать", + "cloneConfirm": "Вы уверены, что хотите клонировать этот сервер? Этот процесс может занять некоторое время.", + "cpuCores": "Ядра CPU", + "cpuCurFreq": "Текущая тактовая частота CPU", + "cpuMaxFreq": "Максимальная тактовая частота CPU", + "cpuUsage": "Нагрузка CPU", + "crashed": "Сбой", + "dashboard": "Приборная панель", + "delay-explained": "Служба/агент недавно запустилась и задерживает запуск экземпляра сервера minecraft", + "host": "Хост", + "installing": "Установка...", + "kill": "Принудительное завершение процесса", + "killing": "Принудительное завершение процесса...", + "lastBackup": "Последний:", + "max": "Максимально", + "memUsage": "Нагрузка памяти", + "motd": "MOTD", + "newServer": "Создать новый сервер", + "nextBackup": "Следующий:", + "no-servers": "В настоящее время серверов нет. Чтобы начать, нажмите", + "offline": "Оффлайн", + "online": "Онлайн", + "players": "Игроки", + "restart": "Рестарт", + "sendingCommand": "Отправляю вашу команду", + "server": "Сервер", + "servers": "Серверы", + "size": "Размер каталога сервера", + "start": "Старт", + "starting": "Отложенный запуск", + "status": "Статус", + "stop": "Стоп", + "storage": "Диски", + "version": "Версия", + "welcome": "Добро пожаловать в Crafty Controller" + }, + "datatables": { + "i18n": { + "aria": { + "sortAscending": ": активируйте сортировку столбцов по возрастанию", + "sortDescending": ": активируйте сортировку столбцов по убыванию" + }, + "buttons": { + "collection": "Коллекция ", + "colvis": "Видимость столбца", + "colvisRestore": "Восстановить видимость", + "copy": "Копировать", + "copyKeys": "Нажмите ctrl или u2318 + C, чтобы скопировать данные таблицы в системный буфер обмена.

Чтобы отменить, щелкните по этому сообщению или нажмите escape.", + "copySuccess": { + "1": "Скопирована 1 строка в буфер обмена", + "_": "Скопировано %d строк в буфер обмена" + }, + "copyTitle": "Скопировать в буфер обмена", + "csv": "CSV", + "excel": "Excel", + "pageLength": { + "-1": "Показать все строки", + "1": "Показать 1 строку", + "_": "Показать %d строк" + }, + "pdf": "PDF", + "print": "Печать" + }, + "decimal": "", + "emptyTable": "Данные в таблице отсутствуют", + "info": "Отображение от _START_ до _END_ из _TOTAL_ записей", + "infoEmpty": "Отображение от 0 до 0 из 0 записей", + "infoFiltered": "(отфильтровано по _MAX_ количеству записей)", + "infoPostFix": "", + "lengthMenu": "Показывать записи _MENU_", + "loadingRecords": "Загрузка...", + "paginate": { + "first": "Первый", + "last": "Последний", + "next": "Следующий", + "previous": "Предыдущий" + }, + "processing": "Обработка...", + "search": "Поиск:", + "select": { + "cells": { + "0": "Нажмите на ячейку, чтобы выбрать ее", + "1": "%d ячейка выбрана", + "_": "%d ячеек выбрано" + }, + "columns": { + "0": "Нажмите на столбец, чтобы выбрать его", + "1": "%d колонка выбрана", + "_": "%d колонок выбрано" + }, + "rows": { + "0": "Нажмите на строку, чтобы выбрать ее", + "1": "%d строка выбрана", + "_": "%d строк выбрано" + } + }, + "thousands": ",", + "zeroRecords": "Совпадающих записей не найдено" + }, + "loadingRecords": "Загрузка..." + }, + "error": { + "agree": "Согласиться", + "bedrockError": "Загрузка Bedrock недоступна. Пожалуйста, проверьте", + "bigBucket1": "Не удалось выполнить проверку работоспособности Big Bucket. Пожалуйста, проверьте", + "bigBucket2": "для получения самой актуальной информации.", + "cancel": "Отмена", + "contact": "Свяжитесь со службой поддержки Crafty Control через Discord", + "craftyStatus": "Страница статуса Crafty", + "cronFormat": "Обнаружен недопустимый формат Cron", + "embarassing": "О боже, ну что ж, это так неловко.", + "error": "Ошибка!", + "eulaAgree": "Вы согласны?", + "eulaMsg": "Вы должны согласиться с", + "eulaTitle": "Согласитесь с EULA", + "fileError": "Типом файла должно быть изображение.", + "fileTooLarge": "Ошибка загрузки. Загружен слишком большой файл. Обратитесь за помощью к системному администратору.", + "hereIsTheError": "Вот в чем ошибка", + "installerJava": "Не удалось установить {} : Для установки Forge Server требуется Java. Мы обнаружили, что Java не установлена. Пожалуйста, установите java, а затем установите сервер.", + "internet": "Мы обнаружили, что компьютер, на котором запущен Crafty, не подключен к интернету. Возможно, подключение клиента к серверу ограничено.", + "migration": "Хранилище основного сервера Crafty переносится в новое место. В течение этого времени все запуски серверов были приостановлены. Пожалуйста, подождите, пока мы завершим эту миграцию", + "no-file": "Похоже, мы не можем найти запрошенный файл. Дважды проверьте путь. Есть ли у Crafty соответствующие разрешения?", + "noInternet": "У Crafty проблемы с доступом в интернет. Создание сервера было отключено. Пожалуйста, проверьте свое интернет-соединение и обновите эту страницу.", + "noJava": "Серверу {} не удалось запуститься с кодом ошибки: мы обнаружили, что Java не установлена. Пожалуйста, установите java, затем запустите сервер.", + "not-downloaded": "Похоже, мы не можем найти ваш исполняемый файл. Загрузка завершена? Установлены ли права доступа к исполняемому файлу?", + "portReminder": "Мы обнаружили, что это первый запуск {}. Убедитесь, что вы перенаправили порт {} через свой маршрутизатор/брандмауэр, чтобы сделать его удаленно доступным из интернета.", + "privMsg": "и ", + "return": "Вернуться к панели управления", + "selfHost": "Если вы самостоятельно размещаете этот репозиторий, пожалуйста, проверьте свой адрес или обратитесь к нашему руководству по устранению неполадок.", + "start-error": "Серверу {} не удалось запуститься с кодом ошибки: {}", + "superError": "Для выполнения этого действия вы должны быть суперпользователем.", + "terribleFailure": "Какая ужасная неудача!" + }, + "footer": { + "allRightsReserved": "Все права защищены", + "copyright": "Авторское право", + "version": "Версия" + }, + "login": { + "defaultPath": "Введенный вами пароль - это путь к учетным данным по умолчанию, а не пароль. Пожалуйста, найдите пароль по умолчанию в этом месте.", + "disabled": "Учетная запись пользователя отключена. Пожалуйста, обратитесь к своему системному администратору за дополнительной информацией.", + "forgotPassword": "Забыли пароль", + "incorrect": "Неверное имя пользователя или пароль", + "login": "Войти", + "password": "Пароль", + "username": "Имя пользователя", + "viewStatus": "Просмотр страницы общедоступного статуса" + }, + "notify": { + "activityLog": "Журналы действий", + "backupComplete": "Резервное копирование сервера успешно завершено {}", + "backupStarted": "Начато резервное копирование для сервера {}", + "downloadLogs": "Загружать журналы поддержки?", + "finishedPreparing": "Мы закончили подготовку ваших журналов поддержки. Пожалуйста, нажмите загрузить, чтобы загрузить", + "logout": "Выход из системы", + "preparingLogs": " Пожалуйста, подождите, пока мы подготовим ваши журналы... Мы отправим уведомление, когда они будут готовы. При больших объемах развертывания это может занять некоторое время.", + "supportLogs": "Журналы поддержки" + }, + "offline": { + "offline": "Оффлайн", + "pleaseConnect": "Пожалуйста, подключитесь к интернету, чтобы использовать Crafty." + }, + "panelConfig": { + "adminControls": "Административное управление", + "allowedServers": "Разрешенные серверы", + "apply": "Применить", + "assignedRoles": "Назначенные роли", + "cancel": "Отменить", + "clearComms": "Очистить неисполненные команды", + "custom": "Персонализировать Crafty", + "delete": "Удалить", + "edit": "Редактировать", + "enableLang": "Включить все языки", + "enabled": "Включено", + "globalExplain": "Где Crafty хранит все ваши серверные файлы. (Мы добавим к пути /servers/[uuid of server])", + "globalServer": "Глобальный каталог серверов", + "json": "Config.json", + "match": "Пароли должны совпадать", + "newRole": "Добавить новую роль", + "newUser": "Добавить нового пользователя", + "noMounts": "Не показывать диски на приборной панели", + "pageTitle": "Конфигурация панели", + "role": "Роль", + "roleUsers": "Пользователи роли", + "roles": "Роли", + "save": "Сохранить", + "select": "Выбрать", + "superConfirm": "Действуйте только в том случае, если вы хотите, чтобы у этого пользователя был доступ ко ВСЕМУ (ко всем учетным записям пользователей, серверам, настройкам панели и т.д.). Они могут даже лишить вас прав суперпользователя.", + "superConfirmTitle": "Включить суперпользователя? Вы уверены?", + "title": "Crafty конфигурация", + "user": "Пользователь", + "users": "Пользователи" + }, + "rolesConfig": { + "config": "Конфигурация ролей", + "configDesc": "Здесь вы можете изменить конфигурацию вашей роли", + "configUpdate": "Последнее обновление: ", + "created": "Создан: ", + "delRole": "Удалить роль", + "doesNotExist": "Вы не можете удалить то, чего еще не существует", + "pageTitle": "Изменить роль", + "pageTitleNew": "Новая роль", + "permAccess": "Доступ?", + "permName": "Имя разрешения", + "permsServer": "Разрешения, которыми обладает эта роль для этих указанных серверов", + "roleConfigArea": "Область конфига роли", + "roleDesc": "Как бы вы хотели назвать эту роль?", + "roleName": "Имя роли: ", + "rolePerms": "Разрешения роли", + "roleServers": "Разрешенные серверы", + "roleTitle": "Настройки ролей", + "roleUserName": "Имя пользователя", + "roleUsers": "Пользователи роли: ", + "selectManager": "Выберать менеджера для этой роли", + "serverAccess": "Доступ?", + "serverName": "Имя сервера", + "serversDesc": "серверы, доступ к которым разрешен для этой роли" + }, + "serverBackups": { + "actions": "Действия", + "after": "Запустить команду после создания резервной копии", + "backupAtMidnight": "Автоматическое резервное копирование в полночь?", + "backupNow": "Сделать резервную копию сейчас!", + "backupTask": "Запущена задача резервного копирования.", + "backups": "Резервные копии сервера", + "before": "Запустить команду перед резервным копированием", + "cancel": "Отменить", + "clickExclude": "Нажмите, чтобы выбрать исключения", + "compress": "Сжатие резервной копии", + "confirm": "Подтвердить", + "confirmDelete": "Вы хотите удалить эту резервную копию? Это невозможно будет отменить.", + "confirmRestore": "Вы уверены, что хотите выполнить восстановление из этой резервной копии? Все текущие файлы сервера перейдут в состояние резервной копии и будут недоступны восстановлению.", + "currentBackups": "Текущие резервные копии", + "default": "Резервное копирование по умолчанию", + "defaultExplain": "Резервная копия, которую Crafty будет использовать перед обновлением. Ее нельзя изменить или удалить.", + "delete": "Удалить", + "destroyBackup": "Уничтожить резервную копию \" + file_to_del + \"?", + "download": "Скачать", + "edit": "Изменить", + "enabled": "Включено", + "excludedBackups": "Исключенные пути: ", + "excludedChoose": "Выберите пути, которые вы хотите исключить из своих резервных копий", + "exclusionsTitle": "Исключения из резервного копирования", + "failed": "Неудача", + "maxBackups": "Максимально резервных копий", + "maxBackupsDesc": "Crafty не будет хранить более N резервных копий, удаляя самые старые (введите 0, чтобы сохранить все).", + "myBackup": "Моя новая резервная копия", + "name": "Имя", + "newBackup": "Создать новую резервную копию", + "no-backup": "Резервных копий нет. Чтобы создать новую конфигурацию резервного копирования, пожалуйста, нажмите - новая резервная копия", + "options": "Опции", + "path": "Путь", + "restore": "Восстановить", + "restoring": "Восстановление резервной копии. Это может занять некоторое время. Пожалуйста, наберитесь терпения.", + "run": "Запустить резервное копирование", + "save": "Сохранить", + "shutdown": "Выключить сервер на время резервного копирования", + "size": "Размер", + "standby": "Ожидание", + "status": "Статус", + "storage": "Место хранения", + "storageLocation": "Место хранения", + "storageLocationDesc": "Где вы хотите хранить резервные копии?" + }, + "serverConfig": { + "bePatientDelete": "Пожалуйста, наберитесь терпения, пока мы удаляем ваш сервер из панели Crafty. Этот экран закроется через несколько секунд.", + "bePatientDeleteFiles": "Пожалуйста, наберитесь терпения, пока мы удаляем ваш сервер из панели Crafty и удаляем все файлы. Этот экран закроется через несколько секунд.", + "bePatientUpdate": "Пожалуйста, наберитесь терпения, пока мы обновляем сервер. Время загрузки может варьироваться в зависимости от скорости вашего Интернета.
Этот экран обновится через мгновение", + "cancel": "Отмена", + "countPlayers": "Включить сервер в общее количество игроков", + "crashTime": "Тайм-аут при сбое", + "crashTimeDesc": "Как долго нам следует ждать, прежде чем считать ваш сервер аварийным?", + "deleteFilesQuestion": "Удалять серверные файлы с компьютера?", + "deleteFilesQuestionMessage": "Хотели бы вы, чтобы Crafty удалил все серверные файлы с хост-компьютера?

Это включает в себя резервное копирование серверов.", + "deleteServer": "Удалить сервер", + "deleteServerQuestion": "Удалить сервер?", + "deleteServerQuestionMessage": "Вы уверены, что хотите удалить этот сервер? После этого пути назад не будет...", + "exeUpdateURL": "URL-адрес обновления исполняемого файла сервера", + "exeUpdateURLDesc": "Прямой URL-адрес для загрузки обновлений.", + "ignoredExits": "Игнорируемые коды аварийного выхода", + "ignoredExitsExplain": "Коды выхода при обнаружении сбоя Crafty следует игнорировать как обычную 'остановку' (через запятую).", + "javaNoChange": "Не переопределять", + "javaVersion": "Переопределить текущую версию Java", + "javaVersionDesc": "Если вы собираетесь переопределить Java, убедитесь, что ваш текущий путь к Java указан в 'Команда выполнения сервера' и заключен в кавычки (по умолчанию 'java')", + "noDelete": "Нет, вернуться", + "noDeleteFiles": "Нет, просто убрать с панели", + "removeOldLogsAfter": "Удалить старые журналы после", + "removeOldLogsAfterDesc": "На сколько дней должен устареть файл журнала, чтобы его удалили (0 значит выключено)", + "save": "Сохранить", + "sendingDelete": "Удалить сервер", + "sendingRequest": "Отправка вашего запроса...", + "serverAutoStart": "Автоматический запуск сервера", + "serverAutostartDelay": "Задержка автозапуска сервера", + "serverAutostartDelayDesc": "Задержка перед автоматическим запуском (если включена ниже)", + "serverCrashDetection": "Обнаружение сбоя сервера", + "serverExecutable": "Исполняемый файл сервера", + "serverExecutableDesc": "Это исполняемый файл сервера (ядро)", + "serverExecutionCommand": "Команда выполнения сервера", + "serverExecutionCommandDesc": "Что будет запущено в скрытом терминале", + "serverIP": "IP сервера", + "serverIPDesc": "IP, к которому Crafty должен подключиться для получения статистики (попробуйте использовать реальный ip вместо 127.0.0.1, если у вас возникли проблемы)", + "serverLogLocation": "Расположение журнала сервера", + "serverLogLocationDesc": "Путь к файлу журнала", + "serverName": "Имя сервера", + "serverNameDesc": "Как вы хотите называть этот сервер", + "serverPath": "Рабочий каталог сервера", + "serverPathDesc": "Абсолютный полный путь (не включая исполняемый файл)", + "serverPort": "Порт сервера", + "serverPortDesc": "Порт, к которому Crafty должен подключиться для получения статистики", + "serverStopCommand": "Команда остановки сервера", + "serverStopCommandDesc": "Команда для отправки программе команды на остановку", + "showStatus": "Показывать на странице публичного статуса", + "shutdownTimeout": "Тайм-аут выключения", + "statsHint1": "Порт, на котором работает ваш сервер, должен быть указан здесь. Именно так Crafty открывает соединение с вашим сервером для получения статистики.", + "statsHint2": "Это не изменит порт вашего сервера. Вы все равно должны изменить порт в файле конфигурации вашего сервера.", + "stopBeforeDeleting": "Пожалуйста, остановите сервер перед его удалением", + "timeoutExplain1": "Как долго Crafty будет ждать завершения работы вашего сервера после выполнения", + "timeoutExplain2": "выполните команду до того, как она остановит процесс.", + "update": "Исполняемый файл обновления", + "yesDelete": "Да, удалить", + "yesDeleteFiles": "Да, удалить файлы" + }, + "serverConfigHelp": { + "desc": "Здесь вы можете изменить конфигурацию вашего сервера", + "perms": [ + "Рекомендуется НЕ изменять пути к серверу, управляемому Crafty.", + "Изменение путей МОЖЕТ нарушить работу, особенно в операционных системах типа Linux, где права доступа к файлам более ограничены.", + "

", + "Если вы чувствуете, что вам необходимо изменить местоположение сервера, вы можете сделать это при условии, что предоставите соответствующее разрешение \"crafty\" разрешение пользователя на чтение/запись пути к серверу.", + "
", + "
", + "В Linux это лучше всего сделать, выполнив следующие действия:
", + "", + " sudo chown crafty:crafty /путь/до/вашего/сервера -R
", + " sudo chmod 2775 /путь/до/вашего/сервера -R
", + "
" + ], + "title": "Область настройки сервера" + }, + "serverDetails": { + "backup": "Резервная копия", + "config": "Конфиг", + "files": "Файлы", + "filter": "Фильтровать логи", + "filterList": "Отфильтрованные слова", + "logs": "Логи", + "metrics": "Показатели", + "playerControls": "Управление игроками", + "reset": "Сброс прокрутки", + "schedule": "График", + "serverDetails": "Сведения о сервере", + "terminal": "Терминал" + }, + "serverFiles": { + "clickUpload": "Нажмите здесь, чтобы выбрать нужные файлы", + "close": "Закрыть", + "createDir": "Создать каталог", + "createDirQuestion": "Какое имя вы хотите задать для нового каталога?", + "createFile": "Создать файл", + "createFileQuestion": "Какое имя вы хотите задать для нового файла?", + "default": "По умолчанию", + "delete": "Удалить", + "deleteItemQuestion": "Вы уверены, что хотите удалить \" + name + \"?", + "deleteItemQuestionMessage": "Вы удаляете \\\"\" + path + \"\\\"!

Это действие будет необратимым, и это будет потеряно навсегда!", + "download": "Загрузить", + "editingFile": "Изменить файл", + "error": "Ошибка при получении файлов", + "fileReadError": "Ошибка чтения файла", + "files": "Файлы", + "keybindings": "Сочетания клавиш", + "loadingRecords": "Загрузка файлов...", + "noDelete": "Нет", + "noscript": "Файловый менеджер не работает без JavaScript", + "rename": "Переименовать", + "renameItemQuestion": "Каким должно быть новое имя?", + "save": "Сохранить", + "size": "Переключение размера редактора", + "stayHere": "НЕ ПОКИДАЙТЕ ЭТУ СТРАНИЦУ!", + "unsupportedLanguage": "Предупреждение: Этот тип файлов не поддерживается", + "unzip": "Распаковать", + "upload": "Загрузить", + "uploadTitle": "Загрузить файлы в: ", + "waitUpload": "Пожалуйста, подождите, пока мы загрузим ваши файлы... Это может занять некоторое время.", + "yesDelete": "Да, я понимаю последствия" + }, + "serverMetrics": { + "resetZoom": "Сброс масштаба", + "zoomHint1": "Чтобы увеличить масштаб графика, удерживайте клавишу shift, а затем используйте колесико прокрутки.", + "zoomHint2": "В качестве альтернативы удерживайте клавишу shift, затем щелкните и перетащите область, которую вы хотите увеличить." + }, + "serverPlayerManagement": { + "bannedPlayers": "Забаненные игроки", + "loadingBannedPlayers": "Загрузка забаненных игроков", + "players": "Игроки" + }, + "serverScheduleConfig": { + "backup": "Резервная копия сервера", + "basic": "Основной", + "children": "Связанные дочерние задачи: ", + "command": "Команда", + "command-explain": "Какую команду вы хотите, чтобы мы выполнили? Не включайте команду '/'", + "cron": "Cron", + "cron-explain": "Введите свою строку cron -- ПРИМЕЧАНИЕ: 0 = понедельник в последнем варианте.", + "custom": "Пользовательская команда", + "days": "Дни", + "enabled": "Включено", + "hours": "Часы", + "interval": "Интервал", + "interval-explain": "Как часто вы хотите, чтобы это расписание выполнялось?", + "minutes": "Минуты", + "offset": "Смещение задержки", + "offset-explain": "Как долго мы должны ждать, чтобы запустить это после запуска первого задания? (Секунды)", + "one-time": "Удалить после выполнения", + "parent": "Выберите родительское расписание", + "parent-explain": "По какому расписанию это должно произойти?", + "reaction": "Реакция", + "restart": "Перезапустить сервер", + "select": "Основной / Cron / Реакция", + "start": "Запустить сервер", + "stop": "Остановить сервер", + "time": "Время", + "time-explain": "На какое время вы хотите, чтобы ваше расписание было составлено?" + }, + "serverSchedules": { + "action": "Действие", + "actionId": "Выберите дочернее действие", + "areYouSure": "Удалить запланированную задачу?", + "cancel": "Отмена", + "cannotSee": "Не видишь всего?", + "cannotSeeOnMobile": "Попробуйте нажать на запланированную задачу, чтобы получить более подробную информацию.", + "child": "Дочерний элемент расписания с ID ", + "close": "Закрыть", + "command": "Команда", + "confirm": "Подтверждаю", + "confirmDelete": "Вы хотите удалить это запланированное задание? Это невозможно будет отменить.", + "create": "Создать новое расписание", + "cron": "Cron строка", + "delete": "Удалить", + "details": "Подробная информация о расписании", + "edit": "Редактировать", + "enabled": "Включено", + "every": "Каждый", + "interval": "Интервал", + "name": "Имя", + "newSchedule": "Новое расписание", + "nextRun": "Следующий запуск", + "no": "Нет", + "no-schedule": "В настоящее время для этого сервера нет расписаний. Чтобы начать, нажмите", + "scheduledTasks": "Запланированные задачи", + "yes": "Да" + }, + "serverStats": { + "cpuUsage": "Нагрузка CPU", + "description": "Описание", + "errorCalculatingUptime": "Ошибка при расчете времени безотказной работы", + "loadingMotd": "Загрузка MOTD", + "memUsage": "Нагрузка памяти", + "offline": "Оффлайн", + "online": "Онлайн", + "players": "Игроки", + "serverStarted": "Сервер запущен", + "serverStatus": "Состояние сервера", + "serverTime": "UTC время", + "serverTimeZone": "Часовой пояс сервера", + "serverUptime": "Время безотказной работы сервера", + "starting": "Отложенный запуск", + "unableToConnect": "Не удается подключиться", + "version": "Версия" + }, + "serverTerm": { + "commandInput": "Введите свою команду", + "delay-explained": "Служба/агент недавно запустилась и задерживает запуск экземпляра сервера minecraft", + "importing": "Импорт...", + "installing": "Установка...", + "restart": "Перезапуск", + "sendCommand": "Отправить команду", + "start": "Запустить", + "starting": "Отложенный запуск", + "stop": "Остановить", + "stopScroll": "Остановить автоматическую прокрутку", + "updating": "Обновление..." + }, + "serverWizard": { + "absoluteServerPath": "Абсолютный путь к вашему серверу", + "absoluteZipPath": "Абсолютный путь к вашему серверу", + "addRole": "Добавление сервера к существующей роли(-ям)", + "autoCreate": "Если ничего не выбрать, Crafty создаст и назначит роль сам!", + "bePatient": "Пожалуйста, будьте терпеливы, пока мы ' + (importing ? 'импортируем' : 'загружаем') + ' сервер", + "buildServer": "Создать сервер!", + "clickRoot": "Нажмите здесь, чтобы выбрать корневой каталог", + "close": "Закрыть", + "defaultPort": "25565 по умолчанию", + "downloading": "Загрузка сервера...", + "explainRoot": "Пожалуйста, нажмите на кнопку ниже, чтобы выбрать корневой каталог вашего сервера внутри архива", + "importServer": "Импорт существующего сервера", + "importServerButton": "Импортировать сервер!", + "importZip": "Импорт из Zip-файла", + "importing": "Импорт сервера...", + "labelZipFile": "Выберите свой Zip-файл", + "maxMem": "Максимальный объем памяти", + "minMem": "Минимальный объем памяти", + "myNewServer": "Мой новый сервер", + "newServer": "Создать новый сервер", + "quickSettings": "Быстрые настройки", + "quickSettingsDescription": "Не волнуйтесь, вы можете изменить это позже", + "resetForm": "Сбросить форму", + "save": "Сохранить", + "selectRole": "Выберите роль(-и)", + "selectRoot": "Выберите корневой каталог архива", + "selectServer": "Выбрать сервер", + "selectType": "Тип сервера (Vanilla, Servers, Modded и т.д.)", + "selectVersion": "Выбрать версию", + "selectZipDir": "Выберите каталог в архиве, из которого вы хотите, чтобы мы распаковали файлы", + "serverJar": "Исполняемый файл сервера", + "serverName": "Имя сервера", + "serverPath": "Путь к серверу", + "serverPort": "Порт сервера", + "serverSelect": "Выбрать сервер", + "serverType": "Тип сервера", + "serverUpload": "Загрузить архивированный сервер", + "serverVersion": "Версия сервера", + "sizeInGB": "Размер в GB", + "unsupported": "Версии Minecraft ниже 1.8 не поддерживаются Crafty. Вы все равно можете установить его. Результаты могут отличаться.", + "uploadButton": "Загрузить", + "uploadZip": "Загрузить Zip-Файл для импорта на сервер", + "zipPath": "Путь к серверу" + }, + "sidebar": { + "contribute": "Сотрудничать", + "credits": "Благодарности", + "dashboard": "Приборная панель", + "documentation": "Документация", + "inApp": "Документация в приложении", + "navigation": "Навигация", + "newServer": "Создать новый сервер", + "servers": "Серверы" + }, + "startup": { + "almost": "Заканчиваю. Держись крепче...", + "cache": "Обновление файла кэша Big Bucket", + "internals": "Настройка и запуск внутренних компонентов Crafty", + "internet": "Проверка наличия подключения к интернету", + "server": "Инициализация ", + "serverInit": "Инициализация серверов", + "starting": "Crafty запускается...", + "tasks": "Запуск планировщика задач" + }, + "userConfig": { + "apiKey": "API ключи", + "auth": "Разрешить? ", + "config": "Конфиг", + "configArea": "Область настройки пользователя", + "configAreaDesc": "Здесь вы можете изменить все свои пользовательские настройки", + "confirmDelete": "Вы уверены, что хотите удалить этого пользователя? Это действие необратимо.", + "craftyPermDesc": "Crafty разрешения, которыми обладает этот пользователь ", + "craftyPerms": "Crafty разрешения: ", + "created": "Создан: ", + "delSuper": "Вы не можете удалить суперпользователя", + "deleteUser": "Удалить пользователя: ", + "deleteUserB": "Удалить пользователя", + "enabled": "Включён", + "gravDesc": "Это электронное письмо предназначено исключительно для использования с Gravatar™. Crafty ни при каких обстоятельствах не будет использовать это электронное письмо для чего-либо, кроме поиска вашего Gravatar™", + "gravEmail": "Gravatar™ Email", + "lastIP": "Последний IP: ", + "lastLogin": "Последний вход в систему: ", + "lastUpdate": "Последнее обновление: ", + "leaveBlank": "Чтобы отредактировать пользователя без смены пароля, оставьте поле пустым.", + "manager": "Менеджер", + "member": "Участник?", + "notExist": "Вы не можете удалить то, чего не существует!", + "pageTitle": "Редактировать пользователя", + "pageTitleNew": "Создать пользователя", + "password": "Новый пароль", + "permName": "Имя разрешения", + "repeat": "Подтвердите пароль", + "roleName": "Имя роли", + "selectManager": "Выберите менеджера для пользователя", + "super": "Суперпользователь", + "userLang": "Язык пользователя", + "userName": "Имя пользователя", + "userNameDesc": "Как вы хотите называть этого пользователя?", + "userRoles": "Роли пользователя", + "userRolesDesc": "Роли, участником которых является этот пользователь.", + "userSettings": "Настройки пользователя", + "userTheme": "Тема пользовательского интерфейса", + "uses": "Количество использований (-1==без ограничений)" + }, + "validators": { + "passLength": "Пароль слишком короткий. Минимальная длина: 8" + }, + "webhooks": { + "areYouSureDel": "Вы уверены, что хотите удалить этот вебхук?", + "areYouSureRun": "Вы уверены, что хотите протестировать этот вебхук?", + "backup_server": "Завершено резервное копирование сервера", + "bot_name": "Имя бота", + "color": "Выберите цветовой акцент", + "crash_detected": "Сервер вышел из строя", + "edit": "Редактировать", + "enabled": "Включено", + "jar_update": "Обновлен исполняемый файл сервера", + "kill": "Сервер принудительно остановлен", + "name": "Имя", + "new": "Новый вебхук", + "newWebhook": "Новый вебхук", + "no-webhook": "В настоящее время для этого сервера нет веб-ссылок. Чтобы начать, нажмите", + "run": "Тестовый запуск вебхука", + "send_command": "Получена команда сервера", + "start_server": "Сервер запущен", + "stop_server": "Сервер остановлен", + "trigger": "Триггер", + "type": "Тип вебхука", + "url": "Вебхук URL", + "webhook_body": "Тело вебхука", + "webhooks": "Вебхуки" + } +} From d7f00ecb27ea1433fa8e7335a823297381aad830 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Mon, 29 Jul 2024 21:13:51 +0100 Subject: [PATCH 03/11] Update changelog !779 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f2b0764..4fe82b8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ TBD - Show natural language name instead of country code in User Config Lang select list ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/773)) - Add remaining `he_IL`, `th_TH` translations from 4.4.0 Release ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/761)) - Fix `fr_FR` syntax issues ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/780) | [Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/778)) +- Add ru_RU Translation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/779))

## --- [4.4.0] - 2024/05/11 From ff9abe4359eb8c40f0d66ed000c2deb1e2a6637b Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Mon, 29 Jul 2024 18:02:00 -0400 Subject: [PATCH 04/11] Fix directory moves on backup migration --- app/classes/shared/file_helpers.py | 6 ++---- app/migrations/20240308_multi-backup.py | 10 ++++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/classes/shared/file_helpers.py b/app/classes/shared/file_helpers.py index 23bf01dd..4fcd0c21 100644 --- a/app/classes/shared/file_helpers.py +++ b/app/classes/shared/file_helpers.py @@ -183,8 +183,7 @@ class FileHelpers: @staticmethod def move_dir(src_path, dest_path): - FileHelpers.copy_dir(src_path, dest_path) - FileHelpers.del_dirs(src_path) + shutil.move(src_path, dest_path) @staticmethod def move_dir_exist(src_path, dest_path): @@ -193,8 +192,7 @@ class FileHelpers: @staticmethod def move_file(src_path, dest_path): - FileHelpers.copy_file(src_path, dest_path) - FileHelpers.del_file(src_path) + shutil.move(src_path, dest_path) @staticmethod def make_archive(path_to_destination, path_to_zip, comment=""): diff --git a/app/migrations/20240308_multi-backup.py b/app/migrations/20240308_multi-backup.py index db154ec8..bc6dc373 100644 --- a/app/migrations/20240308_multi-backup.py +++ b/app/migrations/20240308_multi-backup.py @@ -175,12 +175,10 @@ def migrate(migrator: Migrator, database, **kwargs): Helpers.ensure_dir_exists( os.path.join(server.backup_path, new_backup.backup_id) ) - for file in os.listdir(server.backup_path): - if not os.path.isdir(os.path.join(os.path.join(server.backup_path, file))): - FileHelpers.move_file( - os.path.join(server.backup_path, file), - os.path.join(server.backup_path, new_backup.backup_id, file), - ) + FileHelpers.move_dir( + os.path.join(server.backup_path), + os.path.join(server.backup_path, new_backup.backup_id), + ) Console.debug("Migrations: Dropping old backup table") # Drop the existing backups table From 44b5f2a8094904a004c9d5b49f42e1a00aaeac48 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Tue, 30 Jul 2024 00:49:33 +0100 Subject: [PATCH 05/11] Reopen changelog 4.4.1 --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef8b70a2..d1251076 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog -## --- [4.4.1] - 2024/07/29 +## --- [4.4.1] - 2024/TBD + +**-----------------------------------------------------------------------------** + +**Initial release was reverted for patching (See Merge Request: [!784](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/784))** + +**-----------------------------------------------------------------------------** ### Refactor - Backups | Allow multiple backup configurations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/711)) - UploadAPI | Use Crafty's JWT authentication for file uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762)) From f8b10701621284312c45b8ac0c6b833dc45fbc84 Mon Sep 17 00:00:00 2001 From: Analicia Abernathy Date: Tue, 30 Jul 2024 07:32:10 -0500 Subject: [PATCH 06/11] added norole and nonerole translations --- app/translations/ru_RU.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/translations/ru_RU.json b/app/translations/ru_RU.json index 8b98f9eb..6698ef81 100644 --- a/app/translations/ru_RU.json +++ b/app/translations/ru_RU.json @@ -582,6 +582,8 @@ "minMem": "Минимальный объем памяти", "myNewServer": "Мой новый сервер", "newServer": "Создать новый сервер", + "noRole": "Не найдена роль с текущим параметром поиска", + "noneRoles": "Роли не выбраны", "quickSettings": "Быстрые настройки", "quickSettingsDescription": "Не волнуйтесь, вы можете изменить это позже", "resetForm": "Сбросить форму", From 4a5875918369ce847b048d036926eb98fc9e3832 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Mon, 29 Jul 2024 18:04:01 -0400 Subject: [PATCH 07/11] Add function for removing old malformed backups --- app/migrations/20240308_multi-backup.py | 42 +++++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/app/migrations/20240308_multi-backup.py b/app/migrations/20240308_multi-backup.py index bc6dc373..ec46286e 100644 --- a/app/migrations/20240308_multi-backup.py +++ b/app/migrations/20240308_multi-backup.py @@ -13,6 +13,13 @@ from app.classes.shared.file_helpers import FileHelpers logger = logging.getLogger(__name__) +def is_valid_backup(backup, all_servers): + try: + return str(backup.server_id) in all_servers + except (TypeError, peewee.DoesNotExist): + return False + + def migrate(migrator: Migrator, database, **kwargs): """ Write your migrations here. @@ -150,9 +157,17 @@ def migrate(migrator: Migrator, database, **kwargs): migrator.create_table(NewSchedules) migrator.run() - + all_servers = [ + row.server_id for row in Servers.select(Servers.server_id).distinct() + ] + all_backups = Backups.select() + Console.info("Cleaning up orphan backups for all servers") + valid_backups = [ + backup for backup in all_backups if is_valid_backup(backup, all_servers) + ] # Copy data from the existing backups table to the new one - for backup in Backups.select(): + for backup in valid_backups: + Console.info(f"Trying to get server for backup migration {backup.server_id}") # Fetch the related server entry from the Servers table server = Servers.get(Servers.server_id == backup.server_id) Console.info(f"Migrations: Migrating backup for server {server.server_name}") @@ -172,13 +187,28 @@ def migrate(migrator: Migrator, database, **kwargs): default=True, enabled=True, ) + Console.info( + f"New backup table created for {server.server_name} with id {new_backup.backup_id}" + ) Helpers.ensure_dir_exists( os.path.join(server.backup_path, new_backup.backup_id) ) - FileHelpers.move_dir( - os.path.join(server.backup_path), - os.path.join(server.backup_path, new_backup.backup_id), - ) + try: + Console.info( + f"Moving old backups to new backup dir for {server.server_name}" + ) + for file in os.listdir(server.backup_path): + if not os.path.isdir( + os.path.join(os.path.join(server.backup_path, file)) + ): + FileHelpers.move_file( + os.path.join(server.backup_path, file), + os.path.join(server.backup_path, new_backup.backup_id, file), + ) + except FileNotFoundError as why: + logger.error( + f"Could not move backup {file} for {server.server_name} to new location with error {why}" + ) Console.debug("Migrations: Dropping old backup table") # Drop the existing backups table From 9f7f588e85d5f452595c5589a447803ed3ea1925 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 30 Jul 2024 14:30:30 -0400 Subject: [PATCH 08/11] Tweak default backup configs to account for bad clone in 4.2.x --- app/classes/models/management.py | 2 ++ app/classes/shared/server.py | 14 ++++++++++++++ app/frontend/templates/panel/server_backup.html | 3 +-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/classes/models/management.py b/app/classes/models/management.py index 1a3e4a11..b6be14b5 100644 --- a/app/classes/models/management.py +++ b/app/classes/models/management.py @@ -400,6 +400,8 @@ class HelpersManagement: if "excluded_dirs" in conf: dirs_to_exclude = ",".join(conf["excluded_dirs"]) conf["excluded_dirs"] = dirs_to_exclude + if len(self.get_backups_by_server(conf["server_id"], True)) <= 0: + conf["default"] = True backup = Backups.create(**conf) logger.debug("Creating new backup record.") return backup.backup_id diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index ab8ca54a..828aa019 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1373,6 +1373,19 @@ class ServerInstance: def threaded_jar_update(self): server_users = PermissionsServers.get_server_user_list(self.server_id) + # check to make sure a backup config actually exists before starting the update + if len(self.management_helper.get_backups_by_server(self.server_id, True)) <= 0: + for user in server_users: + WebSocketManager().broadcast_user( + user, + "notification", + "Backup config does not exist for " + + self.name + + ". canceling update.", + ) + logger.error(f"Back config does not exist for {self.name}. Update Failed.") + self.stats_helper.set_update(False) + return False was_started = "-1" # Get default backup configuration backup_config = HelpersManagement.get_default_server_backup(self.server_id) @@ -1428,6 +1441,7 @@ class ServerInstance: "notification", "Backup failed for " + self.name + ". canceling update.", ) + self.stats_helper.set_update(False) return False # lets download the files diff --git a/app/frontend/templates/panel/server_backup.html b/app/frontend/templates/panel/server_backup.html index 86cd9415..73fde1cc 100644 --- a/app/frontend/templates/panel/server_backup.html +++ b/app/frontend/templates/panel/server_backup.html @@ -58,8 +58,7 @@
{% if len(data['backups']) == 0 %}
- {{ translate('serverBackups', 'no-backup', data['lang']) }} {{ - translate('serverBackups', 'newBackup',data['lang']) }}. + {{ translate('serverBackups', 'no-backup', data['lang']) }}.
{% end %} {% if len(data['backups']) > 0 %} From 7b739863b35c656ece660c503000e56062d88c6d Mon Sep 17 00:00:00 2001 From: Zedifus Date: Tue, 6 Aug 2024 19:51:39 +0100 Subject: [PATCH 09/11] Update changelog !785 --- CHANGELOG.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1251076..2fc3f6dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,16 @@ # Changelog -## --- [4.4.1] - 2024/TBD +## --- [4.4.1] - 2024/08/06 + +### Patch Fixes +- Migrations | Fix orphan backup configurations crashing migration operation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785)) +- Migrations | Fix missing default configuration if no server backup config exists during the migration ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785)) +- Migrations | Fix extended runtime on move procedure during migration ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/785)) **-----------------------------------------------------------------------------** -**Initial release was reverted for patching (See Merge Request: [!784](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/784))** +**Initial release was reverted for patching (See Merge Request: [!784](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/784))** *2024/07/28* -**-----------------------------------------------------------------------------** -### Refactor +**-----------------------------------------------------------------------------**### Refactor - Backups | Allow multiple backup configurations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/711)) - UploadAPI | Use Crafty's JWT authentication for file uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762)) - UploadAPI | Splice files on the frontend to allow chunked uploads as well as bulk uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762)) From 7c16737fabd0455e32c0388cb4d24d2f2b343595 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 6 Aug 2024 14:59:10 -0400 Subject: [PATCH 10/11] Appease sonar return nothing instead of false --- app/classes/shared/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 828aa019..6aec5fc4 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1385,7 +1385,7 @@ class ServerInstance: ) logger.error(f"Back config does not exist for {self.name}. Update Failed.") self.stats_helper.set_update(False) - return False + return was_started = "-1" # Get default backup configuration backup_config = HelpersManagement.get_default_server_backup(self.server_id) @@ -1442,7 +1442,7 @@ class ServerInstance: "Backup failed for " + self.name + ". canceling update.", ) self.stats_helper.set_update(False) - return False + return # lets download the files if HelperServers.get_server_type_by_id(self.server_id) != "minecraft-bedrock": From 6139a6426f8c015c732a43a814b91322d77a903b Mon Sep 17 00:00:00 2001 From: Zedifus Date: Tue, 6 Aug 2024 20:09:21 +0100 Subject: [PATCH 11/11] Close changelog 4.4.1 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a09fd50..24d7f5fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ **Initial release was reverted for patching (See Merge Request: [!784](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/784))** *2024/07/28* -**-----------------------------------------------------------------------------**### Refactor +**-----------------------------------------------------------------------------** +### Refactor - Backups | Allow multiple backup configurations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/711)) - UploadAPI | Use Crafty's JWT authentication for file uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762)) - UploadAPI | Splice files on the frontend to allow chunked uploads as well as bulk uploads ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/762))