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:
xboard
2025-05-22 17:58:22 +08:00
parent 2580475f78
commit fc5a957ddd
35 changed files with 1586 additions and 640 deletions
+46 -8
View File
@@ -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": {