feat: 新增隧道管理功能,前后端完整实现

- 新增统一 ApiResponse 类型定义,与 Rust 端响应结构对齐
- 新增 Rust 后端隧道数据库表、模型、命令和 API 接口
- 新增前端隧道类型定义、API 调用、卡片组件和表单弹窗
- 新增中英双语隧道相关国际化文案
- 更新服务器类型定义,引入共享的 ApiResponse
This commit is contained in:
Yuhang Wu
2026-10-13 14:59:16 +08:00
parent 30ddf583e5
commit 3b153e32c9
15 changed files with 1556 additions and 10 deletions
+74
View File
@@ -88,6 +88,80 @@
"portRange": "Port must be between 1 and 65535"
}
},
"tunnel": {
"refresh": "Refresh",
"add": "Add tunnel",
"empty": "No tunnels yet. Click Add in the top right corner.",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Are you sure you want to delete tunnel \"{name}\"?",
"name": "Name",
"namePlaceholder": "Enter a tunnel name",
"type": "Proxy type",
"localIp": "Local IP",
"localIpPlaceholder": "e.g. 127.0.0.1",
"localPort": "Local port",
"remotePort": "Remote port",
"remotePortTip": "Required for tcp / udp",
"pinned": "Pinned",
"enabled": "Enabled",
"enabledTip": "Multiple tunnels can be enabled at once",
"remark": "Remark",
"remarkPlaceholder": "Optional remark",
"sort": "Sort",
"saveSuccess": "Saved successfully",
"deleteSuccess": "Deleted successfully",
"advanced": "Advanced settings",
"customDomains": "Custom domains",
"customDomainsPlaceholder": "Type a domain and press Enter to add more",
"subdomain": "Subdomain",
"subdomainPlaceholder": "e.g. test",
"locations": "URL prefixes",
"locationsPlaceholder": "Type a URL prefix and press Enter to add more",
"secretKey": "Secret key",
"secretKeyPlaceholder": "Secret key for stcp / xtcp / sudp",
"useEncryption": "Enable encryption",
"useCompression": "Enable compression",
"bandwidthLimit": "Bandwidth limit",
"bandwidthLimitPlaceholder": "e.g. 1MB / 1KB",
"proxyProtocolVersion": "Proxy Protocol version",
"proxyProtocolVersionDefault": "Disabled",
"healthCheck": "Health check",
"healthCheckType": "Check type",
"healthCheckTypeDefault": "Disabled",
"healthCheckTimeout": "Timeout (s)",
"healthCheckMaxFailed": "Max failed",
"healthCheckInterval": "Interval (s)",
"healthCheckPath": "Check path",
"healthCheckPathPlaceholder": "e.g. /healthz",
"loadBalancer": "Load balancer",
"loadBalancerGroup": "Group",
"loadBalancerGroupPlaceholder": "Proxies in the same group are load balanced",
"loadBalancerGroupKey": "Group key",
"local": "Local",
"remote": "Remote",
"types": {
"tcp": "TCP",
"udp": "UDP",
"http": "HTTP",
"https": "HTTPS",
"stcp": "STCP (secure TCP)",
"xtcp": "XTCP (P2P)",
"sudp": "SUDP (secure UDP)",
"tcpmux": "TCPMUX"
},
"form": {
"addTitle": "Add tunnel",
"editTitle": "Edit tunnel",
"nameRequired": "Please enter the tunnel name",
"typeRequired": "Please select the proxy type",
"localIpRequired": "Please enter the local IP",
"localIpInvalid": "Please enter a valid IP address or domain",
"localPortRequired": "Please enter the local port",
"remotePortRequired": "Please enter the remote port",
"portRange": "Port must be between 1 and 65535"
}
},
"common": {
"developing": "This feature is under construction",
"confirm": "OK",