Files
community-plugins/ruh-vpn/translations/en.json
T
0733efd186 Add umedbazarov/ruh-vpn: VPN/proxy manager for sing-box (#304)
* Add umedbazarov/ruh-vpn: VPN/proxy manager for sing-box

New community plugin: bar widget, panel, service and control-center
shortcut for managing SSH, VLESS, VMess, Shadowsocks and SOCKS5
connections through sing-box, with routing presets, custom rules,
system-proxy/TUN modes and a kill switch. The bundled Python backend
serves a loopback control API protected by a per-launch bearer token.

* Address review: sanitize kill-switch ruleset, scope TUN capability, fix mux error path, disclose DNS

- kill switch: only pre-resolved, canonicalized literal IPs enter the nft
  ruleset; domains are resolved first and anything unparseable is dropped,
  so subscription-supplied addresses can no longer inject nft syntax
- TUN: CAP_NET_ADMIN is granted to a plugin-private copy of sing-box in a
  0700 directory instead of the shared system binary; the copy is refreshed
  (clearing the cap) when the system binary changes, and the legacy grant
  on the shared binary is removed in the same polkit prompt
- fix NameError in the mux startup failure path (undefined mux_name) that
  hid the log tail and skipped teardown
- README: disclose plain-UDP DNS endpoints (8.8.8.8 via tunnel, 223.5.5.5
  direct in rules mode) alongside the TUN DoH endpoint

---------

Co-authored-by: Umedjon Bazarov <170195993+UmedjonBA@users.noreply.github.com>
2026-08-09 21:03:02 -04:00

107 lines
2.7 KiB
JSON

{
"title": "VPN",
"action": {
"start": "Start",
"stop": "Stop",
"add": "Add",
"save": "Save",
"delete": "Delete",
"run-test": "Run test",
"reset": "Reset",
"confirm": "Confirm"
},
"panel": {
"routing": "Routing",
"via": "Via",
"servers": "Servers",
"no-servers": "No servers configured",
"starting": "Starting backend…",
"connected": "Connected",
"disconnected": "Disconnected",
"fallback-server-name": "Server"
},
"editor": {
"new": "New server",
"edit": "Edit server",
"protocol": "Protocol",
"name": "Name",
"host": "Host",
"port": "Port",
"user": "User",
"password": "Password",
"keyfile": "Key file",
"address": "Address",
"uuid": "UUID",
"transport": "Transport",
"security": "Security",
"sni": "SNI",
"flow": "Flow",
"pbk": "Public key (pbk)",
"sid": "Short ID (sid)",
"fp": "Fingerprint",
"path": "Path",
"wshost": "WS/HTTP Host",
"alterid": "alterId",
"method": "Method",
"country": "Country code (for the flag)",
"keep": "leave empty to keep current"
},
"rules": {
"title": "Routing & rules",
"killswitch": "Kill switch",
"killswitch-desc": "Block all traffic when the proxy is down",
"presets": "Country presets",
"custom": "Custom rules",
"none": "No custom rules",
"dns-check": "Check DNS",
"dns-hint": "DNS leak not checked yet",
"dns-leak": "DNS leak",
"dns-ok": "No DNS leak",
"reset-servers": "Reset all servers",
"reset-servers-desc": "Remove every server. Rules and settings stay."
},
"subs": {
"title": "Subscriptions",
"name": "Name (optional)",
"none": "No subscriptions"
},
"logs": {
"title": "Logs",
"empty": "No logs yet"
},
"shortcut": {
"on": "VPN On",
"off": "VPN Off"
},
"notice": {
"tun": "TUN mode may prompt for administrator rights"
},
"error": {
"no-server": "No server selected",
"clipboard": "Clipboard is empty"
},
"settings": {
"backend_python": {
"label": "Backend Python",
"description": "Python 3 executable with the backend dependencies installed"
},
"control_port": {
"label": "Control port",
"description": "Localhost port for the backend HTTP control API"
},
"show_ping": {
"label": "Show ping in bar"
},
"show_traffic": {
"label": "Show traffic in bar"
},
"auto_start": {
"label": "Auto-connect on start",
"description": "Connect the active server automatically when the plugin loads"
},
"geoip_country": {
"label": "Detect server country",
"description": "Look up each server's country by IP to show its flag. Sends the server address to api.country.is."
}
}
}