♻️ refactor: Refactor server management API endpoints and typings

This commit is contained in:
web
2025-08-26 09:37:15 -07:00
parent 217ddce60c
commit 4f7cc807af
141 changed files with 5665 additions and 10338 deletions
+18 -9
View File
@@ -1,27 +1,36 @@
{
"ADS Config": "Конфигурация ADS",
"Announcement Management": "Управление объявлениями",
"Application Management": "Управление приложениями",
"Auth Control": "Управление аутентификацией",
"Balance": "Баланс",
"Commerce": "Коммерция",
"Commission": "Комиссия",
"Coupon Management": "Управление купонами",
"Dashboard": "Панель управления",
"Document Management": "Управление документами",
"Finance": "Финансы",
"Email": "Электронная почта",
"Gift": "Подарок",
"Login": "Вход",
"Logs & Analytics": "Журналы и аналитика",
"Maintenance": "Обслуживание",
"Marketing Management": "Управление маркетингом",
"Node Management": "Управление узлами",
"Order Management": "Управление заказами",
"Payment Config": "Настройки оплаты",
"Product Management": "Управление продуктом",
"Protocol Management": "Управление протоколом",
"Rule Management": "Управление правилами",
"Server": "Сервер",
"Register": "Регистрация",
"Reset Subscribe": "Сброс подписки",
"SMS": "СМС",
"Server Management": "Управление сервером",
"Settings": "Настройки",
"Server Traffic": "Трафик сервера",
"Subscribe": "Подписаться",
"Subscribe Config": "Настройки подписки",
"Subscribe Traffic": "Трафик подписки",
"System": "Система",
"System Config": "Системная конфигурация",
"System Management": "Управление системой",
"System Tool": "Системные инструменты",
"Ticket Management": "Управление заявками",
"User": "Пользователь",
"User Detail": "Детали пользователя",
"User Management": "Управление пользователями"
"User Management": "Управление пользователями",
"Users & Support": "Пользователи и поддержка"
}
+37
View File
@@ -0,0 +1,37 @@
{
"address": "Адрес",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDeleteDesc": "Это действие нельзя отменить.",
"confirmDeleteTitle": "Удалить этот узел?",
"copied": "Скопировано",
"copy": "Копировать",
"create": "Создать",
"created": "Создано",
"delete": "Удалить",
"deleted": "Удалено",
"drawerCreateTitle": "Создать узел",
"drawerEditTitle": "Редактировать узел",
"edit": "Редактировать",
"enabled": "Включено",
"enabled_off": "Выключено",
"enabled_on": "Включено",
"errors": {
"nameRequired": "Пожалуйста, введите имя",
"portRange": "Порт должен быть между 1 и 65535",
"protocolRequired": "Пожалуйста, выберите протокол",
"serverAddrRequired": "Пожалуйста, введите адрес входа",
"serverRequired": "Пожалуйста, выберите сервер"
},
"name": "Имя",
"pageTitle": "Узлы",
"port": "Порт",
"protocol": "Протокол",
"select_protocol": "Выберите протокол…",
"select_server": "Выберите сервер…",
"server": "Сервер",
"tags": "Теги",
"tags_description": "Тег для группировки разрешений (включая привязку плана и политики доставки).",
"tags_placeholder": "Используйте Enter или запятую (,) для добавления нескольких тегов",
"updated": "Обновлено"
}
+3 -58
View File
@@ -1,59 +1,6 @@
{
"actions": "действия",
"app": {
"appDownloadURL": "URL загрузки приложения",
"appIcon": "Иконка приложения",
"appList": "Список приложений",
"appName": "Название приложения",
"backupDomains": "Список резервных доменов",
"backupDomainsDescription": "Список резервных доменов для разрешения доменов, по одному домену на строку",
"batchDelete": "Удалить пакетно",
"cancel": "Отмена",
"communicationKey": "Ключ связи",
"communicationKeyDescription": "Ключ, используемый для связи с клиентом",
"config": "Конфигурация",
"configApp": "Конфигурация приложения",
"confirm": "Подтвердить",
"confirmDelete": "Подтвердить удаление",
"create": "Создать",
"createApp": "Создать приложение",
"createSuccess": "Успешно создано",
"defaultVersion": "По умолчанию",
"delete": "Удалить",
"deleteWarning": "Это действие необратимо",
"describeDescription": "Используется для описания приложения, отображается в списке приложений",
"description": "Описание",
"downloadLink": "Ссылка для загрузки",
"edit": "Редактировать",
"editApp": "Редактировать приложение",
"encryption": "Метод шифрования",
"encryptionDescription": "Выберите метод шифрования для связи с клиентом. Если выбран, клиент будет использовать этот метод для связи с сервером",
"nameDescription": "Название приложения, отображается в списке приложений",
"platform": "Платформа",
"selectApp": "Выбрать приложение",
"selectAppDescription": "Выберите приложение для настройки, все параметры будут применены к выбранному приложению",
"startupPicture": "Стартовое изображение",
"startupPictureDescription": "Стартовое изображение, поддерживает сетевые и локальные изображения. Для сетевых изображений введите полный URL изображения",
"startupPicturePreview": "Предварительный просмотр стартового изображения",
"startupPictureSkip": "Время пропуска стартового изображения",
"startupPictureSkipDescription": "Время отображения стартового изображения в секундах, введите 0, чтобы не отображать",
"subscriptionProtocol": "Протокол подписки",
"updateSuccess": "Успешно обновлено",
"version": "Версия"
},
"cancel": "Отмена",
"config": {
"singleSubscriptionMode": "Режим единой подписки",
"subscriptionDomain": "Домен подписки",
"subscriptionDomainDescription": "Используется для подписки; оставьте пустым, чтобы использовать домен сайта",
"subscriptionDomainPlaceholder": "Введите домен подписки, по одному на строку",
"subscriptionPath": "Путь подписки",
"subscriptionPathDescription": "Используется для подписки; обязательно перезапустите систему после изменения для оптимальной производительности",
"subscriptionPathPlaceholder": "Введите",
"updateSuccess": "Успешно обновлено",
"wildcardResolution": "Разрешение подстановочных знаков",
"wildcardResolutionDescription": "Используется для подписки"
},
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"copy": "Копировать",
@@ -94,6 +41,9 @@
"name": "Название",
"noLimit": "Без ограничений",
"noReset": "Без Сброса",
"node": "Узел",
"nodeGroup": "Группа узлов",
"nodes": "Узлы",
"pricing": "Цены",
"purchaseWithDiscount": "Разрешить Вычет",
"purchaseWithDiscountDescription": "Включить или отключить функцию отписки. После активации система выполнит обработку вычетов в соответствии с настроенными правилами и пропорциями, а оставшаяся сумма будет возвращена на баланс",
@@ -106,9 +56,6 @@
"selectResetCycle": "Пожалуйста, выберите цикл сброса",
"selectSubscribeGroup": "Пожалуйста, выберите группу подписки",
"selectUnitTime": "Пожалуйста, выберите единицу времени",
"server": "Сервер",
"serverGroup": "Группа серверов",
"servers": "Серверы",
"speedLimit": "Ограничение скорости",
"traffic": "Трафик",
"unitPrice": "Цена за единицу",
@@ -150,8 +97,6 @@
"subscribeGroup": "Подписаться на группу",
"tabs": {
"subscribe": "Подписаться",
"subscribeApp": "Конфигурация приложения",
"subscribeConfig": "Конфигурация подписки",
"subscribeGroup": "Группа подписок"
},
"traffic": "трафик",
-183
View File
@@ -1,183 +0,0 @@
{
"config": {
"addTimeSlot": "Добавить временной интервал",
"communicationKey": "Ключ связи",
"communicationKeyDescription": "Ключ для связи узлов для обеспечения безопасности данных",
"delete": "Удалить",
"dynamicMultiplier": "Динамический множитель",
"dynamicMultiplierDescription": "Динамический множитель относится к обработке переданных данных с различными множителями для разных узлов в разные периоды времени.",
"endTime": "Время окончания",
"inputPlaceholder": "Введите",
"multiplier": "Множитель",
"nodePullInterval": "Интервал опроса узла",
"nodePullIntervalDescription": "Частота (в секундах) опроса узлами данных с панели",
"nodePushInterval": "Интервал отправки узла",
"nodePushIntervalDescription": "Частота отправки данных узлами на панель",
"reset": "Сбросить",
"save": "Сохранить",
"saveSuccess": "Сохранение успешно",
"startTime": "Время начала",
"timeSlot": "Временной интервал"
},
"group": {
"actions": "Действия",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"create": "Создать",
"createNodeGroup": "Создать группу узлов",
"createdSuccessfully": "Успешно создано",
"delete": "Удалить",
"deleteWarning": "После удаления данные не могут быть восстановлены, пожалуйста, будьте осторожны.",
"deletedSuccessfully": "Успешно удалено",
"description": "Описание",
"edit": "Редактировать",
"editNodeGroup": "Редактировать группу узлов",
"name": "Название",
"title": "Список групп узлов",
"updatedAt": "Время обновления"
},
"groupForm": {
"cancel": "Отмена",
"confirm": "Подтвердить",
"description": "Описание",
"name": "Имя"
},
"node": {
"abnormal": "Аномалия",
"actions": "Действия",
"address": "Адрес",
"all": "Все",
"basicInfo": "Основная информация",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"copy": "Копировать",
"copySuccess": "Успешно скопировано",
"create": "Создать",
"createNode": "Создать узел",
"createSuccess": "Успешно создано",
"delete": "Удалить",
"deleteSuccess": "Успешно удалено",
"deleteWarning": "После удаления данные не могут быть восстановлены. Пожалуйста, будьте осторожны.",
"detail": "Детали",
"disabled": "Отключено",
"disk": "Диск",
"edit": "Редактировать",
"editNode": "Редактировать узел",
"enable": "Включить",
"enabled": "Включено",
"expireTime": "Время истечения",
"hide": "Скрыть",
"id": "ID",
"ipAddresses": "IP-адреса",
"lastUpdated": "Последнее обновление",
"location": "Местоположение",
"memory": "Память",
"name": "Имя",
"noData": "--",
"node": "Узел",
"nodeDetail": "Детали узла",
"nodeGroup": "Группа узлов",
"nodeStatus": "Статус узла",
"normal": "Нормально",
"onlineCount": "Количество онлайн",
"onlineUsers": "Онлайн пользователи",
"protocol": "Протокол",
"rate": "Скорость",
"relay": "Реле",
"serverAddr": "Адрес сервера",
"speedLimit": "Ограничение скорости",
"status": "Статус",
"subscribeId": "ID подписки",
"subscribeName": "Имя подписки",
"subscription": "Подписка",
"tags": "Теги",
"trafficRatio": "Коэффициент трафика",
"trafficUsage": "Использование трафика",
"type": "Тип",
"updateSuccess": "Успешно обновлено",
"updatedAt": "Время обновления",
"user": "Пользователь",
"userDetail": "Детали пользователя",
"userId": "ID пользователя"
},
"nodeForm": {
"allowInsecure": "Разрешить небезопасное соединение",
"cancel": "Отмена",
"city": "Город",
"confirm": "Подтвердить",
"congestionController": "Контроллер перегрузки",
"country": "Страна",
"disableSni": "Отключить SNI",
"edit": "Редактировать",
"editSecurity": "Редактировать настройки безопасности",
"enableTLS": "Включить TLS",
"encryptionMethod": "Метод шифрования",
"fingerprint": "Отпечаток",
"flow": "Алгоритм управления потоком",
"groupId": "Группа узлов",
"hopInterval": "Интервал перехода",
"hopPorts": "Порты перехода",
"hopPortsPlaceholder": "Разделите несколько портов запятыми",
"name": "Имя",
"obfsPassword": "Пароль обфускации",
"obfsPasswordPlaceholder": "Оставьте пустым для отсутствия обфускации",
"path": "Путь",
"pleaseSelect": "Пожалуйста, выберите",
"port": "Порт сервера",
"protocol": "Протокол",
"reduceRtt": "Сократить RTT",
"relayHost": "Хост реле",
"relayMode": "Режим реле",
"relayPort": "Порт реле",
"relayPrefix": "Префикс реле",
"remarks": "Примечания",
"security": "Безопасность",
"securityConfig": "Настройки безопасности",
"selectEncryptionMethod": "Выберите метод шифрования",
"selectNodeGroup": "Выберите группу узлов",
"selectProtocol": "Выберите протокол",
"selectRelayMode": "Выберите режим реле",
"serverAddr": "Адрес сервера",
"serverKey": "Ключ сервера",
"serverName": "Имя службы",
"speedLimit": "Ограничение скорости",
"speedLimitPlaceholder": "Неограниченно",
"tags": "Теги",
"tagsPlaceholder": "Используйте Enter или запятую (,) для ввода нескольких тегов",
"trafficRatio": "Доля трафика",
"transport": "Настройки транспортного протокола",
"transportConfig": "Настройки транспортного протокола",
"transportHost": "Адрес транспортного сервера",
"transportPath": "Транспортный путь",
"transportServerName": "Имя транспортного сервера",
"udpRelayMode": "Режим UDP реле"
},
"relayModeOptions": {
"all": "Все",
"none": "Нет",
"random": "Случайный"
},
"securityConfig": {
"fingerprint": "Отпечаток",
"privateKey": "Закрытый ключ",
"privateKeyPlaceholder": "Оставьте пустым для авто-генерации",
"publicKey": "Открытый ключ",
"publicKeyPlaceholder": "Оставьте пустым для авто-генерации",
"serverAddress": "Адрес сервера",
"serverAddressPlaceholder": "REALITY целевой адрес, по умолчанию используется SNI",
"serverName": "Имя сервера (SNI)",
"serverNamePlaceholder": "REALITY требуется, должно соответствовать бэкенду",
"serverPort": "Порт сервера",
"serverPortPlaceholder": "REALITY целевой порт, по умолчанию 443",
"shortId": "Короткий ID",
"shortIdPlaceholder": "Оставьте пустым для авто-генерации",
"sni": "Указание имени сервера (SNI)"
},
"tabs": {
"node": "Узел",
"nodeConfig": "Конфигурация узла",
"nodeGroup": "Группа узлов"
}
}
+101
View File
@@ -0,0 +1,101 @@
{
"address": "Адрес",
"address_placeholder": "Адрес сервера",
"cancel": "Отмена",
"city": "Город",
"config": {
"actions": {
"cancel": "Отмена",
"save": "Сохранить"
},
"communicationKey": "Ключ связи",
"communicationKeyDescription": "Используется для аутентификации узла.",
"description": "Управление ключами связи узла, интервалами получения/отправки и динамическими множителями.",
"dynamicMultiplier": "Динамический множитель",
"dynamicMultiplierDescription": "Определите временные слоты и множители для корректировки учета трафика.",
"endTime": "Время окончания",
"inputPlaceholder": "Пожалуйста, введите",
"multiplier": "Множитель",
"nodePullInterval": "Интервал получения узлом",
"nodePullIntervalDescription": "Как часто узел получает конфигурацию (в секундах).",
"nodePushInterval": "Интервал отправки узлом",
"nodePushIntervalDescription": "Как часто узел отправляет статистику (в секундах).",
"reset": "Сброс",
"save": "Сохранить",
"saveSuccess": "Успешно сохранено",
"startTime": "Время начала",
"timeSlot": "Временной слот",
"title": "Конфигурация узла"
},
"confirm": "Подтвердить",
"confirmDeleteDesc": "Это действие нельзя отменить.",
"confirmDeleteTitle": "Удалить этот сервер?",
"congestion_controller": "Контроллер перегрузки",
"copied": "Скопировано",
"copy": "Копировать",
"country": "Страна",
"cpu": "ЦП",
"create": "Создать",
"created": "Успешно создано",
"delete": "Удалить",
"deleted": "Успешно удалено",
"disable_sni": "Отключить SNI",
"disk": "Диск",
"drawerCreateTitle": "Создать сервер",
"drawerEditTitle": "Редактировать сервер",
"edit": "Редактировать",
"enabled": "Включено",
"encryption_method": "Метод шифрования",
"expireTime": "Время истечения",
"expired": "Истекло",
"flow": "Поток",
"hop_interval": "Интервал перехода",
"hop_ports": "Порты перехода",
"hop_ports_placeholder": "например, 1-65535",
"host": "Хост",
"id": "ID",
"ipAddresses": "IP-адреса",
"memory": "Память",
"name": "Имя",
"noData": "Нет данных",
"notAvailable": "Недоступно",
"obfs_password": "Пароль обфускации",
"obfs_password_placeholder": "Введите пароль обфускации",
"offline": "Офлайн",
"online": "Онлайн",
"onlineUsers": "Онлайн пользователи",
"pageTitle": "Серверы",
"path": "Путь",
"please_select": "Пожалуйста, выберите",
"port": "Порт",
"protocols": "Протоколы",
"reduce_rtt": "Сократить RTT",
"security_allow_insecure": "Разрешить небезопасное",
"security_fingerprint": "Отпечаток",
"security_private_key": "Закрытый ключ реальности",
"security_private_key_placeholder": "Введите закрытый ключ",
"security_public_key": "Открытый ключ реальности",
"security_public_key_placeholder": "Введите открытый ключ",
"security_server_address": "Адрес сервера реальности",
"security_server_address_placeholder": "например, 1.2.3.4 или домен",
"security_server_port": "Порт сервера реальности",
"security_short_id": "Короткий ID реальности",
"security_short_id_placeholder": "Шестнадцатеричная строка (до 16 символов)",
"security_sni": "SNI",
"security_title": "Безопасность",
"select_encryption_method": "Выберите метод шифрования",
"server_key": "Ключ сервера",
"service_name": "Имя службы",
"status": "Статус",
"subscribeId": "ID подписки",
"subscription": "Подписка",
"traffic": "Трафик",
"traffic_ratio": "Множитель",
"transport_title": "Транспорт",
"udp_relay_mode": "Режим UDP ретрансляции",
"unitSecondsShort": "С",
"unlimited": "Неограниченно",
"updated": "Успешно обновлено",
"user": "Пользователь",
"validation_failed": "Ошибка валидации. Пожалуйста, проверьте форму."
}