feat: 新增 GRE 隧道协议,管理端口调整为 18080
- backend: 新增 GRE 隧道实现(ip tunnel 点对点互联),binmgr 支持 iproute2 - backend: api/identity 调整,各协议 service(gre/ikev2/ipsec/l2tp/openvpn)统一改动 - backend: OpenVPN 认证辅助与用户口令同步逻辑完善 - frontend: 协议图标/向导/编辑器支持 GRE,VPN 用户页重构(234 行) - frontend: 新增 RouteListInput 路由列表输入组件,Dashboard/Layout 优化 - i18n: 中英文文案同步更新 - test: 新增 binmgr/common/gre 单测,openvpn 测试补充 - docs: README 补充 GRE 说明,默认监听端口 8080 → 18080 - chore: .gitignore 增加 opsx-vpn.previous(构建备份二进制)
This commit is contained in:
1 parent
c7f59f2cbf
commit
ef7eb378d2
28 files changed
+1363
-439
No files matched your search
@@ -23,7 +23,7 @@
|
||||
"name": "Name",
|
||||
"description": "Description",
|
||||
"username": "Username",
|
||||
"password": "***",
|
||||
"password": "Password",
|
||||
"email": "Email",
|
||||
"source": "Source",
|
||||
"local": "Local",
|
||||
@@ -57,9 +57,9 @@
|
||||
"login": {
|
||||
"title": "VPN Management Platform",
|
||||
"subtitle": "Unified multi-protocol VPN management — simple, secure, and controllable",
|
||||
"protocols": "WireGuard · IPSec · L2TP · FRP · OpenVPN · Custom Protocol Plugins",
|
||||
"protocols": "WireGuard · IPSec · IKEv2 · L2TP · GRE · FRP · OpenVPN",
|
||||
"feature1Title": "Multi-Protocol Unified Management",
|
||||
"feature1Desc": "WireGuard / IPSec / L2TP / FRP / OpenVPN",
|
||||
"feature1Desc": "WireGuard / IPSec / IKEv2 / L2TP / GRE / OpenVPN",
|
||||
"feature2Title": "Enterprise-Grade Security",
|
||||
"feature2Desc": "AES-GCM encrypted keys + Two-Factor Authentication",
|
||||
"feature3Title": "One-Click Configuration",
|
||||
@@ -89,6 +89,10 @@
|
||||
"totalTraffic": "Total Traffic ↓↑",
|
||||
"protocolDistribution": "Protocol Distribution",
|
||||
"protocolEngineStatus": "Protocol Engine Status",
|
||||
"hostReadinessWarning": "Host prerequisites are incomplete. VPN forwarding or NAT may not work correctly.",
|
||||
"readinessRoot": "Service is not running as root",
|
||||
"readinessForwarding": "IPv4 forwarding is disabled",
|
||||
"readinessRoute": "No default egress route detected",
|
||||
"depCheckResult": "System dependency check results",
|
||||
"depReady": "Ready",
|
||||
"demoMode": "Demo Mode",
|
||||
@@ -217,6 +221,15 @@
|
||||
"sensitiveFieldHint": "Sensitive fields like passwords, PSK, and tokens are not displayed. Leave empty to keep the current value.",
|
||||
"tunnelName": "Tunnel Name",
|
||||
"protocolType": "Protocol Type",
|
||||
"coreOptions": "Core Connection Settings",
|
||||
"advancedOptions": "Detailed Settings",
|
||||
"trafficMode": "Traffic Egress",
|
||||
"trafficGateway": "All Traffic via VPN Gateway",
|
||||
"trafficStatic": "Static Routes Only",
|
||||
"trafficCustom": "Custom",
|
||||
"trafficGatewayTip": "Routes all client traffic through the VPN gateway with NAT egress.",
|
||||
"trafficStaticTip": "Pushes only the target networks below and preserves the client's default Internet route.",
|
||||
"trafficCustomTip": "Control the default route, static routes, and NAT separately in detailed settings.",
|
||||
"keepOriginal": "Leave empty to keep original",
|
||||
"expireTime": "Expiry Time",
|
||||
"expirePlaceholder": "Leave empty for permanent",
|
||||
@@ -241,6 +254,14 @@
|
||||
"namePlaceholder": "e.g., HQ-Branch Interconnect",
|
||||
"protocolType": "Protocol Type",
|
||||
"reselect": "Reselect",
|
||||
"coreOptions": "Core Connection Settings",
|
||||
"trafficMode": "Traffic Egress",
|
||||
"trafficGateway": "All Traffic via VPN Gateway",
|
||||
"trafficStatic": "Static Routes Only",
|
||||
"trafficCustom": "Custom",
|
||||
"trafficGatewayTip": "Routes all client traffic through the VPN gateway with NAT egress.",
|
||||
"trafficStaticTip": "Pushes only the target networks below and preserves the client's default Internet route.",
|
||||
"trafficCustomTip": "Control the default route, static routes, and NAT separately in detailed settings.",
|
||||
"advancedOptions": "Advanced Options",
|
||||
"expireTime": "Expiry Time",
|
||||
"expirePlaceholder": "Leave empty for permanent",
|
||||
@@ -337,6 +358,20 @@
|
||||
"title": "VPN Dial-in Users",
|
||||
"mfaHint": "OpenVPN Two-Factor Auth (TOTP / Static Challenge / PIN+OTP)",
|
||||
"addUser": "Add User",
|
||||
"bulkImport": "Bulk Import",
|
||||
"bulkImportTitle": "Import Platform Users",
|
||||
"bulkImportHint": "Only OpenVPN supports platform local or LDAP account imports. Create dedicated accounts for L2TP/IKEv2.",
|
||||
"importSelected": "Import Selected",
|
||||
"importedCount": "Imported {count} users",
|
||||
"importFailed": "Bulk import failed",
|
||||
"selectOpenVPNTunnel": "Select OpenVPN Tunnel",
|
||||
"selectTunnelAndUsers": "Select an OpenVPN tunnel and platform users",
|
||||
"searchPlaceholder": "Search username, name, or email",
|
||||
"allTunnels": "All Tunnels",
|
||||
"selectedUsers": "{count} users selected",
|
||||
"batchDelete": "Bulk Delete",
|
||||
"batchDeleteConfirm": "Delete the selected {count} VPN dial-in users?",
|
||||
"batchDeleteDone": "Selected VPN dial-in users deleted",
|
||||
"displayName": "Name",
|
||||
"tunnel": "Tunnel",
|
||||
"otpMfa": "OTP / MFA",
|
||||
@@ -359,6 +394,14 @@
|
||||
"clickRowHint": "Click a row to select and auto-fill",
|
||||
"otpDialogTitle": "Two-Factor Auth — {username}",
|
||||
"otpHint": "TOTP-based two-factor authentication (SHA1 / base32 / 30s / 6 digits), compatible with major Authenticator apps. Supports static challenge and PIN+OTP combo mode.",
|
||||
"mfaNotEnabled": "Two-factor authentication is not enabled",
|
||||
"mfaDisabledHint": "Bind an Authenticator app to require a one-time code when this user signs in to VPN.",
|
||||
"mfaEnabledHint": "This user must provide both their password and a one-time code to sign in to VPN.",
|
||||
"mfaSetupIntro": "Bind an Authenticator app to protect this user's VPN dial-in access.",
|
||||
"manualSetup": "Can't scan? Use a manual key",
|
||||
"verifySetup": "Confirm Binding",
|
||||
"verifySetupHint": "After scanning in Authenticator, enter the current 6-digit code to verify the binding.",
|
||||
"securityDetails": "Security Details",
|
||||
"bindStatus": "Bind Status",
|
||||
"boundTotp": "TOTP Bound",
|
||||
"staticPin": "Static PIN",
|
||||
@@ -766,13 +809,6 @@
|
||||
"label": "Machine Auth PSK",
|
||||
"tip": "Leave empty to auto-generate; shared key for iOS/Android"
|
||||
},
|
||||
"username": {
|
||||
"label": "Default Dial-in User"
|
||||
},
|
||||
"password": {
|
||||
"label": "Default Dial-in Password",
|
||||
"tip": "Leave empty to auto-generate; add more users in VPN Dial-in Users"
|
||||
},
|
||||
"address_pool": {
|
||||
"label": "Client Address Pool"
|
||||
},
|
||||
@@ -800,15 +836,8 @@
|
||||
"label": "Server Public IP"
|
||||
},
|
||||
"psk": {
|
||||
"label": "IPSec Pre-Shared Key"
|
||||
},
|
||||
"username": {
|
||||
"label": "Default Dial-in Username",
|
||||
"tip": "Add more users for this tunnel in VPN Dial-in Users"
|
||||
},
|
||||
"password": {
|
||||
"label": "Default Dial-in Password",
|
||||
"tip": "Leave empty if using only the dial-in user table (at least one method required at creation)"
|
||||
"label": "IPSec Pre-Shared Key",
|
||||
"tip": "Leave blank to generate a high-strength random key; retrieve it securely from client configuration after creation"
|
||||
},
|
||||
"ip_range": {
|
||||
"label": "Client Address Pool"
|
||||
@@ -821,6 +850,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"gre": {
|
||||
"name": "GRE Tunnel",
|
||||
"desc": "Standard IP protocol 47 tunnel for point-to-point Layer 3 connectivity between Linux, routers, and firewalls",
|
||||
"scenes": "Network Device Interconnect / Site-to-Site Routing",
|
||||
"fields": {
|
||||
"local_endpoint": { "label": "Local Public IP" },
|
||||
"remote_endpoint": { "label": "Remote Public IP" },
|
||||
"local_tunnel_ip": { "label": "Local Tunnel IP", "tip": "Use a /30, for example 10.255.0.1/30" },
|
||||
"remote_tunnel_ip": { "label": "Remote Tunnel IP", "tip": "Must share the local tunnel IP subnet" },
|
||||
"remote_subnet": { "label": "Remote LAN Subnet", "tip": "Adds a static route through the GRE peer" },
|
||||
"enable_nat": { "label": "NAT Remote Traffic", "tip": "Enable only when the remote subnet needs Internet egress via this host" },
|
||||
"outbound_interface": { "label": "NAT Egress Interface" },
|
||||
"ttl": { "label": "TTL" },
|
||||
"mtu": { "label": "GRE MTU", "tip": "1476 is typical over public Internet GRE; lower it for additional encapsulation" }
|
||||
}
|
||||
},
|
||||
"frp": {
|
||||
"name": "FRP NAT Traversal",
|
||||
"desc": "TCP/UDP/HTTP port forwarding and reverse proxy for NAT traversal",
|
||||
@@ -941,7 +986,7 @@
|
||||
"tip": "Password mode aligns with verify-client-cert none + username-as-common-name",
|
||||
"options": {
|
||||
"certificate": "Certificate Only",
|
||||
"password": "***",
|
||||
"password": "Username + Password",
|
||||
"certificate+password": "Certificate + Password"
|
||||
}
|
||||
},
|
||||
@@ -974,8 +1019,10 @@
|
||||
"tip": "When off, only pushes internal routes below (common in production)"
|
||||
},
|
||||
"push_routes": {
|
||||
"label": "Push Internal Routes",
|
||||
"tip": "CIDR, comma-separated"
|
||||
"label": "Push Routes",
|
||||
"tip": "One IP or CIDR per line; # comments are supported",
|
||||
"placeholder": "# VPC networks\n172.16.0.0/16\n# Staging\n43.129.24.233",
|
||||
"format_error": "Invalid route format: {route}"
|
||||
},
|
||||
"enable_nat": {
|
||||
"label": "Enable NAT Outbound"
|
||||
|
||||
Reference in new issue
Block a user