From ac2638ccf990b0a984162bc1f24f7b316224af7c Mon Sep 17 00:00:00 2001 From: Roc Lai Date: Thu, 14 Aug 2025 15:31:59 +0800 Subject: [PATCH] luci-app-frp: support QUIC protocol and Dashboard TLS MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Add support for the QUIC protocol and Dashboard TLS in LuCI, new features in the latest version of frp.​ openwrt/packages#27191 Signed-off-by: Roc Lai --- .../htdocs/luci-static/resources/view/frpc.js | 6 +- applications/luci-app-frpc/po/zh_Hans/frpc.po | 14 ++--- applications/luci-app-frpc/po/zh_Hant/frpc.po | 16 ++--- .../htdocs/luci-static/resources/view/frps.js | 6 +- applications/luci-app-frps/po/zh_Hans/frps.po | 58 +++++++++++++++++-- applications/luci-app-frps/po/zh_Hant/frps.po | 58 +++++++++++++++++-- 6 files changed, 131 insertions(+), 27 deletions(-) diff --git a/applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js b/applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js index 76928e9e41..ab6e061e10 100644 --- a/applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js +++ b/applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js @@ -33,8 +33,8 @@ var commonConf = [ [form.Flag, 'tcp_mux', _('TCP mux'), _('TcpMux toggles TCP stream multiplexing. This allows multiple requests from a client to share a single TCP connection. If this value is true, the server must have TCP multiplexing enabled as well.
By default, this value is true.'), {datatype: 'bool', default: 'true'}], [form.Value, 'user', _('User'), _('User specifies a prefix for proxy names to distinguish them from other clients. If this value is not "", proxy names will automatically be changed to "{user}.{proxy_name}".
By default, this value is "".')], [form.Flag, 'login_fail_exit', _('Exit when login fail'), _('LoginFailExit controls whether or not the client should exit after a failed login attempt. If false, the client will retry until a login attempt succeeds.
By default, this value is true.'), {datatype: 'bool', default: 'true'}], - [form.ListValue, 'protocol', _('Protocol'), _('Protocol specifies the protocol to use when interacting with the server. Valid values are "tcp", "kcp", and "websocket".
By default, this value is "tcp".'), {values: ['tcp', 'kcp', 'websocket']}], - [form.Flag, 'tls_enable', _('TLS'), _('TLSEnable specifies whether or not TLS should be used when communicating with the server.'), {datatype: 'bool'}], + [form.ListValue, 'protocol', _('Protocol'), _('Protocol specifies the protocol to use when interacting with the server. Valid values are "tcp", "kcp", "quic" and "websocket".
By default, this value is "tcp".'), {values: ['tcp', 'kcp', 'quic', 'websocket']}], + [form.Flag, 'tls_enable', _('TLS'), _('TLS Enable specifies whether or not TLS should be used when communicating with the server.'), {datatype: 'bool'}], [form.Value, 'heartbeat_interval', _('Heartbeat interval'), _('HeartBeatInterval specifies at what interval heartbeats are sent to the server, in seconds. It is not recommended to change this value.
By default, this value is 30.'), {datatype: 'uinteger'}], [form.Value, 'heartbeat_timeout', _('Heartbeat timeout'), _('HeartBeatTimeout specifies the maximum allowed heartbeat response delay before the connection is terminated, in seconds. It is not recommended to change this value.
By default, this value is 90.'), {datatype: 'uinteger'}], [form.DynamicList, '_', _('Additional settings'), _('This list can be used to specify some additional parameters which have not been included in this LuCI.'), {placeholder: 'Key-A=Value-A'}] @@ -42,7 +42,7 @@ var commonConf = [ var baseProxyConf = [ [form.Value, 'name', _('Proxy name'), undefined, {rmempty: false, optional: false}], - [form.ListValue, 'type', _('Proxy type'), _('ProxyType specifies the type of this proxy. Valid values include "tcp", "udp", "http", "https", "stcp", and "xtcp".
By default, this value is "tcp".'), {values: ['tcp', 'udp', 'http', 'https', 'stcp', 'xtcp']}], + [form.ListValue, 'type', _('Proxy type'), _('ProxyType specifies the type of this proxy. Valid values include "tcp", "udp", "http", "https", "stcp" and "xtcp".
By default, this value is "tcp".'), {values: ['tcp', 'udp', 'http', 'https', 'stcp', 'xtcp']}], [form.Flag, 'use_encryption', _('Encryption'), _('UseEncryption controls whether or not communication with the server will be encrypted. Encryption is done using the tokens supplied in the server and client configuration.
By default, this value is false.'), {datatype: 'bool'}], [form.Flag, 'use_compression', _('Compression'), _('UseCompression controls whether or not communication with the server will be compressed.
By default, this value is false.'), {datatype: 'bool'}], [form.Value, 'local_ip', _('Local IP'), _('LocalIp specifies the IP address or host name to proxy to.'), {datatype: 'host'}], diff --git a/applications/luci-app-frpc/po/zh_Hans/frpc.po b/applications/luci-app-frpc/po/zh_Hans/frpc.po index 030a0e7fc5..5a0e638c6d 100644 --- a/applications/luci-app-frpc/po/zh_Hans/frpc.po +++ b/applications/luci-app-frpc/po/zh_Hans/frpc.po @@ -296,10 +296,10 @@ msgstr "协议" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:36 msgid "" "Protocol specifies the protocol to use when interacting with the server. " -"Valid values are \"tcp\", \"kcp\", and \"websocket\".
By default, this " -"value is \"tcp\"." +"Valid values are \"tcp\", \"kcp\", \"quic\" and \"websocket\".
By " +"default, this value is \"tcp\"." msgstr "" -"Protocol 指定在与服务器交互时要使用的协议。有效值为\"tcp\"、\"kcp\"和" +"Protocol 指定在与服务器交互时要使用的协议。有效值为\"tcp\"、\"kcp\"、\"quic\"和" "\"websocket\"。
默认情况下,此值为\"tcp\"。" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:210 @@ -319,8 +319,8 @@ msgstr "代理类型" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:45 msgid "" "ProxyType specifies the type of this proxy. Valid values include \"tcp\", " -"\"udp\", \"http\", \"https\", \"stcp\", and \"xtcp\".
By default, this " -"value is \"tcp\"." +"\"udp\", \"http\", \"https\", \"stcp\" and \"xtcp\".
By " +"default, this value is \"tcp\"." msgstr "" "ProxyType 指定此代理的类型。有效值包括\"tcp\"、\"udp\"、\"http\"、\"https\"、" "\"stcp\"和\"xtcp\"。
默认情况下,此值为\"tcp\"。" @@ -407,9 +407,9 @@ msgstr "TLS" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:37 msgid "" -"TLSEnable specifies whether or not TLS should be used when communicating " +"TLS Enable specifies whether or not TLS should be used when communicating " "with the server." -msgstr "TLSEnable 指定在与服务器通信时是否应使用 TLS。" +msgstr "TLS Enable 指定在与服务器通信时是否应使用 TLS。" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:33 msgid "" diff --git a/applications/luci-app-frpc/po/zh_Hant/frpc.po b/applications/luci-app-frpc/po/zh_Hant/frpc.po index 12520fd784..4e6ae5e52d 100644 --- a/applications/luci-app-frpc/po/zh_Hant/frpc.po +++ b/applications/luci-app-frpc/po/zh_Hant/frpc.po @@ -295,11 +295,11 @@ msgstr "協定" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:36 msgid "" "Protocol specifies the protocol to use when interacting with the server. " -"Valid values are \"tcp\", \"kcp\", and \"websocket\".
By default, this " -"value is \"tcp\"." +"Valid values are \"tcp\", \"kcp\", \"quic\" and \"websocket\".
By " +"default, this value is \"tcp\"." msgstr "" -"Protocol指定與伺服器互動時要使用的協定。有效值為“ tcp”,“ kcp”和“ " -"websocket”。
預設情況下,此值為“ tcp”。" +"Protocol指定與伺服器互動時要使用的協定。有效值為“ tcp”,“ kcp”,“ quic”和" +"“ websocket”。
預設情況下,此值為“ tcp”。" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:210 msgid "Proxy Settings" @@ -318,8 +318,8 @@ msgstr "代理類別" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:45 msgid "" "ProxyType specifies the type of this proxy. Valid values include \"tcp\", " -"\"udp\", \"http\", \"https\", \"stcp\", and \"xtcp\".
By default, this " -"value is \"tcp\"." +"\"udp\", \"http\", \"https\", \"stcp\" and \"xtcp\".
By " +"default, this value is \"tcp\"." msgstr "" "ProxyType指定此代理的類型。有效值包括“ tcp”,“ udp”,“ http”,“ https”,“ " "stcp”和“ xtcp”。
預設情況下,此值為“ tcp”。" @@ -404,9 +404,9 @@ msgstr "TLS" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:37 msgid "" -"TLSEnable specifies whether or not TLS should be used when communicating " +"TLS Enable specifies whether or not TLS should be used when communicating " "with the server." -msgstr "TLSEnable指定與伺服器通訊時是否應使用TLS。" +msgstr "TLS Enable指定與伺服器通訊時是否應使用TLS。" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:33 msgid "" diff --git a/applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js b/applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js index 1fce4d8f14..9367b04550 100644 --- a/applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js +++ b/applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js @@ -18,8 +18,9 @@ var startupConf = [ var commonConf = [ [form.Value, 'bind_addr', _('Bind address'), _('BindAddr specifies the address that the server binds to.
By default, this value is "0.0.0.0".'), {datatype: 'ipaddr'}], [form.Value, 'bind_port', _('Bind port'), _('BindPort specifies the port that the server listens on.
By default, this value is 7000.'), {datatype: 'port'}], - [form.Value, 'bind_udp_port', _('UDP bind port'), _('BindUdpPort specifies the UDP port that the server listens on. If this value is 0, the server will not listen for UDP connections.
By default, this value is 0'), {datatype: 'port'}], + [form.Value, 'bind_udp_port', _('UDP bind port'), _('BindUdpPort specifies the UDP port that the server listens on. If this value is 0, the server will not listen for UDP connections.
By default, this value is 0.'), {datatype: 'port'}], [form.Value, 'kcp_bind_port', _('KCP bind port'), _('BindKcpPort specifies the KCP port that the server listens on. If this value is 0, the server will not listen for KCP connections.
By default, this value is 0.'), {datatype: 'port'}], + [form.Value, 'quic_bind_port', _('QUIC bind port'), _('BindQuicPort specifies the QUIC port that the server listens on. If this value is 0, the server will not listen for QUIC connections.
By default, this value is 0.'), {datatype: 'port'}], [form.Value, 'proxy_bind_addr', _('Proxy bind address'), _('ProxyBindAddr specifies the address that the proxy binds to. This value may be the same as BindAddr.
By default, this value is "0.0.0.0".'), {datatype: 'ipaddr'}], [form.Value, 'vhost_http_port', _('Vhost HTTP port'), _('VhostHttpPort specifies the port that the server listens for HTTP Vhost requests. If this value is 0, the server will not listen for HTTP requests.
By default, this value is 0.'), {datatype: 'port'}], [form.Value, 'vhost_https_port', _('Vhost HTTPS port'), _('VhostHttpsPort specifies the port that the server listens for HTTPS Vhost requests. If this value is 0, the server will not listen for HTTPS requests.
By default, this value is 0.'), {datatype: 'port'}], @@ -28,6 +29,9 @@ var commonConf = [ [form.Value, 'dashboard_port', _('Dashboard port'), _('DashboardPort specifies the port that the dashboard listens on. If this value is 0, the dashboard will not be started.
By default, this value is 0.'), {datatype: 'port'}], [form.Value, 'dashboard_user', _('Dashboard user'), _('DashboardUser specifies the username that the dashboard will use for login.
By default, this value is "admin".')], [form.Value, 'dashboard_pwd', _('Dashboard password'), _('DashboardPwd specifies the password that the dashboard will use for login.
By default, this value is "admin".'), {password: true}], + [form.Flag, 'dashboard_tls_mode', _('Dashboard TLS mode'), _('Enable or disable TLS encryption for the dashboard. When enabled, HTTPS is used for secure communication.'), {datatype: 'bool'}], + [form.Value, 'dashboard_tls_cert_file', _('Dashboard TLS certificate'), _('Dashboard TLS Cert File specifies the path to the TLS certificate file for enabling HTTPS access.
Required if HTTPS is enabled.'), {datatype: 'filepath'}], + [form.Value, 'dashboard_tls_key_file', _('Dashboard TLS private key'), _('Dashboard TLS Key File specifies the path to the TLS private key file for enabling HTTPS access.
Required if HTTPS is enabled.'), {datatype: 'filepath'}], [form.Value, 'assets_dir', _('Assets dir'), _('AssetsDir specifies the local directory that the dashboard will load resources from. If this value is "", assets will be loaded from the bundled executable using statik.
By default, this value is "".')], [form.Value, 'log_file', _('Log file'), _('LogFile specifies a file where logs will be written to. This value will only be used if LogWay is set appropriately.
By default, this value is "console".')], [form.ListValue, 'log_level', _('Log level'), _('LogLevel specifies the minimum log level. Valid values are "trace", "debug", "info", "warn", and "error".
By default, this value is "info".'), {values: ['trace', 'debug', 'info', 'warn', 'error']}], diff --git a/applications/luci-app-frps/po/zh_Hans/frps.po b/applications/luci-app-frps/po/zh_Hans/frps.po index 9c493cf4b5..a1e23ca973 100644 --- a/applications/luci-app-frps/po/zh_Hans/frps.po +++ b/applications/luci-app-frps/po/zh_Hans/frps.po @@ -67,6 +67,15 @@ msgstr "" "BindKcpPort 指定服务器侦听的 KCP 端口。如果此值为 0,则服务器将不会侦听 KCP " "连接。
默认值为 0。" +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:23 +msgid "" +"BindQuicPort specifies the QUIC port that the server listens on. If this value " +"is 0, the server will not listen for QUIC connections.
By default, this " +"value is 0." +msgstr "" +"BindQuicPort 指定服务器侦听的 QUIC 端口。如果此值为 0,则服务器将不会侦听 QUIC " +"连接。
默认值为 0。" + #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:20 msgid "" "BindPort specifies the port that the server listens on.
By default, " @@ -77,10 +86,10 @@ msgstr "BindPort 指定服务器侦听的端口。
默认值为 7000。" msgid "" "BindUdpPort specifies the UDP port that the server listens on. If this value " "is 0, the server will not listen for UDP connections.
By default, this " -"value is 0" +"value is 0." msgstr "" "BindUdpPort 指定服务器侦听的 UDP 端口。如果此值为 0,则服务器将不会侦听 UDP " -"连接。
默认值为 0" +"连接。
默认值为 0。" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:143 msgid "Collecting data ..." @@ -187,6 +196,10 @@ msgstr "心跳包超时" msgid "KCP bind port" msgstr "KCP 绑定端口" +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:23 +msgid "QUIC bind port" +msgstr "QUIC 绑定端口" + #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 msgid "Log file" msgstr "日志文件" @@ -345,7 +358,7 @@ msgstr "UDP 绑定端口" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:24 msgid "Vhost HTTP port" -msgstr "Vhost HTTP端口" +msgstr "Vhost HTTP 端口" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:26 msgid "Vhost HTTP timeout" @@ -379,7 +392,44 @@ msgid "" "
By default, this value is 0." msgstr "" "VhostHttpsPort指定服务器侦听HTTPS Vhost请求的端口。如果该值为0,服务器将不侦" -"听HTTPS请求。.
该值默认为 0。" +"听HTTPS请求。
该值默认为 0。" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 +msgid "Dashboard TLS mode" +msgstr "仪表板 TLS 模式" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:33 +msgid "Dashboard TLS certificate" +msgstr "​仪表板 TLS 证书​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:34 +msgid "Dashboard TLS private key" +msgstr "仪表板 TLS 私钥​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 +msgid "" +"Enable or disable TLS encryption for the dashboard. When enabled, HTTPS " +"is used for secure communication." +msgstr "" +"启用或禁用仪表板的 TLS 加密功能。启用后,仪表板将通过 HTTPS 协议进行安全通信。​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:33 +msgid "" +"Dashboard TLS Cert File specifies the path to the TLS certificate file for " +"enabling HTTPS access." +"
Required if HTTPS is enabled." +msgstr "" +"Dashboard TLS Cert File 用于指定启用 HTTPS 访问所需的 TLS 证书文件路径,若启" +"用 HTTPS 则必须配置此文件。" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:34 +msgid "" +"Dashboard TLS Key File specifies the path to the TLS private key file for " +"enabling HTTPS access." +"
Required if HTTPS is enabled." +msgstr "" +"Dashboard TLS Key File 用于指定启用 HTTPS 访问所需的 TLS 私钥文件路径,若启" +"用 HTTPS 则必须配置此文件。" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:116 #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:118 diff --git a/applications/luci-app-frps/po/zh_Hant/frps.po b/applications/luci-app-frps/po/zh_Hant/frps.po index 77cab8df91..0d63191a41 100644 --- a/applications/luci-app-frps/po/zh_Hant/frps.po +++ b/applications/luci-app-frps/po/zh_Hant/frps.po @@ -64,7 +64,16 @@ msgid "" "is 0, the server will not listen for KCP connections.
By default, this " "value is 0." msgstr "" -"indKcpPort指定伺服器監聽的KCP埠號. 如果此值為0, 則伺服器將不會監聽KCP連線。" +"BindKcpPort指定伺服器監聽的KCP埠號. 如果此值為0, 則伺服器將不會監聽KCP連線。" +"
預設情況下, 此值為0." + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:23 +msgid "" +"BindQuicPort specifies the QUIC port that the server listens on. If this value " +"is 0, the server will not listen for QUIC connections.
By default, this " +"value is 0." +msgstr "" +"BindQuicPort指定伺服器監聽的QUIC埠號. 如果此值為0, 則伺服器將不會監聽QUIC連線。" "
預設情況下, 此值為0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:20 @@ -77,9 +86,9 @@ msgstr "BindPort指定伺服器監聽的埠號.
預設情況下, 此值為 msgid "" "BindUdpPort specifies the UDP port that the server listens on. If this value " "is 0, the server will not listen for UDP connections.
By default, this " -"value is 0" +"value is 0." msgstr "BindUdpPort指定伺服器監聽的UDP連接埠。如果此值為0,伺服器將不會監聽UDP連線。 " -"
預設值為0" +"
預設值為0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:143 msgid "Collecting data ..." @@ -186,7 +195,11 @@ msgstr "心跳逾時" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:22 msgid "KCP bind port" -msgstr "KCP榜定埠號" +msgstr "KCP綁定埠號" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:23 +msgid "QUIC bind port" +msgstr "QUIC綁定埠號" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 msgid "Log file" @@ -382,6 +395,43 @@ msgstr "" "VhostHttpsPort指定伺服器監聽虛擬主機HTTPS請求的埠號, 如果此值為0, 則伺服器將" "不監聽HTTPS請求.
預設情況下, 此值為0." +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 +msgid "Dashboard TLS mode" +msgstr "​​儀表板TLS模式​​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:33 +msgid "Dashboard TLS certificate" +msgstr "​​儀表板TLS證書​​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:34 +msgid "Dashboard TLS private key" +msgstr "儀表板TLS私鑰​​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:32 +msgid "" +"Enable or disable TLS encryption for the dashboard. When enabled, HTTPS " +"is used for secure communication." +msgstr "" +"​​啟用或停用儀表板的 TLS 加密功能。啟用後,儀表板將透過 HTTPS 協定進行安全通訊。​" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:33 +msgid "" +"Dashboard TLS Cert File specifies the path to the TLS certificate file for " +"enabling HTTPS access." +"
Required if HTTPS is enabled." +msgstr "" +"Dashboard TLS Cert File 用於指定啟用 HTTPS 存取所需的 TLS 憑證文件路徑,若啟" +"用 HTTPS 則必須配置此文件。" + +#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:34 +msgid "" +"Dashboard TLS Key File specifies the path to the TLS private key file for " +"enabling HTTPS access." +"
Required if HTTPS is enabled." +msgstr "" +"​​Dashboard TLS Key File 用於指定啟用 HTTPS 存取所需的 TLS 私鑰文件路徑,若啟​" +"用 HTTPS 則必須配置此文件。" + #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:116 #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:118 #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:128 -- 2.30.2