mirror of
https://github.com/lkddi/Xboard.git
synced 2026-04-27 22:40:38 +08:00
feat: add AnyTLS support and improve system functionality
- Add AnyTLS protocol support - Add system logs viewing in admin panel - Refactor client subscription delivery code - Refactor hook mechanism - Add plugin support for Shadowsocks protocol - Add CSV export option for batch user creation - Fix mobile admin login page width display issue
This commit is contained in:
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+19
-9
File diff suppressed because one or more lines are too long
Vendored
+196
-171
File diff suppressed because one or more lines are too long
Vendored
+47
-7
@@ -1030,7 +1030,19 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
|
||||
"result": "Result",
|
||||
"duration": "Duration",
|
||||
"attempts": "Attempts",
|
||||
"nextRetry": "Next Retry"
|
||||
"nextRetry": "Next Retry",
|
||||
"failedJobsDetailTitle": "Failed Jobs Details",
|
||||
"viewFailedJobs": "View Failed Jobs",
|
||||
"jobDetailTitle": "Job Details",
|
||||
"time": "Time",
|
||||
"queue": "Queue",
|
||||
"name": "Job Name",
|
||||
"exception": "Exception",
|
||||
"noFailedJobs": "No failed jobs",
|
||||
"connection": "Connection",
|
||||
"payload": "Job Payload",
|
||||
"viewDetail": "View Details",
|
||||
"action": "Action"
|
||||
},
|
||||
"actions": {
|
||||
"retry": "Retry",
|
||||
@@ -1042,6 +1054,27 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
|
||||
"loading": "Loading queue status...",
|
||||
"error": "Failed to load queue status"
|
||||
},
|
||||
"systemLog": {
|
||||
"title": "System Logs",
|
||||
"description": "View system operation logs",
|
||||
"viewAll": "View All",
|
||||
"level": "Level",
|
||||
"time": "Time",
|
||||
"message": "Message",
|
||||
"action": "Action",
|
||||
"context": "Context",
|
||||
"search": "Search logs...",
|
||||
"noLogs": "No logs available",
|
||||
"noSearchResults": "No matching logs found",
|
||||
"detailTitle": "Log Details",
|
||||
"viewDetail": "View Details",
|
||||
"totalLogs": "Total logs: {{count}}"
|
||||
},
|
||||
"common": {
|
||||
"refresh": "Refresh",
|
||||
"close": "Close",
|
||||
"pagination": "Page {{current}}/{{total}}, {{count}} items total"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Search menus and functions...",
|
||||
"title": "Menu Navigation",
|
||||
@@ -1556,7 +1589,9 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
|
||||
},
|
||||
"rate": {
|
||||
"label": "Rate",
|
||||
"error": "Please enter a valid rate"
|
||||
"error": "Rate is required",
|
||||
"error_numeric": "Rate must be a number",
|
||||
"error_gte_zero": "Rate must be greater than or equal to 0"
|
||||
},
|
||||
"code": {
|
||||
"label": "Custom Node ID",
|
||||
@@ -1575,18 +1610,22 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
|
||||
},
|
||||
"host": {
|
||||
"label": "Node Address",
|
||||
"placeholder": "Please enter domain or IP"
|
||||
"placeholder": "Please enter domain or IP",
|
||||
"error": "Node address is required"
|
||||
},
|
||||
"port": {
|
||||
"label": "Connection Port",
|
||||
"placeholder": "User connection port",
|
||||
"tooltip": "The port that users actually connect to, this is the port number that needs to be filled in the client configuration. If using transit or tunnel, this port may be different from the port that the server actually listens on.",
|
||||
"sync": "Sync to server port"
|
||||
"sync": "Sync to server port",
|
||||
"error": "Connection port is required"
|
||||
},
|
||||
"server_port": {
|
||||
"label": "Server Port",
|
||||
"placeholder": "Server listening port",
|
||||
"tooltip": "The port that the server actually listens on, this is the real port opened on the server. If using transit or tunnel, this port may be different from the user connection port."
|
||||
"placeholder": "Enter server port",
|
||||
"error": "Server port is required",
|
||||
"tooltip": "The actual listening port on the server.",
|
||||
"sync": "Sync to server port"
|
||||
},
|
||||
"parent": {
|
||||
"label": "Parent Node",
|
||||
@@ -2003,7 +2042,8 @@ window.XBOARD_TRANSLATIONS['en-US'] = {
|
||||
"generate_count_placeholder": "Enter count for batch generation",
|
||||
"cancel": "Cancel",
|
||||
"submit": "Generate",
|
||||
"success": "Generated successfully"
|
||||
"success": "Generated successfully",
|
||||
"download_csv": "Export as CSV file"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
|
||||
Vendored
+46
-8
@@ -1026,7 +1026,21 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
|
||||
"result": "결과",
|
||||
"duration": "소요 시간",
|
||||
"attempts": "시도 횟수",
|
||||
"nextRetry": "다음 재시도"
|
||||
"nextRetry": "다음 재시도",
|
||||
"failedJobsDetailTitle": "실패한 작업 세부 정보",
|
||||
"viewFailedJobs": "실패한 작업 보기",
|
||||
"jobDetailTitle": "작업 세부 정보",
|
||||
"time": "시간",
|
||||
"queue": "대기열",
|
||||
"name": "작업 이름",
|
||||
"exception": "예외",
|
||||
"noFailedJobs": "실패한 작업 없음",
|
||||
"connection": "연결",
|
||||
"payload": "작업 페이로드",
|
||||
"viewDetail": "세부 정보 보기",
|
||||
"action": "작업",
|
||||
"noRecentOrder": "최근 주문 없음",
|
||||
"viewAll": "모두 보기"
|
||||
},
|
||||
"actions": {
|
||||
"retry": "재시도",
|
||||
@@ -1036,7 +1050,25 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
|
||||
},
|
||||
"empty": "대기열에 작업 없음",
|
||||
"loading": "대기열 상태 로딩 중...",
|
||||
"error": "대기열 상태 로드 실패"
|
||||
"error": "대기열 상태 로드 실패",
|
||||
"recentOrders": {
|
||||
"title": "최근 주문"
|
||||
},
|
||||
"jobs": {
|
||||
"title": "작업 현황",
|
||||
"failedJobsDetailTitle": "실패한 작업 세부 정보",
|
||||
"viewFailedJobs": "실패한 작업 보기",
|
||||
"jobDetailTitle": "작업 세부 정보",
|
||||
"time": "시간",
|
||||
"queue": "대기열",
|
||||
"name": "작업 이름",
|
||||
"exception": "예외",
|
||||
"noFailedJobs": "실패한 작업 없음",
|
||||
"connection": "연결",
|
||||
"payload": "작업 페이로드",
|
||||
"viewDetail": "세부 정보 보기",
|
||||
"action": "작업"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "메뉴 및 기능 검색...",
|
||||
@@ -1552,7 +1584,9 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
|
||||
},
|
||||
"rate": {
|
||||
"label": "요금",
|
||||
"error": "올바른 요금을 입력해주세요"
|
||||
"error": "요금은 필수입니다",
|
||||
"error_numeric": "요금은 숫자여야 합니다",
|
||||
"error_gte_zero": "요금은 0보다 크거나 같아야 합니다"
|
||||
},
|
||||
"code": {
|
||||
"label": "사용자 지정 노드 ID",
|
||||
@@ -1571,18 +1605,21 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
|
||||
},
|
||||
"host": {
|
||||
"label": "노드 주소",
|
||||
"placeholder": "도메인 또는 IP를 입력해주세요"
|
||||
"placeholder": "도메인 또는 IP를 입력해주세요",
|
||||
"error": "노드 주소는 필수입니다"
|
||||
},
|
||||
"port": {
|
||||
"label": "연결 포트",
|
||||
"placeholder": "사용자 연결 포트",
|
||||
"tooltip": "사용자가 실제로 연결하는 포트로, 클라이언트 설정에 입력해야 하는 포트 번호입니다. 중계 또는 터널을 사용하는 경우 서버가 실제로 수신하는 포트와 다를 수 있습니다.",
|
||||
"sync": "서버 포트와 동기화"
|
||||
"sync": "서버 포트와 동기화",
|
||||
"error": "연결 포트는 필수입니다"
|
||||
},
|
||||
"server_port": {
|
||||
"label": "서버 포트",
|
||||
"placeholder": "서버 수신 포트",
|
||||
"tooltip": "서버가 실제로 수신하는 포트로, 서버에서 실제로 열린 포트입니다. 중계 또는 터널을 사용하는 경우 사용자 연결 포트와 다를 수 있습니다."
|
||||
"placeholder": "서버 포트 입력",
|
||||
"error": "서버 포트는 필수입니다",
|
||||
"tooltip": "서버의 실제 수신 포트입니다."
|
||||
},
|
||||
"parent": {
|
||||
"label": "상위 노드",
|
||||
@@ -1953,7 +1990,8 @@ window.XBOARD_TRANSLATIONS['ko-KR'] = {
|
||||
"generate_count_placeholder": "일괄 생성할 수량 입력",
|
||||
"cancel": "취소",
|
||||
"submit": "생성",
|
||||
"success": "생성 완료"
|
||||
"success": "생성 완료",
|
||||
"download_csv": "CSV 파일로 내보내기"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
|
||||
Vendored
+48
-9
@@ -1028,7 +1028,19 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
|
||||
"result": "结果",
|
||||
"duration": "耗时",
|
||||
"attempts": "重试次数",
|
||||
"nextRetry": "下次重试"
|
||||
"nextRetry": "下次重试",
|
||||
"failedJobsDetailTitle": "失败任务详情",
|
||||
"viewFailedJobs": "查看报错详情",
|
||||
"jobDetailTitle": "任务详细信息",
|
||||
"time": "时间",
|
||||
"queue": "队列",
|
||||
"name": "任务名称",
|
||||
"exception": "异常信息",
|
||||
"noFailedJobs": "暂无失败任务",
|
||||
"connection": "连接类型",
|
||||
"payload": "任务数据",
|
||||
"viewDetail": "查看详情",
|
||||
"action": "操作"
|
||||
},
|
||||
"actions": {
|
||||
"retry": "重试",
|
||||
@@ -1039,6 +1051,27 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
|
||||
"empty": "队列中暂无作业",
|
||||
"loading": "正在加载队列状态...",
|
||||
"error": "加载队列状态失败"
|
||||
},
|
||||
"systemLog": {
|
||||
"title": "系统日志",
|
||||
"description": "查看系统运行日志记录",
|
||||
"viewAll": "查看全部",
|
||||
"level": "级别",
|
||||
"time": "时间",
|
||||
"message": "消息",
|
||||
"action": "操作",
|
||||
"context": "上下文",
|
||||
"search": "搜索日志内容...",
|
||||
"noLogs": "暂无日志记录",
|
||||
"noSearchResults": "没有匹配的日志记录",
|
||||
"detailTitle": "日志详情",
|
||||
"viewDetail": "查看详情",
|
||||
"totalLogs": "总日志数:{{count}}"
|
||||
},
|
||||
"common": {
|
||||
"refresh": "刷新",
|
||||
"close": "关闭",
|
||||
"pagination": "第 {{current}}/{{total}} 页,共 {{count}} 条"
|
||||
}
|
||||
},
|
||||
"route": {
|
||||
@@ -1523,7 +1556,9 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
|
||||
},
|
||||
"rate": {
|
||||
"label": "倍率",
|
||||
"error": "请输入有效的倍率"
|
||||
"error": "倍率不能为空",
|
||||
"error_numeric": "费率必须是数字",
|
||||
"error_gte_zero": "费率必须大于或等于0"
|
||||
},
|
||||
"code": {
|
||||
"label": "自定义节点ID",
|
||||
@@ -1542,21 +1577,24 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
|
||||
},
|
||||
"host": {
|
||||
"label": "节点地址",
|
||||
"placeholder": "请输入节点域名或者IP"
|
||||
"placeholder": "请输入节点域名或者IP",
|
||||
"error": "节点地址不能为空"
|
||||
},
|
||||
"port": {
|
||||
"label": "连接端口",
|
||||
"placeholder": "用户连接端口",
|
||||
"tooltip": "用户实际连接使用的端口,这是客户端配置中需要填写的端口号。如果使用了中转或隧道,这个端口可能与服务器实际监听的端口不同。",
|
||||
"sync": "同步到服务端口"
|
||||
"tooltip": "用户实际连接使用的端口号。如果使用了中转或隧道,这个端口可能与服务器实际监听的端口不同。",
|
||||
"sync": "同步到服务端口",
|
||||
"error": "连接端口不能为空"
|
||||
},
|
||||
"server_port": {
|
||||
"label": "服务端口",
|
||||
"placeholder": "服务端开放端口",
|
||||
"tooltip": "服务器实际监听的端口,这是在服务器上开放的真实端口。如果使用了中转或隧道,这个端口可能与用户连接端口不同。"
|
||||
"placeholder": "请输入服务端口",
|
||||
"error": "服务端口不能为空",
|
||||
"tooltip": "服务器上的实际监听端口。"
|
||||
},
|
||||
"parent": {
|
||||
"label": "父节点",
|
||||
"label": "父级节点",
|
||||
"placeholder": "选择父节点",
|
||||
"none": "无"
|
||||
},
|
||||
@@ -1970,7 +2008,8 @@ window.XBOARD_TRANSLATIONS['zh-CN'] = {
|
||||
"generate_count_placeholder": "如果为批量生产请输入生成数量",
|
||||
"cancel": "取消",
|
||||
"submit": "生成",
|
||||
"success": "生成成功"
|
||||
"success": "生成成功",
|
||||
"download_csv": "导出为 CSV 文件"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
|
||||
Reference in New Issue
Block a user