mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-11-10 21:20:56 +08:00
* feat(dns): support local static records * fix(dns): normalize zone names with LowerName, preload static zones, and deprecate tld_dns_zone - Normalize DNS zone names to LowerName across the server catalog and RPC boundaries to prevent uppercase/non-canonical zone suffixes from clearing node records. - Preload all configured static zones during server initialization before registering the resolver and applying system DNS configuration. - Deprecate tld_dns_zone in favor of [dns] domain, keeping tld_dns_zone as a hidden fallback without exposing it in help or schema defaults. - Keep MagicDnsRecordStore using LowerName and restrict dns_route_identity to node hostname and IP.
809 lines
33 KiB
YAML
809 lines
33 KiB
YAML
network: Network
|
||
networking_method: Networking Method
|
||
public_server: Public Server
|
||
manual: Manual
|
||
standalone: Standalone
|
||
initial_nodes: Initial Nodes
|
||
initial_nodes_help: |
|
||
EasyTier does not distinguish between server and client roles.
|
||
• Filling in Initial Nodes = plugging in the cable and joining an existing network.
|
||
• Leaving it empty = the node starts alone until others connect to it, or you connect it later yourself.
|
||
• Direct or indirect connectivity, including through relay nodes, can form one network.
|
||
Initial nodes can be your own nodes or ones shared by others.
|
||
initial_node_placeholder: "Example: node.example.com"
|
||
virtual_ipv4: Virtual IPv4
|
||
virtual_ipv4_dhcp: DHCP
|
||
network_name: Network Name
|
||
network_secret: Network Secret
|
||
secure_mode: Secure Mode
|
||
secure_mode_hint: Noise-encrypted handshake between nodes; peers must support secure mode
|
||
credential_secret: Temporary Credential
|
||
credential_secret_hint: Paste the credential issued by your network admin
|
||
use_credential: I have a temporary credential from my admin
|
||
use_network_secret: Use the network secret instead
|
||
credential_mode_hint: "Join with an admin-issued credential: connections are encrypted automatically and expire on their own. If you did not receive one, use the network secret instead."
|
||
public_server_url: Public Server URL
|
||
peer_urls: Peer URLs
|
||
proxy_cidrs: Subnet Proxy CIDRs
|
||
vpn_portal_enable: "Enable WireGuard"
|
||
vpn_portal_setup_help: "After starting the node, open WireGuard devices on the status page to add a device and scan its QR code. Disabling keeps your keys and devices."
|
||
vpn_portal_advanced: "Advanced settings"
|
||
vpn_portal_config_clients_help: "Device changes are saved with the member configuration and applied to the node."
|
||
vpn_portal_devices: "WireGuard devices"
|
||
vpn_portal_devices_help: "Each device has its own connection configuration."
|
||
vpn_portal_client_address: "Device virtual IP"
|
||
vpn_portal_client_prefix: "Network prefix length"
|
||
vpn_portal_address_help: "The device uses its own address in the EasyTier network. Suggested addresses exclude known occupied addresses."
|
||
vpn_portal_invalid_name: "Use a unique name with 1–63 letters, digits or hyphens, starting and ending with a letter or digit."
|
||
vpn_portal_invalid_address: "Enter a valid, unused device IP and check the network prefix in advanced settings."
|
||
vpn_portal_generate_config: "Generate connection config"
|
||
vpn_portal_save_failed: "Failed to add device"
|
||
vpn_portal_remove_failed: "Failed to delete device"
|
||
vpn_portal_remove_confirm: "This device will no longer be able to connect."
|
||
vpn_portal_connect_device: "Connection config"
|
||
vpn_portal_server_endpoint: "Server address"
|
||
vpn_portal_custom_endpoint: "Custom connection address"
|
||
vpn_portal_endpoint_help: "Uses this node’s public address by default. Override it to use a domain or a different forwarded port."
|
||
vpn_portal_endpoint_required: "No valid connection address is available. Enter a reachable IP or domain and UDP port."
|
||
vpn_portal_scan_help: "Scan the QR code in the WireGuard app, or import the downloaded configuration file."
|
||
vpn_portal_qr_alt: "WireGuard connection QR code"
|
||
vpn_portal_qr_failed: "Could not generate the QR code. Download or copy the configuration instead."
|
||
vpn_portal_download_config: "Download config"
|
||
vpn_portal_show_config: "Show config text"
|
||
vpn_portal_copy_failed: "Could not copy the configuration. Please download it."
|
||
vpn_portal_wireguard_listen: WireGuard Listen Address
|
||
vpn_portal_wireguard_listen_placeholder: "Example: 0.0.0.0:22022"
|
||
vpn_portal_wireguard_private_key: WireGuard Server Private Key
|
||
vpn_portal_wireguard_private_key_placeholder: Required base64 key (generate with wg genkey)
|
||
vpn_portal_clients: WireGuard Clients
|
||
vpn_portal_add_client: "Add device"
|
||
vpn_portal_no_clients: "No devices yet. Add one to scan a QR code or download its configuration."
|
||
vpn_portal_client_name: "Device name (optional)"
|
||
vpn_portal_client_name_placeholder: "Example: alice-phone"
|
||
vpn_portal_client_virtual_ip: Virtual Network CIDR
|
||
vpn_portal_client_virtual_ip_placeholder: "Example: 10.126.126.10/24"
|
||
vpn_portal_client_groups: ACL Groups
|
||
vpn_portal_client_groups_placeholder: Select ACL groups
|
||
vpn_portal_remove_client: "Delete device"
|
||
dev_name: TUN interface name
|
||
advanced_settings: Advanced Settings
|
||
basic_settings: Basic Settings
|
||
listener_urls: Listener URLs
|
||
rpc_port: RPC Port
|
||
port: Port
|
||
path: Path
|
||
rpc_portal_whitelists: RPC Whitelist
|
||
config_network: Config Network
|
||
running: Running
|
||
error_msg: Error Message
|
||
detail: Detail
|
||
add_new_network: New Network
|
||
add_peer_url: Add Peer
|
||
add_initial_node: Add Initial Node
|
||
add_listener_url: Add Listener
|
||
add_mapped_listener: Add Mapped Listener
|
||
del_cur_network: Delete Current Network
|
||
select_network: Select Network
|
||
network_instances: Network Instances
|
||
instance_id: Instance ID
|
||
network_infos: Network Infos
|
||
parse_network_config: Parse Network Config
|
||
config_generator_placeholder: Generated TOML configuration appears here
|
||
generate_config: Generate Config
|
||
copy_config: Copy Config
|
||
config_copied: Copied
|
||
config_generation_failed: Generation failed
|
||
config_copy_failed: Copy failed
|
||
magisk_module_configuration: EasyTier Module Configuration
|
||
magisk_status_loading: Loading status
|
||
magisk_status_running: Running
|
||
magisk_status_stopped: Stopped
|
||
magisk_status_restarting: Restarting
|
||
magisk_save_restart: Save and Restart
|
||
magisk_command_args_warning: Startup argument mode is active, so the module ignores config.toml. Remove config/command_args before saving configuration here.
|
||
magisk_invalid_module_directory: KernelSU returned an invalid module directory
|
||
magisk_load_failed: 'Failed to load module configuration: {error}'
|
||
magisk_save_failed: 'Failed to save module configuration: {error}'
|
||
magisk_config_saved: Configuration validated and saved; EasyTier restarted
|
||
magisk_config_saved_restart_pending: Configuration validated and saved; the EasyTier supervisor is still starting
|
||
retain_network_instance: Retain Network Instance
|
||
collect_network_infos: Collect Network Infos
|
||
settings: Settings
|
||
exchange_language: 切换中文
|
||
logging: Logging
|
||
logging_level_info: Info
|
||
logging_level_debug: Debug
|
||
logging_level_warn: Warn
|
||
logging_level_trace: Trace
|
||
logging_level_off: Off
|
||
logging_open_dir: Open Log Directory
|
||
logging_copy_dir: Copy Log Path
|
||
vpn_tile_no_network: No configured network
|
||
vpn_tile_no_network_description: Configure a network in EasyTier before using the VPN tile.
|
||
vpn_tile_started: VPN network started
|
||
vpn_tile_stopped: VPN network stopped
|
||
vpn_tile_action_failed: 'VPN tile action failed: {error}'
|
||
disable_auto_launch: Disable Launch on Reboot
|
||
enable_auto_launch: Enable Launch on Reboot
|
||
hide_dock_icon: Hide Dock Icon
|
||
show_dock_icon: Show Dock Icon
|
||
exit: Exit
|
||
use_latency_first: Latency First Mode
|
||
show_node_details: Show Node Details
|
||
hide_node_details: Hide Node Details
|
||
chips_placeholder: 'e.g: {0}, select from the dropdown after input'
|
||
hostname_placeholder: 'Leave blank and default to host name: {0}'
|
||
dev_name_placeholder: 'Note: When multiple networks use the same TUN interface name at the same time, there will be a conflict when setting the TUN''s IP. Leave blank to automatically generate a random name.'
|
||
off_text: Press to disable
|
||
on_text: Press to enable
|
||
show_config: Show Config
|
||
edit_config: Edit Config File
|
||
config_file: Config File
|
||
close: Close
|
||
save: Save
|
||
config_saved: Configuration saved
|
||
my_node_info: My Node Info
|
||
peer_count: Connected
|
||
upload: Upload
|
||
download: Download
|
||
show_vpn_portal_config: Show VPN Portal Config
|
||
vpn_portal_config: VPN Portal Config
|
||
vpn_portal_not_configured: "WireGuard is disabled or has not started listening yet."
|
||
vpn_portal_load_failed: Failed to load VPN Portal information
|
||
vpn_portal_listener: Listener
|
||
vpn_portal_type: Type
|
||
vpn_portal_state: State
|
||
vpn_portal_peer_id: Peer ID
|
||
vpn_portal_endpoint: Client Endpoint
|
||
vpn_portal_tunnel_ip: Client Tunnel Address
|
||
vpn_portal_client_config: "Connection config"
|
||
vpn_portal_copy_client_config: Copy Client Config
|
||
vpn_portal_state_unspecified: Unknown
|
||
vpn_portal_state_offline: Offline
|
||
vpn_portal_state_connecting: Connecting
|
||
vpn_portal_state_online: Online
|
||
vpn_portal_state_error: Error
|
||
show_event_log: Show Event Log
|
||
event_log: Event Log
|
||
peer_info: Peer Info
|
||
route_cost: Route Cost
|
||
tunnel_proto: Protocol
|
||
hostname: Hostname
|
||
latency: Latency
|
||
upload_bytes: Upload
|
||
download_bytes: Download
|
||
loss_rate: Loss Rate
|
||
nat_type: NAT Type
|
||
|
||
flags_switch: Feature Switch
|
||
|
||
latency_first: Enable Latency-First Mode
|
||
latency_first_help: Ignore hop count and select the path with the lowest total latency
|
||
|
||
use_smoltcp: Use User-Space Protocol Stack
|
||
use_smoltcp_help: Use a user-space TCP/IP stack to avoid issues with operating system firewalls blocking subnet or KCP proxy functionality.
|
||
|
||
disable_ipv6: Disable IPv6
|
||
disable_ipv6_help: Disable IPv6 functionality for this node, only use IPv4 for network communication.
|
||
|
||
ipv6_public_addr_auto: Auto Public IPv6
|
||
ipv6_public_addr_auto_help: Auto-obtain a public IPv6 address from a peer that shares its IPv6 subnet.
|
||
|
||
enable_kcp_proxy: Enable KCP Proxy
|
||
enable_kcp_proxy_help: Convert TCP traffic to KCP traffic to reduce latency and boost transmission speed.
|
||
|
||
disable_kcp_input: Disable KCP Input
|
||
disable_kcp_input_help: Disable inbound KCP traffic, while nodes with KCP proxy enabled continue to connect using TCP.
|
||
|
||
enable_quic_proxy: Enable QUIC Proxy
|
||
enable_quic_proxy_help: Convert TCP traffic to QUIC traffic to reduce latency and boost transmission speed.
|
||
|
||
disable_quic_input: Disable QUIC Input
|
||
disable_quic_input_help: Disable inbound QUIC traffic, while nodes with QUIC proxy enabled continue to connect using TCP.
|
||
|
||
disable_p2p: Disable P2P
|
||
disable_p2p_help: Disable ordinary automatic P2P. Nodes with need-p2p enabled can still establish P2P with this node.
|
||
|
||
p2p_only: P2P Only
|
||
p2p_only_help: Only communicate with peers that have already established P2P connections, do not relay through other nodes.
|
||
|
||
lazy_p2p: Lazy P2P
|
||
lazy_p2p_help: Only try to establish P2P when traffic actually targets a peer. Peers with need-p2p enabled are still connected proactively.
|
||
|
||
bind_device: Bind to Physical Device Only
|
||
bind_device_help: Use only the physical network interface to prevent EasyTier from connecting via virtual networks.
|
||
|
||
no_tun: No TUN Mode
|
||
no_tun_help: Do not use a TUN interface, suitable for environments without administrator privileges. This node is only accessible; accessing other nodes requires SOCKS5.
|
||
|
||
enable_exit_node: Enable Exit Node
|
||
enable_exit_node_help: Allow this node to be an exit node
|
||
|
||
relay_all_peer_rpc: Relay RPC Packets
|
||
relay_all_peer_rpc_help: |
|
||
Relay all peer rpc packets, even if the peer is not in the relay network whitelist.
|
||
This can help peers not in relay network whitelist to establish p2p connection.
|
||
|
||
need_p2p: Need P2P
|
||
need_p2p_help: Ask other peers to proactively establish P2P connections to this node even when they enable lazy P2P.
|
||
|
||
multi_thread: Multi Thread
|
||
multi_thread_help: Use multi-thread runtime
|
||
|
||
proxy_forward_by_system: System Forward
|
||
proxy_forward_by_system_help: Forward packet to proxy networks via system kernel, disable internal nat for network proxy
|
||
|
||
disable_encryption: Disable Encryption
|
||
disable_encryption_help: Disable encryption for peers communication. Encryption is enabled by default, this option must be same with peers.
|
||
|
||
disable_tcp_hole_punching: Disable TCP Hole Punching
|
||
disable_tcp_hole_punching_help: Disable tcp hole punching
|
||
|
||
disable_udp_hole_punching: Disable UDP Hole Punching
|
||
disable_udp_hole_punching_help: Disable udp hole punching
|
||
|
||
enable_udp_broadcast_relay: UDP Broadcast Relay
|
||
enable_udp_broadcast_relay_help: "Windows only: capture local UDP broadcast packets from physical interfaces and forward them to EasyTier peers. Helps games to find rooms in local network. Requires administrator privileges."
|
||
|
||
disable_upnp: Disable UPnP
|
||
disable_upnp_help: Disable runtime UPnP/NAT-PMP port mapping for eligible listeners; automatic port mapping is enabled by default.
|
||
|
||
disable_sym_hole_punching: Disable Symmetric NAT Hole Punching
|
||
disable_sym_hole_punching_help: Disable special hole punching handling for symmetric NAT (based on birthday attack), treat symmetric NAT as cone NAT
|
||
|
||
enable_magic_dns: Enable Magic DNS
|
||
enable_magic_dns_help: |
|
||
Enable magic dns, all nodes in the network can access each other by domain name, e.g.: node1.et.net.
|
||
enable_private_mode: Enable Private Mode
|
||
enable_private_mode_help: |
|
||
Enable private mode, nodes with different network names or passwords from this network are not allowed to perform handshake or relay through this node.
|
||
|
||
relay_network_whitelist: Network Whitelist
|
||
relay_network_whitelist_help: |
|
||
Only forward traffic from the whitelist networks, supporting wildcard strings, multiple network names can be separated by spaces.
|
||
If this parameter is empty, forwarding is disabled. By default, all networks are allowed.
|
||
e.g.: '*' (all networks), 'def*' (networks with the prefix 'def'), 'net1 net2' (only allow net1 and net2)
|
||
|
||
manual_routes: Manual Route
|
||
manual_routes_help: |
|
||
Assign routes cidr manually, will disable subnet proxy and wireguard routes propagated from peers. e.g.:192.168.0.0/16
|
||
|
||
socks5: Socks5 Server
|
||
socks5_help: |
|
||
Enable socks5 server, allow socks5 client to access virtual network. format: <port>, e.g.: 1080
|
||
|
||
exit_nodes: Exit Nodes
|
||
exit_nodes_help: Exit nodes to forward all traffic to, a virtual ipv4 address, priority is determined by the order of the list
|
||
|
||
port_forwards: Port Forward
|
||
port_forwards_help: "forward local port to remote port in virtual network. e.g.: udp://0.0.0.0:12345/10.126.126.1:23456, means forward local udp port 12345 to 10.126.126.1:23456 in the virtual network. can specify multiple."
|
||
port_forwards_bind_addr: "Bind address, e.g.: 0.0.0.0"
|
||
port_forwards_dst_addr: "Destination address, e.g.: 10.126.126.1"
|
||
port_forwards_add_btn: "Add"
|
||
edit_port_forward: "Edit Port Forward"
|
||
|
||
mtu: MTU
|
||
mtu_help: |
|
||
MTU of the TUN device, default is 1380 for non-encryption, 1360 for encryption. Range:400-1380
|
||
mtu_placeholder: Leave blank as default value 1380
|
||
|
||
instance_recv_bps_limit: Instance Receive Limit
|
||
instance_recv_bps_limit_help: |
|
||
Limit the total receive bandwidth for the whole instance. Unit: bytes per second.
|
||
Leave blank for no limit.
|
||
instance_recv_bps_limit_placeholder: Leave blank for no limit
|
||
|
||
mapped_listeners: Map Listeners
|
||
mapped_listeners_help: |
|
||
Manually specify the public address of the listener, other nodes can use this address to connect to this node.
|
||
e.g.: tcp://123.123.123.123:11223, can specify multiple.
|
||
|
||
status:
|
||
version: Version
|
||
local: Local
|
||
server: Server
|
||
relay: Relay
|
||
|
||
run_network: Run Network
|
||
stop_network: Stop Network
|
||
network_running: running
|
||
network_stopped: stopped
|
||
dhcp_experimental_warning: Experimental warning! if there is an IP conflict in the network when using DHCP, the IP will be automatically changed.
|
||
|
||
tray:
|
||
show: Show / Hide
|
||
exit: Exit
|
||
|
||
about:
|
||
title: About
|
||
version: Version
|
||
author: Author
|
||
homepage: Homepage
|
||
license: License
|
||
description: 'EasyTier is a simple, safe and decentralized VPN networking solution implemented with the Rust language and Tokio framework.'
|
||
check_update: Check Update
|
||
|
||
event:
|
||
Unknown: Unknown
|
||
TunDeviceReady: TunDeviceReady
|
||
TunDeviceError: TunDeviceError
|
||
PeerAdded: PeerAdded
|
||
PeerRemoved: PeerRemoved
|
||
PeerConnAdded: PeerConnAdded
|
||
PeerConnRemoved: PeerConnRemoved
|
||
ListenerAdded: ListenerAdded
|
||
ListenerAddFailed: ListenerAddFailed
|
||
ListenerAcceptFailed: ListenerAcceptFailed
|
||
ConnectionAccepted: ConnectionAccepted
|
||
ConnectionError: ConnectionError
|
||
Connecting: Connecting
|
||
ConnectError: ConnectError
|
||
VpnPortalStarted: VpnPortalStarted
|
||
VpnPortalClientConnected: VpnPortalClientConnected
|
||
VpnPortalClientDisconnected: VpnPortalClientDisconnected
|
||
DhcpIpv6Changed: DHCP IPv6 address changed
|
||
DhcpIpv6Conflicted: DHCP IPv6 address conflict
|
||
DhcpIpv4Changed: DhcpIpv4Changed
|
||
DhcpIpv4Conflicted: DhcpIpv4Conflicted
|
||
PortForwardAdded: PortForwardAdded
|
||
ProxyCidrsUpdated: ProxyCidrsUpdated
|
||
UdpBroadcastRelayStartResult: UDP Broadcast Relay Start Result
|
||
|
||
web:
|
||
console:
|
||
theme_mode: Theme (light / dark / system)
|
||
location: "Location"
|
||
console: "Management console"
|
||
workspace: "Workspace"
|
||
navigation: "Navigation"
|
||
documentation: "Documentation"
|
||
language: "Switch language"
|
||
account: "Account"
|
||
skip_content: "Skip to content"
|
||
devices_description: "Inspect connected devices and manage their network instances."
|
||
device_count: "Devices"
|
||
online_device_count: "Online"
|
||
network_count: "Managed networks"
|
||
instance_count: "Running instances"
|
||
device_note: "Total registered devices"
|
||
online_device_note: "Devices currently online"
|
||
delete_device: "Delete Device"
|
||
set_alias: "Set Alias"
|
||
alias_dialog_title: "Set Device Alias"
|
||
alias_hint: "The alias is shown in place of the hostname across the console. Leave empty to clear."
|
||
delete_device_confirm: "Delete device {device}? It will be removed from its networks and its managed configs withdrawn."
|
||
block_device: "Also block this device"
|
||
block_device_hint: "A blocked device cannot re-register; unblock it from the bell menu."
|
||
no_block_device_hint: "Without blocking, the device re-registers itself automatically on its next connection."
|
||
enroll_title: "Device Enrollment"
|
||
enroll_hint: "Run this command on a device to enroll it with this console:"
|
||
enroll_copy: "Copy enrollment command"
|
||
enroll_token_note: "The path at the end is the enrollment token (your username). Enrolled devices show up in the device list."
|
||
enroll_webhook_note: "This console issues enrollment tokens through an external auth system; replace the username at the end with the token it assigned."
|
||
blocked_devices: "Blocked Devices"
|
||
blocked_empty: "No blocked devices."
|
||
blocked_attempted: "{time} connection attempt blocked ({count} total)"
|
||
blocked_no_attempt: "Blocked, no connection attempts so far."
|
||
unblock: "Unblock"
|
||
network_note: "Centrally managed networks"
|
||
instance_note: "Across connected devices"
|
||
view_all: "View all"
|
||
refresh: "Refresh"
|
||
retry: "Retry"
|
||
load_failed: "Unable to refresh data. Any displayed data is from the last successful refresh."
|
||
devices_empty: "No devices yet"
|
||
devices_empty_hint: "Connect an EasyTier client to this controller to start managing it here."
|
||
networks_empty: "No managed networks yet"
|
||
networks_empty_hint: "Create a network, then add devices to connect them."
|
||
search_devices: "Search name or address"
|
||
search_networks: "Search networks"
|
||
no_results: "No matching results"
|
||
clear_search: "Clear search"
|
||
manage: "Manage"
|
||
details: "Details"
|
||
more_details: "More details"
|
||
items: "{count} items"
|
||
automatic_refresh: "Updates automatically every 2 seconds"
|
||
online_members: "Online / total members"
|
||
back_networks: "Back to networks"
|
||
all_details: "Expand all details"
|
||
ascending: "Ascending"
|
||
descending: "Descending"
|
||
device_missing: "This device is no longer in the device list."
|
||
loading: "Loading"
|
||
instances: "instances"
|
||
view_table: "Table view"
|
||
view_card: "Card view"
|
||
login:
|
||
title: Login
|
||
username: Username
|
||
password: Password
|
||
submit: Login
|
||
register: Register
|
||
remember_me: Remember Me
|
||
captcha: Captcha
|
||
back_to_login: Back to Login
|
||
login: Login
|
||
sso_login: "SSO Login"
|
||
|
||
register:
|
||
title: Register
|
||
username: Username
|
||
password: Password
|
||
confirm_password: Confirm Password
|
||
submit: Register
|
||
login: Back to Login
|
||
|
||
main:
|
||
dashboard: Dashboard
|
||
device_list: Device List
|
||
device_management: Device Management
|
||
login_page: Login Page
|
||
settings: Settings
|
||
logout: Logout
|
||
language: Language
|
||
change_password: Change Password
|
||
network_list: Networks
|
||
|
||
device:
|
||
list: Device List
|
||
management: Device Management
|
||
add: Add Device
|
||
delete: Delete Device
|
||
refresh: Refresh
|
||
status: Status
|
||
online: Online
|
||
offline: Offline
|
||
last_seen: Last Seen
|
||
no_devices: No Devices Found
|
||
hostname: Hostname
|
||
public_ip: Public IP
|
||
networks: Network Count
|
||
last_report: Last Seen
|
||
version: Version
|
||
machine_id: Machine ID
|
||
unknown_location: Unknown Location
|
||
central_networks: Joined Networks
|
||
|
||
device_management:
|
||
edit_network: Edit Network
|
||
export_config: Export Config
|
||
delete_network: Delete Network
|
||
network: Network
|
||
select_network: Select Network
|
||
create_network: Create Network
|
||
cancel_edit: Cancel Edit
|
||
more_actions: More Actions
|
||
edit_as_file: Edit as File
|
||
save_config: Save Config
|
||
config_saved: Config Saved
|
||
import_config: Import Config
|
||
create_new: Create New Network
|
||
network_status: Network Status
|
||
loading_network_status: Loading Network Status
|
||
network_info_unavailable: Network status is unavailable
|
||
network_configuration: Network Configuration
|
||
loading_network_configuration: Loading Network Configuration
|
||
no_network_selected: No Network Selected
|
||
select_existing_network_or_create_new: Select an existing network instance or create a new one to manage network settings
|
||
disable_network: Disable Network
|
||
|
||
network:
|
||
title: Network
|
||
create: Create Network
|
||
delete: Delete Network
|
||
start: Start Network
|
||
stop: Stop Network
|
||
config: Network Config
|
||
status: Network Status
|
||
import: Import Config
|
||
export: Export Config
|
||
|
||
network_list:
|
||
title: Networks
|
||
create: Create Network
|
||
empty: No networks yet. Click "Create Network" to manage devices centrally
|
||
members: Member Devices
|
||
display_name: Display Name
|
||
virtual_cidr: Virtual Subnet
|
||
secure_mode: Secure Mode
|
||
secure_mode_hint: Noise encrypted handshakes with identity verification; enables temporary credentials. Member instances restart on change
|
||
virtual_cidr_hint: Defaults to /24 when the subnet mask is omitted. When set, members get static IPs assigned from this subnet in join order (.1, .2, ...); leave empty for node-negotiated DHCP
|
||
virtual_cidr_placeholder: e.g. 10.200.0.0 (defaults to /24), empty for auto
|
||
peer_urls_placeholder: One peer URL per line, e.g. tcp://10.0.0.1:11010
|
||
create_hint: The network secret is generated automatically and can be viewed or reset in the network detail page
|
||
gateway_mode: Gateway
|
||
gateway_hint: Members are meshed automatically through this console's built-in gateway (discovery and hole-punch assistance, no data relay by default)
|
||
advanced_mode: "Advanced: specify initial nodes manually"
|
||
use_gateway: "Back: use the console gateway"
|
||
|
||
network_detail:
|
||
tab_members: Members
|
||
mesh_name: Mesh name (auto-generated, used when joining devices)
|
||
tab_settings: Settings
|
||
tab_status: Status
|
||
members_hint: Member configs are delivered centrally by this console; changes apply when offline devices reconnect
|
||
add_member: Add Devices
|
||
add_temporary_member: Add as temporary node
|
||
add_temporary_hint: Temporary nodes join with a dedicated credential and never receive the network secret; they disconnect when it expires or is revoked
|
||
add_temporary_needs_secure: Enable secure mode in the network settings before adding temporary nodes
|
||
expires_at: expires
|
||
locate_credential: Show credential
|
||
no_candidate_devices: No devices available to add
|
||
remove_member: Remove Device
|
||
remove_member_confirm: Remove device {device} from this network? Its managed config will be withdrawn
|
||
edit_member: Edit Member
|
||
tab_basic_settings: Basic Settings
|
||
hostname_override: Hostname Override
|
||
hostname_override_placeholder: Leave empty to use the device-reported hostname
|
||
static_ip: Static Virtual IP
|
||
static_ip_hint: Leave empty for DHCP; a fixed IP (/24) is assigned when set
|
||
settings: Network Settings
|
||
regenerate_secret: Regenerate network secret
|
||
danger_zone: Danger Zone
|
||
delete: Delete Network
|
||
delete_confirm: Delete network {name}? Managed configs of all members will be withdrawn
|
||
delete_hint: Deleting a network removes all members and withdraws their managed configs
|
||
gateway_followed: The initial-node list keeps only the console gateway; member configs follow the gateway URL automatically
|
||
advanced_config: Advanced Config
|
||
has_override: This member has an advanced override
|
||
identity_ignored: Network name and secret are owned by the network settings; those edits are ignored
|
||
reset_default: Reset to Default
|
||
config_reset: Member reset to default compilation
|
||
proxy_cidr_hint: Real subnets this member routes into the mesh; click a detected subnet below to add it
|
||
proxy_add_suggestion: Add {cidr}
|
||
proxy_remove_suggestion: Remove {cidr}
|
||
proxy_no_suggestions: No shareable local subnet detected; enter one manually
|
||
proxy_cidr_placeholder: e.g. 192.168.1.1 or 10.0.0.0/16, Enter to add
|
||
proxy_cidr_invalid: Unrecognized address; enter an IPv4 address or CIDR like 192.168.1.0/24
|
||
tab_credentials: Credentials
|
||
credentials_hint: Credentials grant temporary devices short-lived access to this network; they expire automatically
|
||
generate_credential: Generate Credential
|
||
credential_id: Credential ID
|
||
credential_secret: Credential Secret
|
||
credential_show_secret: Show secret
|
||
credential_hide_secret: Hide secret
|
||
credential_copy_secret: Copy secret
|
||
credential_show_command: Show join command
|
||
credential_copy_command: Copy join command
|
||
credential_join_cli: Command line
|
||
credential_join_toml: Config file
|
||
copy_failed: Copy failed; select the text and copy manually
|
||
credential_online_devices: Online Devices
|
||
credential_expiry: Expires
|
||
credential_status: Status
|
||
credential_active: Active
|
||
credential_expired: Expired
|
||
credential_reusable: Reusable
|
||
revoke_credential: Revoke
|
||
revoke_credential_confirm: Revoke credential {id}? Devices using it will be disconnected
|
||
credential_ttl: Validity
|
||
ttl_1h: 1 hour
|
||
ttl_24h: 1 day
|
||
ttl_7d: 7 days
|
||
ttl_30d: 30 days
|
||
credential_reusable_hint: "Unchecked means only one device may use the credential at a time"
|
||
credential_secret_hint: "Credential secret (saved and always visible in the credential list):"
|
||
join_command: Temporary device join command
|
||
temporary_devices: Temporary Devices
|
||
temporary_devices_hint: Devices online via credentials; revoke the credential to disconnect them
|
||
temporary_device: Temporary device
|
||
temporary_tag: Temporary
|
||
temporary_credential: Credential
|
||
temporary_credential_unknown: unknown credential (possibly revoked)
|
||
member_error: Error
|
||
tab_general: General
|
||
node_overview: Overview
|
||
node_actions: Settings & actions
|
||
node_peers: Peers
|
||
node_no_peers: No other nodes yet
|
||
node_no_peers_hint: Other nodes in this network will appear here when they connect.
|
||
peer_ipv4: Virtual IP
|
||
log_level: Log Level
|
||
log_level_hint: Applies to the whole device process (all instances)
|
||
log_disabled: Disabled
|
||
log_error: Error
|
||
log_warning: Warning
|
||
log_info: Info
|
||
log_debug: Debug
|
||
log_trace: Trace
|
||
export_config: Export Config
|
||
export_config_hint: The node's effective TOML config (as easytier-cli node config)
|
||
download: Download
|
||
node_detail: Node Detail
|
||
node_detail_offline: Node detail requires the device to be online
|
||
node_routes: Routes
|
||
node_conns: Connections
|
||
route_cost: Path
|
||
path_latency: Latency
|
||
conn_type: Type
|
||
conn_remote: Remote
|
||
loss_rate: Loss
|
||
traffic: Traffic
|
||
acl_stats: ACL Stats
|
||
acl_rule: Rule
|
||
acl_packets: Packets
|
||
acl_bytes: Bytes
|
||
instance_state: Instance State
|
||
running: Running
|
||
stopped: Stopped
|
||
|
||
acl:
|
||
trust_hint: Permanent members are trusted administrators. ACL rules manage their traffic but do not prevent a device administrator from changing its identity or policy. Use temporary credentials for untrusted devices.
|
||
tab: Access Control
|
||
default_action: When no rule matches
|
||
default_allow: Allow by default
|
||
default_deny: Deny by default
|
||
default_allow_hint: Traffic that matches no rule is allowed
|
||
default_deny_hint: Traffic that matches no rule is dropped
|
||
rule_summary: "{total} rules · {enabled} enabled"
|
||
unsaved: Unsaved changes
|
||
saved: Access policy saved
|
||
save_failed: Save failed
|
||
save: Save Policy
|
||
add_rule: Add Rule
|
||
edit_rule: Edit Rule
|
||
save_rule: Save Rule
|
||
rule_name: Rule Name
|
||
name_placeholder: "For example: allow finance devices to reach MySQL"
|
||
action: Action
|
||
allow: Allow
|
||
deny: Deny
|
||
enabled: Enabled
|
||
disabled: Disabled
|
||
source: Source
|
||
target: Target
|
||
all_members: All members
|
||
subnet: Subnet
|
||
source_placeholder: Search and choose the members that initiate access
|
||
target_placeholder: Search and choose target members or subnets
|
||
target_hint: Pick members or subnets proxied by members
|
||
protocols: Protocols
|
||
stateful: Stateful tracking
|
||
stateful_hint: Track established TCP connections; applies to allow rules
|
||
port_single: Single
|
||
port_range: Range
|
||
port_start: Start port
|
||
port_end: End port
|
||
port_to: to
|
||
add_port: Add Port
|
||
add_range: Add Range
|
||
all_ports: All Ports
|
||
quick_add: Quick add
|
||
icmp_note: ICMP needs no ports
|
||
swap: Swap with target
|
||
drag_hint: Drag to reorder
|
||
empty_title: No access rules yet
|
||
empty_allow: The network keeps default-allow behavior; unmatched traffic is unrestricted
|
||
empty_deny: The network denies unmatched traffic by default
|
||
error_name: Rule name is required
|
||
error_source: Pick at least one source
|
||
error_target: Pick at least one target or add a custom CIDR
|
||
error_protocol: Pick at least one protocol
|
||
error_ports: "{protocol} rules need at least one port (or use All Ports)"
|
||
common:
|
||
confirm: Confirm
|
||
cancel: Cancel
|
||
save: Save
|
||
delete: Delete
|
||
edit: Edit
|
||
refresh: Refresh
|
||
add: Add
|
||
loading: Loading...
|
||
error: Error
|
||
success: Success
|
||
warning: Warning
|
||
info: Info
|
||
enable: Enable
|
||
disable: Disable
|
||
address: Address
|
||
|
||
settings:
|
||
title: Settings
|
||
change_password: Change Password
|
||
old_password: Old Password
|
||
new_password: New Password
|
||
confirm_password: Confirm New Password
|
||
language: Language
|
||
theme: Theme
|
||
logout: Logout
|
||
|
||
mode:
|
||
title: Mode
|
||
switch_mode: Switch Mode
|
||
config_dir: Config Dir
|
||
rpc_portal: RPC Portal
|
||
enable_rpc_tcp_listen: Enable RPC port listening (TCP)
|
||
rpc_listen_port: RPC Listen Port
|
||
log_level: Log Level
|
||
log_dir: Log Dir
|
||
remote_rpc_address: Remote RPC Address
|
||
normal: Normal
|
||
service: Service
|
||
remote: Remote
|
||
normal_description: Run EasyTier directly, suitable for local use.
|
||
service_description: Run as a system service, supporting auto-startup and background operation. The service continues to run in the background after exiting the GUI.
|
||
remote_description: Connect to a remote RPC service to manage and control remote nodes.
|
||
service_status: Service Status
|
||
service_status_running: Running
|
||
service_status_stopped: Stopped
|
||
service_status_notinstalled: Not Installed
|
||
uninstall_service: Uninstall Service
|
||
stop_service: Stop Service
|
||
uninstall_service_confirm: Are you sure you want to uninstall the service?
|
||
uninstall_service_success: Service uninstalled successfully, switched back to normal mode
|
||
stop_service_success: Service stopped successfully
|
||
remote_rpc_address_empty: Remote RPC Address cannot be empty
|
||
service_config_empty: Service Config cannot be empty
|
||
rpc_connection_failed: "RPC connection failed: {error}"
|
||
autostart: Start on Boot
|
||
autostart_hint: Auto-start on boot is provided by service mode. After switching to Service mode and saving, EasyTier will be registered as a system service that starts automatically at boot and keeps running in the background.
|
||
|
||
config-server:
|
||
title: Config Server
|
||
address: Config Server Address
|
||
address_placeholder: "e.g.: udp://127.0.0.1:22020/admin or admin"
|
||
description: |
|
||
Config server address, allowed formats:
|
||
Full URL: udp://127.0.0.1:22020/admin
|
||
Username only: admin (uses official server)
|
||
Leave blank: Don't connect to a config server
|
||
connection_status: Connection Status
|
||
connected: ": Connected"
|
||
disconnected: ": Disconnected"
|
||
connecting: ": Connecting..."
|
||
unknown: ""
|
||
update_service_confirm: The service will be restarted to apply changes, do you want to continue?
|
||
|
||
client:
|
||
not_running: Unable to connect to remote client.
|
||
retry: Retry
|
||
|
||
acl:
|
||
title: Access Control (ACL)
|
||
help: Access control list to restrict communication between nodes.
|
||
enabled: Enable ACL
|
||
default_action: Default Action
|
||
chains: Rule Chains
|
||
inbound: Inbound
|
||
outbound: Outbound
|
||
forward: Forward
|
||
rules: Rules
|
||
add_rule: Add Rule
|
||
edit_rule: Edit Rule
|
||
rule:
|
||
name: Rule Name
|
||
description: Description
|
||
enabled: Enabled
|
||
protocol: Protocol
|
||
action: Action
|
||
src_ips: Source IPs
|
||
dst_ips: Destination IPs
|
||
src_ports: Source Ports
|
||
dst_ports: Destination Ports
|
||
rate_limit: Rate Limit (pps)
|
||
burst_limit: Burst Limit
|
||
stateful: Stateful
|
||
src_groups: Source Groups
|
||
dst_groups: Destination Groups
|
||
groups: Groups
|
||
group:
|
||
declares: Declared Groups
|
||
members: Node Memberships
|
||
name: Group Name
|
||
secret: Group Secret
|
||
help: Define group identities in the network to use them in rules.
|
||
any: Any
|
||
allow: Allow
|
||
drop: Drop
|
||
delete_chain_confirm: Are you sure you want to delete this rule chain and all its rules?
|
||
chain:
|
||
name: Name
|
||
type: Type
|
||
match: Match
|
||
|
||
disable_relay_data: Disable Data Relay
|
||
disable_relay_data_help: Do not relay data packets for other peers, so this node carries no traffic it did not originate.
|
||
prefer_peer_relay: Prefer Peer Relay
|
||
prefer_peer_relay_help: Prefer a credential peer that already relays to a destination over advertising another direct edge to the same destination.
|