diff --git a/frp/Makefile b/frp/Makefile new file mode 100644 index 000000000..e2b102aa5 --- /dev/null +++ b/frp/Makefile @@ -0,0 +1,69 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=frp +PKG_VERSION:=0.51.3 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v${PKG_VERSION}? +PKG_HASH:=83032399773901348c660d41c967530e794ab58172ccd070db89d5e50d915fef + +PKG_MAINTAINER:=Richard Yu +PKG_LICENSE:=Apache-2.0 +PKG_LICENSE_FILES:=LICENSE + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 +PKG_BUILD_FLAGS:=no-mips16 + +GO_PKG:=github.com/fatedier/frp +GO_PKG_BUILD_PKG:=github.com/fatedier/frp/cmd/... + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/frp/install + $(INSTALL_DIR) $(1)/usr/bin/ + $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/$(2) $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc/frp/$(2).d/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/conf/$(2)_full.ini $(1)/etc/frp/$(2).d/ + $(INSTALL_DIR) $(1)/etc/config/ + $(INSTALL_CONF) ./files/$(2).config $(1)/etc/config/$(2) + $(INSTALL_DIR) $(1)/etc/init.d/ + $(INSTALL_BIN) ./files/$(2).init $(1)/etc/init.d/$(2) + + if [ -r ./files/$(2).uci-defaults ]; then \ + $(INSTALL_DIR) $(1)/etc/uci-defaults; \ + $(INSTALL_DATA) ./files/$(2).uci-defaults $(1)/etc/uci-defaults/$(2); \ + fi +endef + +define Package/frp/template + define Package/$(1) + SECTION:=net + CATEGORY:=Network + SUBMENU:=Web Servers/Proxies + TITLE:=$(1) - fast reverse proxy $(2) + URL:=https://github.com/fatedier/frp + DEPENDS:=$(GO_ARCH_DEPENDS) + endef + + define Package/$(1)/description + $(1) is a fast reverse proxy $(2) to help you expose a local server behind + a NAT or firewall to the internet. + endef + + define Package/$(1)/conffiles +/etc/config/$(1) + endef + + define Package/$(1)/install + $(call Package/frp/install,$$(1),$(1)) + endef +endef + +$(eval $(call Package/frp/template,frpc,client)) +$(eval $(call Package/frp/template,frps,server)) +$(eval $(call BuildPackage,frpc)) +$(eval $(call BuildPackage,frps)) diff --git a/frp/files/frpc.config b/frp/files/frpc.config new file mode 100644 index 000000000..492e224ff --- /dev/null +++ b/frp/files/frpc.config @@ -0,0 +1,23 @@ +config init + option stdout 1 + option stderr 1 + option user frpc + option group frpc + option respawn 1 +# OS environments pass to frp for config file template, see +# https://github.com/fatedier/frp#configuration-file-template +# list env 'ENV_NAME=value' +# Config files include in temporary config file. +# list conf_inc '/etc/frp/frpc.d/frpc_full.ini' + +config conf 'common' + option server_addr 127.0.0.1 + option server_port 7000 +# List options with name="_" will be directly appended to config file +# list _ '# Key-A=Value-A' + +config conf 'ssh' + option type tcp + option local_ip 127.0.0.1 + option local_port 22 + option remote_port 6000 diff --git a/frp/files/frpc.init b/frp/files/frpc.init new file mode 100644 index 000000000..68fe43c4e --- /dev/null +++ b/frp/files/frpc.init @@ -0,0 +1,80 @@ +#!/bin/sh /etc/rc.common + +START=99 +USE_PROCD=1 + +NAME=frpc +PROG=/usr/bin/$NAME + +_err() { + echo "$*" >&2 + logger -p daemon.err -t "$NAME" "$*" +} + +config_cb() { + [ $# -eq 0 ] && return + + local type="$1" + local name="$2" + if [ "$type" = "conf" ]; then + echo "[$name]" >> "$conf_file" + option_cb() { + local option="$1" + local value="$2" + [ "$option" = "name" ] && \ + sed -i "s/$CONFIG_SECTION/$value/g" "$conf_file" || \ + echo "$option = $value" >> "$conf_file"; + } + list_cb() { + local name="$1" + local value="$2" + [ "$name" = "_" ] && echo "$value" >> "$conf_file" + } + else + [ "$type" = "init" ] && init_cfg="$name" + option_cb() { return 0; } + list_cb() { return 0; } + fi +} + +service_triggers() +{ + procd_add_reload_trigger "$NAME" +} + +start_service() { + local init_cfg=" " + local conf_file="/var/etc/$NAME.ini" + + > "$conf_file" + config_load "$NAME" + + local stdout stderr user group respawn env conf_inc + uci_validate_section "$NAME" init "$init_cfg" \ + 'stdout:bool:1' \ + 'stderr:bool:1' \ + 'user:string' \ + 'group:string' \ + 'respawn:bool:1' \ + 'env:list(string)' \ + 'conf_inc:list(string)' + + local err=$? + [ $err -ne 0 ] && { + _err "uci_validate_section returned $err" + return 1 + } + + [ -n "$conf_inc" ] && config_list_foreach "$init_cfg" conf_inc cat >> "$conf_file" + + procd_open_instance + procd_set_param command "$PROG" -c "$conf_file" + procd_set_param file $conf_file + procd_set_param stdout $stdout + procd_set_param stderr $stderr + [ -n "$user" ] && procd_set_param user "$user" + [ -n "$group" ] && procd_set_param group "$group" + [ $respawn -eq 1 ] && procd_set_param respawn + [ -n "$env" ] && config_list_foreach "$init_cfg" env "procd_append_param env" + procd_close_instance +} diff --git a/frp/files/frpc.uci-defaults b/frp/files/frpc.uci-defaults new file mode 100644 index 000000000..4883a2d8c --- /dev/null +++ b/frp/files/frpc.uci-defaults @@ -0,0 +1,19 @@ +#!/bin/sh + +. /lib/functions.sh + +upgrade() { + local section=$1 + local name + [ "$section" != "common" ] || return 0 + config_get name $section name + if [ -z "$name" ]; then + uci_set frpc "$section" name "$section" + uci_commit frpc + fi +} + +config_load frpc +config_foreach upgrade conf + +exit 0 diff --git a/frp/files/frps.config b/frp/files/frps.config new file mode 100644 index 000000000..ae0bffc2f --- /dev/null +++ b/frp/files/frps.config @@ -0,0 +1,16 @@ +config init + option stdout 1 + option stderr 1 + option user frps + option group frps + option respawn 1 +# OS environments pass to frp for config file template, see +# https://github.com/fatedier/frp#configuration-file-template +# list env 'ENV_NAME=value' +# Config files include in temporary config file. +# list conf_inc '/etc/frp/frps.d/frps_full.ini' + +config conf 'common' + option bind_port 7000 +# List options with name="_" will be directly appended to config file +# list _ '# Key-A=Value-A' diff --git a/frp/files/frps.init b/frp/files/frps.init new file mode 100644 index 000000000..38f714fb1 --- /dev/null +++ b/frp/files/frps.init @@ -0,0 +1,78 @@ +#!/bin/sh /etc/rc.common + +START=99 +USE_PROCD=1 + +NAME=frps +PROG=/usr/bin/$NAME + +_err() { + echo "$*" >&2 + logger -p daemon.err -t "$NAME" "$*" +} + +config_cb() { + [ $# -eq 0 ] && return + + local type="$1" + local name="$2" + if [ "$type" = "conf" ]; then + echo "[$name]" >> "$conf_file" + option_cb() { + local option="$1" + local value="$2" + echo "$option = $value" >> "$conf_file" + } + list_cb() { + local name="$1" + local value="$2" + [ "$name" = "_" ] && echo "$value" >> "$conf_file" + } + else + [ "$type" = "init" ] && init_cfg="$name" + option_cb() { return 0; } + list_cb() { return 0; } + fi +} + +service_triggers() +{ + procd_add_reload_trigger "$NAME" +} + +start_service() { + local init_cfg=" " + local conf_file="/var/etc/$NAME.ini" + + > "$conf_file" + config_load "$NAME" + + local stdout stderr user group respawn env conf_inc + uci_validate_section "$NAME" init "$init_cfg" \ + 'stdout:bool:1' \ + 'stderr:bool:1' \ + 'user:string' \ + 'group:string' \ + 'respawn:bool:1' \ + 'env:list(string)' \ + 'conf_inc:list(string)' + + local err=$? + [ $err -ne 0 ] && { + _err "uci_validate_section returned $err" + return 1 + } + + [ -n "$conf_inc" ] && config_list_foreach "$init_cfg" conf_inc cat >> "$conf_file" + + procd_open_instance + procd_set_param command "$PROG" -c "$conf_file" + procd_set_param file $conf_file + procd_set_param stdout $stdout + procd_set_param stderr $stderr + [ -n "$user" ] && procd_set_param user "$user" + [ -n "$group" ] && procd_set_param group "$group" + [ $respawn -eq 1 ] && procd_set_param respawn + [ -n "$env" ] && config_list_foreach "$init_cfg" env "procd_append_param env" + procd_close_instance +} diff --git a/frp/test.sh b/frp/test.sh new file mode 100644 index 000000000..1436d02d3 --- /dev/null +++ b/frp/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +$1 -v 2>&1 | grep -F "$PKG_VERSION" diff --git a/headscale/Makefile b/headscale/Makefile new file mode 100644 index 000000000..ad5a28d6f --- /dev/null +++ b/headscale/Makefile @@ -0,0 +1,63 @@ +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=headscale +PKG_VERSION:=0.21.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/juanfont/headscale/tar.gz/v$(PKG_VERSION)? +PKG_HASH:=2afbdc038508cb694be496db9ba6b63bbc611b7038e8299e60eef0f1b227f12f + +PKG_LICENSE:=BSD-3-clause +PKG_LICENSE_FILES:=LICENSE + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/juanfont/headscale +GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/headscale +GO_PKG_LDFLAGS:=-s -w +GO_PKG_LDFLAGS+= \ + -X '$(GO_PKG_BUILD_PKG)/cli.Version=v$(PKG_VERSION)' + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/headscale + SECTION:=net + CATEGORY:=Network + SUBMENU:=VPN + TITLE:=A Tailscale control server + URL:=https://github.com/juanfont/headscale + DEPENDS:=$(GO_ARCH_DEPENDS) +endef + +define Package/headscale/description +An open source, self-hosted implementation of the Tailscale control server. +endef + +define Package/headscale/conffiles +/etc/headscale/config.yaml +/etc/headscale/db.sqlite +/etc/headscale/derp.yaml +/etc/headscale/noise_private.key +/etc/headscale/private.key +endef + +define Package/headscale/install + $(call GoPackage/Package/Install/Bin,$(1)) + + $(INSTALL_DIR) $(1)/etc/headscale + touch $(1)/etc/headscale/db.sqlite + $(INSTALL_CONF) $(PKG_BUILD_DIR)/config-example.yaml $(1)/etc/headscale/config.yaml + $(INSTALL_CONF) $(PKG_BUILD_DIR)/derp-example.yaml $(1)/etc/headscale/derp.yaml +endef + +$(eval $(call GoBinPackage,headscale)) +$(eval $(call BuildPackage,headscale)) diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index fde58bcd7..dc348871a 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -708,13 +708,21 @@ return baseclass.extend({ return true; }, + validateBase64Key: function(length, section_id, value) { + /* Thanks to luci-proto-wireguard */ + if (value) + if (value.length !== length || !value.match(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/) || value[length-1] !== '=') + return _('Expecting: %s').format(_('valid base64 key with %d characters').format(length)); + + return true; + }, + validateShadowsocksPassword: function(self, encmode, section_id, value) { var length = self.shadowsocks_cipher_length[encmode]; if (typeof length !== 'undefined') { length = Math.ceil(length/3)*4; if (encmode.match(/^2022-/)) { - if (value.length !== length || !value.match(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/) || value[length-1] !== '=') - return _('Expecting: %s').format(_('valid base64 key with %d characters').format(length)); + return self.validateBase64Key(length, section_id, value); } else { if (length === 0 && !value) return _('Expecting: %s').format(_('non-empty value')); diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js index 2aeeb78ff..f8cde9780 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js @@ -318,6 +318,71 @@ return view.extend({ so.depends({type: /^(vmess|vless)$/}); so.modalonly = true; + /* WireGuard fields */ + so = ss.taboption('field_general', form.Value, 'wireguard_ip', _('Local address'), + _('The %s address used by local machine in the Wireguard network.').format('IPv4')); + so.datatype = 'ip4addr(1)'; + so.rmempty = false; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Value, 'wireguard_ipv6', _('Local IPv6 address'), + _('The %s address used by local machine in the Wireguard network.').format('IPv6')); + so.datatype = 'ip6addr(1)'; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Value, 'wireguard_private_key', _('Private key'), + _('WireGuard requires base64-encoded private keys.')); + so.password = true; + so.validate = L.bind(hm.validateBase64Key, so, 44); + so.rmempty = false; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Value, 'wireguard_peer_public_key', _('Peer pubkic key'), + _('WireGuard peer public key.')); + so.validate = L.bind(hm.validateBase64Key, so, 44); + so.rmempty = false; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Value, 'wireguard_pre_shared_key', _('Pre-shared key'), + _('WireGuard pre-shared key.')); + so.password = true; + so.validate = L.bind(hm.validateBase64Key, so, 44); + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.DynamicList, 'wireguard_allowed_ips', _('Allowed IPs'), + _('Destination addresses allowed to be forwarded via Wireguard.')); + so.datatype = 'cidr'; + so.placeholder = '0.0.0.0/0'; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.DynamicList, 'wireguard_reserved', _('Reserved field bytes')); + so.datatype = 'integer'; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Value, 'wireguard_mtu', _('MTU')); + so.datatype = 'range(0,9000)'; + so.placeholder = '1408'; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.Flag, 'wireguard_remote_dns_resolve', _('Remote DNS resolve'), + _('Force DNS remote resolution.')); + so.default = so.disabled; + so.depends('type', 'wireguard'); + so.modalonly = true; + + so = ss.taboption('field_general', form.DynamicList, 'wireguard_dns', _('DNS server')); + so.datatype = 'or(host, hostport)'; + so.depends('wireguard_remote_dns_resolve', '1'); + so.modalonly = true; + /* Plugin fields */ so = ss.taboption('field_general', form.ListValue, 'plugin', _('Plugin')); so.value('', _('none')); diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index 0b52a6a6b..5209add15 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -5,35 +5,35 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "%s log" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:417 -#: htdocs/luci-static/resources/fchomo.js:430 -#: htdocs/luci-static/resources/fchomo.js:443 -#: htdocs/luci-static/resources/fchomo.js:457 +#: htdocs/luci-static/resources/fchomo.js:419 +#: htdocs/luci-static/resources/fchomo.js:432 +#: htdocs/luci-static/resources/fchomo.js:445 +#: htdocs/luci-static/resources/fchomo.js:459 #: htdocs/luci-static/resources/view/fchomo/client.js:282 #: htdocs/luci-static/resources/view/fchomo/client.js:496 #: htdocs/luci-static/resources/view/fchomo/client.js:510 #: htdocs/luci-static/resources/view/fchomo/client.js:978 -#: htdocs/luci-static/resources/view/fchomo/global.js:459 +#: htdocs/luci-static/resources/view/fchomo/global.js:470 msgid "-- Please choose --" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:733 +#: htdocs/luci-static/resources/fchomo.js:743 msgid "/^(\\d+)(s|m|h|d)?$/" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:46 +#: htdocs/luci-static/resources/fchomo.js:48 msgid "163Music" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:192 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:193 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:194 msgid "2022-blake3-chacha20-poly1305" msgstr "" @@ -42,40 +42,40 @@ msgstr "" msgid "Save your configuration before uploading files!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:447 +#: htdocs/luci-static/resources/view/fchomo/global.js:458 msgid "API" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:488 +#: htdocs/luci-static/resources/view/fchomo/global.js:499 msgid "API DoH service" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:479 +#: htdocs/luci-static/resources/view/fchomo/global.js:490 msgid "API HTTP port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:483 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 msgid "API HTTPS port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:437 +#: htdocs/luci-static/resources/view/fchomo/global.js:448 msgid "API TLS certificate path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:441 +#: htdocs/luci-static/resources/view/fchomo/global.js:452 msgid "API TLS private key path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:492 +#: htdocs/luci-static/resources/view/fchomo/global.js:503 msgid "API secret" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:262 +#: htdocs/luci-static/resources/view/fchomo/global.js:273 msgid "ASN version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:565 -#: htdocs/luci-static/resources/view/fchomo/global.js:615 +#: htdocs/luci-static/resources/view/fchomo/global.js:576 +#: htdocs/luci-static/resources/view/fchomo/global.js:626 msgid "Access Control" msgstr "" @@ -91,7 +91,7 @@ msgstr "" msgid "Add a Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:719 +#: htdocs/luci-static/resources/view/fchomo/node.js:784 msgid "Add a provider" msgstr "" @@ -115,11 +115,11 @@ msgstr "" msgid "Add a sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:831 +#: htdocs/luci-static/resources/view/fchomo/node.js:896 msgid "Add prefix" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:834 +#: htdocs/luci-static/resources/view/fchomo/node.js:899 msgid "Add suffix" msgstr "" @@ -128,22 +128,26 @@ msgstr "" msgid "Address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:618 -#: htdocs/luci-static/resources/view/fchomo/global.js:662 +#: htdocs/luci-static/resources/view/fchomo/global.js:629 +#: htdocs/luci-static/resources/view/fchomo/global.js:673 msgid "All allowed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:648 -#: htdocs/luci-static/resources/view/fchomo/global.js:655 +#: htdocs/luci-static/resources/view/fchomo/global.js:659 +#: htdocs/luci-static/resources/view/fchomo/global.js:666 msgid "All ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:475 +#: htdocs/luci-static/resources/view/fchomo/global.js:486 msgid "" "Allow access from private network.
To access the API on a private " "network from a public website, it must be enabled." msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:357 +msgid "Allowed IPs" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:58 msgid "Already at the latest version." msgstr "" @@ -157,7 +161,7 @@ msgstr "" msgid "Alter ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:140 +#: htdocs/luci-static/resources/view/fchomo/global.js:144 msgid "Application version" msgstr "" @@ -169,7 +173,7 @@ msgstr "" msgid "Authenticated length" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:293 +#: htdocs/luci-static/resources/view/fchomo/global.js:304 msgid "Auto" msgstr "" @@ -177,19 +181,19 @@ msgstr "" msgid "Auto configure firewall" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:201 +#: htdocs/luci-static/resources/view/fchomo/global.js:212 msgid "Auto update" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:202 +#: htdocs/luci-static/resources/view/fchomo/global.js:213 msgid "Auto update resources." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:45 +#: htdocs/luci-static/resources/fchomo.js:47 msgid "Baidu" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:398 +#: htdocs/luci-static/resources/view/fchomo/global.js:409 msgid "Based on google/gvisor." msgstr "" @@ -207,24 +211,24 @@ msgid "Binary format only supports domain / ipcidr" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:543 -#: htdocs/luci-static/resources/view/fchomo/global.js:579 -#: htdocs/luci-static/resources/view/fchomo/node.js:688 -#: htdocs/luci-static/resources/view/fchomo/node.js:892 +#: htdocs/luci-static/resources/view/fchomo/global.js:590 +#: htdocs/luci-static/resources/view/fchomo/node.js:753 +#: htdocs/luci-static/resources/view/fchomo/node.js:957 msgid "Bind interface" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:544 -#: htdocs/luci-static/resources/view/fchomo/node.js:689 -#: htdocs/luci-static/resources/view/fchomo/node.js:893 +#: htdocs/luci-static/resources/view/fchomo/node.js:754 +#: htdocs/luci-static/resources/view/fchomo/node.js:958 msgid "Bind outbound interface.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:580 +#: htdocs/luci-static/resources/view/fchomo/global.js:591 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:620 +#: htdocs/luci-static/resources/view/fchomo/global.js:631 msgid "Black list" msgstr "" @@ -240,19 +244,19 @@ msgstr "" msgid "Boot DNS server (Node)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:663 +#: htdocs/luci-static/resources/view/fchomo/global.js:674 msgid "Bypass CN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:481 msgid "CORS Allow origins" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:474 +#: htdocs/luci-static/resources/view/fchomo/global.js:485 msgid "CORS Allow private network" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/view/fchomo/global.js:482 msgid "CORS allowed origins, * will be used if empty." msgstr "" @@ -260,11 +264,11 @@ msgstr "" msgid "Cancel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:450 +#: htdocs/luci-static/resources/view/fchomo/node.js:515 msgid "Cert fingerprint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:451 +#: htdocs/luci-static/resources/view/fchomo/node.js:516 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "" @@ -273,7 +277,7 @@ msgstr "" msgid "Certificate path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:190 +#: htdocs/luci-static/resources/view/fchomo/global.js:194 msgid "Check" msgstr "" @@ -281,15 +285,15 @@ msgstr "" msgid "Check update" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:265 +#: htdocs/luci-static/resources/view/fchomo/global.js:276 msgid "China IPv4 list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:268 +#: htdocs/luci-static/resources/view/fchomo/global.js:279 msgid "China IPv6 list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:274 +#: htdocs/luci-static/resources/view/fchomo/global.js:285 msgid "China list version" msgstr "" @@ -307,11 +311,11 @@ msgstr "" msgid "Client" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:472 +#: htdocs/luci-static/resources/view/fchomo/node.js:537 msgid "Client fingerprint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:145 +#: htdocs/luci-static/resources/view/fchomo/global.js:149 msgid "Client status" msgstr "" @@ -319,21 +323,21 @@ msgstr "" msgid "Collecting data..." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:650 -#: htdocs/luci-static/resources/view/fchomo/global.js:657 +#: htdocs/luci-static/resources/view/fchomo/global.js:661 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "Common and STUN ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:649 -#: htdocs/luci-static/resources/view/fchomo/global.js:656 +#: htdocs/luci-static/resources/view/fchomo/global.js:660 +#: htdocs/luci-static/resources/view/fchomo/global.js:667 msgid "Common ports only (bypass P2P traffic)" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:626 +#: htdocs/luci-static/resources/fchomo.js:628 msgid "Complete" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:848 +#: htdocs/luci-static/resources/view/fchomo/node.js:913 msgid "Configuration Items" msgstr "" @@ -342,16 +346,16 @@ msgstr "" msgid "Congestion controller" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:166 +#: htdocs/luci-static/resources/view/fchomo/global.js:170 msgid "Connection check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:780 +#: htdocs/luci-static/resources/view/fchomo/node.js:845 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:243 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:772 +#: htdocs/luci-static/resources/view/fchomo/node.js:837 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:235 msgid "Contents" msgstr "" @@ -360,23 +364,23 @@ msgstr "" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:135 +#: htdocs/luci-static/resources/view/fchomo/global.js:139 msgid "Core version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:214 +#: htdocs/luci-static/resources/view/fchomo/global.js:225 msgid "Cron expression" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:679 +#: htdocs/luci-static/resources/view/fchomo/global.js:690 msgid "Custom Direct List" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:880 msgid "Custom HTTP header." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:704 +#: htdocs/luci-static/resources/view/fchomo/global.js:715 msgid "Custom Proxy List" msgstr "" @@ -385,7 +389,7 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:84 +#: htdocs/luci-static/resources/fchomo.js:86 msgid "DIRECT" msgstr "" @@ -394,13 +398,14 @@ msgstr "" msgid "DNS policy" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:363 +#: htdocs/luci-static/resources/view/fchomo/global.js:374 msgid "DNS port" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:795 #: htdocs/luci-static/resources/view/fchomo/client.js:805 #: htdocs/luci-static/resources/view/fchomo/client.js:991 +#: htdocs/luci-static/resources/view/fchomo/node.js:381 msgid "DNS server" msgstr "" @@ -408,11 +413,11 @@ msgstr "" msgid "DNS settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:232 +#: htdocs/luci-static/resources/view/fchomo/global.js:243 msgid "Dashboard version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:302 +#: htdocs/luci-static/resources/view/fchomo/global.js:313 msgid "Debug" msgstr "" @@ -428,33 +433,37 @@ msgstr "" msgid "Default DNS server" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:358 +msgid "Destination addresses allowed to be forwarded via Wireguard." +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:44 msgid "Dial fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:286 +#: htdocs/luci-static/resources/view/fchomo/global.js:297 msgid "Direct" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:622 +#: htdocs/luci-static/resources/view/fchomo/global.js:633 msgid "Direct IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:625 +#: htdocs/luci-static/resources/view/fchomo/global.js:636 msgid "Direct IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:628 +#: htdocs/luci-static/resources/view/fchomo/global.js:639 msgid "Direct MAC-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:294 +#: htdocs/luci-static/resources/view/fchomo/global.js:305 #: htdocs/luci-static/resources/view/fchomo/node.js:116 #: htdocs/luci-static/resources/view/fchomo/server.js:177 msgid "Disable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:433 +#: htdocs/luci-static/resources/view/fchomo/node.js:498 msgid "Disable SNI" msgstr "" @@ -470,32 +479,32 @@ msgstr "" msgid "Domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:434 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 msgid "Donot send server name in ClientHello." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:881 +#: htdocs/luci-static/resources/view/fchomo/node.js:529 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Donot verifying server certificate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:668 +#: htdocs/luci-static/resources/view/fchomo/node.js:733 msgid "Download bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:669 +#: htdocs/luci-static/resources/view/fchomo/node.js:734 msgid "Download bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:532 +#: htdocs/luci-static/resources/fchomo.js:534 msgid "Download failed: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:530 +#: htdocs/luci-static/resources/fchomo.js:532 msgid "Download successful." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:70 +#: htdocs/luci-static/resources/fchomo.js:72 msgid "Dual stack" msgstr "" @@ -507,15 +516,15 @@ msgstr "" msgid "EDNS Client Subnet" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:305 +#: htdocs/luci-static/resources/view/fchomo/global.js:316 msgid "ETag support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:581 +#: htdocs/luci-static/resources/view/fchomo/node.js:646 msgid "Early Data first packet length limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:587 +#: htdocs/luci-static/resources/view/fchomo/node.js:652 msgid "Early Data header name" msgstr "" @@ -527,7 +536,7 @@ msgstr "" msgid "Edit ruleset" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:233 msgid "Editer" msgstr "" @@ -538,11 +547,11 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:728 #: htdocs/luci-static/resources/view/fchomo/client.js:815 #: htdocs/luci-static/resources/view/fchomo/client.js:956 -#: htdocs/luci-static/resources/view/fchomo/global.js:292 -#: htdocs/luci-static/resources/view/fchomo/global.js:529 +#: htdocs/luci-static/resources/view/fchomo/global.js:303 +#: htdocs/luci-static/resources/view/fchomo/global.js:540 #: htdocs/luci-static/resources/view/fchomo/node.js:51 -#: htdocs/luci-static/resources/view/fchomo/node.js:746 -#: htdocs/luci-static/resources/view/fchomo/node.js:912 +#: htdocs/luci-static/resources/view/fchomo/node.js:811 +#: htdocs/luci-static/resources/view/fchomo/node.js:977 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:181 #: htdocs/luci-static/resources/view/fchomo/server.js:84 #: htdocs/luci-static/resources/view/fchomo/server.js:108 @@ -560,28 +569,28 @@ msgstr "" msgid "Enable 0-RTT handshake" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:656 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 msgid "Enable TCP Brutal" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:657 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "Enable TCP Brutal congestion control algorithm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:645 +#: htdocs/luci-static/resources/view/fchomo/node.js:710 msgid "Enable multiplexing only for TCP." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:639 +#: htdocs/luci-static/resources/view/fchomo/node.js:704 msgid "Enable padding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:650 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 msgid "Enable statistic" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 +#: htdocs/luci-static/resources/view/fchomo/node.js:443 +#: htdocs/luci-static/resources/view/fchomo/node.js:931 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "" @@ -593,7 +602,7 @@ msgid "" "connections, losing the ability to masquerade with HTTP/3." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:419 +#: htdocs/luci-static/resources/view/fchomo/global.js:430 msgid "Endpoint-Independent NAT" msgstr "" @@ -602,7 +611,7 @@ msgstr "" msgid "Entry" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:299 +#: htdocs/luci-static/resources/view/fchomo/global.js:310 msgid "Error" msgstr "" @@ -613,58 +622,59 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:632 -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:1027 msgid "Exclude matched node types." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:627 -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:1021 msgid "Exclude nodes that meet keywords or regexps." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:943 +#: htdocs/luci-static/resources/view/fchomo/node.js:1008 msgid "Expected HTTP code. 204 will be used if empty." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:945 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "Expected status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:556 -#: htdocs/luci-static/resources/fchomo.js:559 -#: htdocs/luci-static/resources/fchomo.js:562 -#: htdocs/luci-static/resources/fchomo.js:643 -#: htdocs/luci-static/resources/fchomo.js:651 -#: htdocs/luci-static/resources/fchomo.js:659 -#: htdocs/luci-static/resources/fchomo.js:683 -#: htdocs/luci-static/resources/fchomo.js:700 -#: htdocs/luci-static/resources/fchomo.js:703 +#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:561 +#: htdocs/luci-static/resources/fchomo.js:564 +#: htdocs/luci-static/resources/fchomo.js:645 +#: htdocs/luci-static/resources/fchomo.js:653 +#: htdocs/luci-static/resources/fchomo.js:661 +#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:702 +#: htdocs/luci-static/resources/fchomo.js:705 #: htdocs/luci-static/resources/fchomo.js:715 -#: htdocs/luci-static/resources/fchomo.js:718 -#: htdocs/luci-static/resources/fchomo.js:720 -#: htdocs/luci-static/resources/fchomo.js:733 -#: htdocs/luci-static/resources/fchomo.js:740 -#: htdocs/luci-static/resources/fchomo.js:749 -#: htdocs/luci-static/resources/fchomo.js:761 -#: htdocs/luci-static/resources/fchomo.js:764 +#: htdocs/luci-static/resources/fchomo.js:725 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:730 +#: htdocs/luci-static/resources/fchomo.js:743 +#: htdocs/luci-static/resources/fchomo.js:750 +#: htdocs/luci-static/resources/fchomo.js:759 +#: htdocs/luci-static/resources/fchomo.js:771 #: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:784 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:472 #: htdocs/luci-static/resources/view/fchomo/client.js:830 -#: htdocs/luci-static/resources/view/fchomo/node.js:456 +#: htdocs/luci-static/resources/view/fchomo/node.js:521 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:213 msgid "Expecting: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:515 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 +#: htdocs/luci-static/resources/view/fchomo/node.js:580 +#: htdocs/luci-static/resources/view/fchomo/node.js:587 msgid "Expecting: only support %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:548 +#: htdocs/luci-static/resources/view/fchomo/global.js:559 msgid "Experimental" msgstr "" @@ -676,19 +686,19 @@ msgstr "" msgid "Factor" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:584 +#: htdocs/luci-static/resources/fchomo.js:586 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:874 +#: htdocs/luci-static/resources/fchomo.js:884 msgid "Failed to upload %s, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:893 +#: htdocs/luci-static/resources/fchomo.js:903 msgid "Failed to upload, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:120 +#: htdocs/luci-static/resources/fchomo.js:122 msgid "Fallback" msgstr "" @@ -703,7 +713,7 @@ msgid "Fallback filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:951 +#: htdocs/luci-static/resources/view/fchomo/node.js:1016 msgid "Filter nodes that meet keywords or regexps." msgstr "" @@ -733,14 +743,18 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:588 -#: htdocs/luci-static/resources/view/fchomo/node.js:839 -#: htdocs/luci-static/resources/view/fchomo/node.js:944 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "" "For format see %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:508 +#: htdocs/luci-static/resources/view/fchomo/node.js:376 +msgid "Force DNS remote resolution." +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/global.js:519 msgid "Forced sniffing domain" msgstr "" @@ -748,31 +762,31 @@ msgstr "" msgid "Format" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:123 +#: htdocs/luci-static/resources/view/fchomo/global.js:127 #: htdocs/luci-static/resources/view/fchomo/log.js:97 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:3 msgid "FullCombo Mihomo" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:541 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:271 +#: htdocs/luci-static/resources/view/fchomo/global.js:282 msgid "GFW list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:279 +#: htdocs/luci-static/resources/view/fchomo/global.js:290 msgid "General" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:463 #: htdocs/luci-static/resources/view/fchomo/node.js:40 -#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:801 msgid "General fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:282 +#: htdocs/luci-static/resources/view/fchomo/global.js:293 msgid "General settings" msgstr "" @@ -789,15 +803,15 @@ msgstr "" msgid "Generate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:407 +#: htdocs/luci-static/resources/view/fchomo/global.js:418 msgid "Generic segmentation offload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:256 +#: htdocs/luci-static/resources/view/fchomo/global.js:267 msgid "GeoIP version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:259 +#: htdocs/luci-static/resources/view/fchomo/global.js:270 msgid "GeoSite version" msgstr "" @@ -815,20 +829,20 @@ msgstr "" msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:48 +#: htdocs/luci-static/resources/fchomo.js:50 msgid "GitHub" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:288 +#: htdocs/luci-static/resources/view/fchomo/global.js:299 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:14 msgid "Global" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:328 +#: htdocs/luci-static/resources/view/fchomo/global.js:339 msgid "Global Authentication" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:431 +#: htdocs/luci-static/resources/view/fchomo/global.js:442 msgid "Global client fingerprint" msgstr "" @@ -836,7 +850,7 @@ msgstr "" msgid "Global padding" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:47 +#: htdocs/luci-static/resources/fchomo.js:49 msgid "Google" msgstr "" @@ -848,21 +862,21 @@ msgstr "" msgid "Group" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:58 -#: htdocs/luci-static/resources/fchomo.js:85 -#: htdocs/luci-static/resources/view/fchomo/node.js:332 -#: htdocs/luci-static/resources/view/fchomo/node.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:515 +#: htdocs/luci-static/resources/fchomo.js:60 +#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/view/fchomo/node.js:397 +#: htdocs/luci-static/resources/view/fchomo/node.js:569 +#: htdocs/luci-static/resources/view/fchomo/node.js:580 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:84 -#: htdocs/luci-static/resources/view/fchomo/node.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:814 +#: htdocs/luci-static/resources/view/fchomo/node.js:628 +#: htdocs/luci-static/resources/view/fchomo/node.js:879 msgid "HTTP header" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:540 +#: htdocs/luci-static/resources/view/fchomo/node.js:605 msgid "HTTP request method" msgstr "" @@ -876,37 +890,37 @@ msgid "" "returned if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:505 -#: htdocs/luci-static/resources/view/fchomo/node.js:516 +#: htdocs/luci-static/resources/view/fchomo/node.js:570 +#: htdocs/luci-static/resources/view/fchomo/node.js:581 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:666 +#: htdocs/luci-static/resources/view/fchomo/global.js:677 msgid "Handle domain" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:916 +#: htdocs/luci-static/resources/view/fchomo/node.js:981 msgid "Health check URL" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:586 -#: htdocs/luci-static/resources/view/fchomo/node.js:942 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Health check expected status" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:566 -#: htdocs/luci-static/resources/view/fchomo/node.js:925 +#: htdocs/luci-static/resources/view/fchomo/node.js:990 msgid "Health check interval" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:573 -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:996 msgid "Health check timeout" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:738 +#: htdocs/luci-static/resources/view/fchomo/node.js:803 msgid "Health fields" msgstr "" @@ -914,7 +928,7 @@ msgstr "" msgid "Heartbeat interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:338 +#: htdocs/luci-static/resources/view/fchomo/node.js:403 msgid "Host that supports TLS 1.3" msgstr "" @@ -931,8 +945,8 @@ msgstr "" msgid "Hosts" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:64 -#: htdocs/luci-static/resources/fchomo.js:94 +#: htdocs/luci-static/resources/fchomo.js:66 +#: htdocs/luci-static/resources/fchomo.js:96 msgid "Hysteria2" msgstr "" @@ -949,21 +963,21 @@ msgstr "" msgid "IP override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:700 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:765 +#: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "IP version" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:71 +#: htdocs/luci-static/resources/fchomo.js:73 msgid "IPv4 only" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:74 msgid "IPv6 only" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:753 -#: htdocs/luci-static/resources/view/fchomo/global.js:308 +#: htdocs/luci-static/resources/view/fchomo/global.js:319 msgid "IPv6 support" msgstr "" @@ -991,8 +1005,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:104 #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/node.js:871 -#: htdocs/luci-static/resources/view/fchomo/node.js:876 +#: htdocs/luci-static/resources/view/fchomo/node.js:936 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 #: htdocs/luci-static/resources/view/fchomo/server.js:159 #: htdocs/luci-static/resources/view/fchomo/server.js:165 msgid "In Mbps." @@ -1005,7 +1019,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:574 #: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/node.js:932 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 msgid "In millisecond. %s will be used if empty." msgstr "" @@ -1015,16 +1029,16 @@ msgid "In seconds." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:567 -#: htdocs/luci-static/resources/view/fchomo/global.js:318 -#: htdocs/luci-static/resources/view/fchomo/global.js:323 -#: htdocs/luci-static/resources/view/fchomo/global.js:415 -#: htdocs/luci-static/resources/view/fchomo/node.js:798 -#: htdocs/luci-static/resources/view/fchomo/node.js:926 +#: htdocs/luci-static/resources/view/fchomo/global.js:329 +#: htdocs/luci-static/resources/view/fchomo/global.js:334 +#: htdocs/luci-static/resources/view/fchomo/global.js:426 +#: htdocs/luci-static/resources/view/fchomo/node.js:863 +#: htdocs/luci-static/resources/view/fchomo/node.js:991 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "In seconds. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:342 +#: htdocs/luci-static/resources/view/fchomo/global.js:353 msgid "Inbound" msgstr "" @@ -1052,15 +1066,15 @@ msgstr "" msgid "Includes all Proxy Node." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:301 +#: htdocs/luci-static/resources/view/fchomo/global.js:312 msgid "Info" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:572 +#: htdocs/luci-static/resources/view/fchomo/global.js:583 msgid "Interface Control" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:69 +#: htdocs/luci-static/resources/fchomo.js:71 msgid "Keep default" msgstr "" @@ -1074,14 +1088,14 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:810 #: htdocs/luci-static/resources/view/fchomo/client.js:951 #: htdocs/luci-static/resources/view/fchomo/node.js:46 -#: htdocs/luci-static/resources/view/fchomo/node.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:806 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:176 #: htdocs/luci-static/resources/view/fchomo/server.js:103 msgid "Label" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:580 -#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:1002 msgid "Lazy" msgstr "" @@ -1091,11 +1105,11 @@ msgid "" "compatibility purposes only, use of alterId > 1 is not recommended." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:400 +#: htdocs/luci-static/resources/view/fchomo/global.js:411 msgid "Less compatibility and sometimes better performance." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:446 +#: htdocs/luci-static/resources/view/fchomo/node.js:511 #: htdocs/luci-static/resources/view/fchomo/server.js:332 msgid "List of supported application level protocols, in order of preference." msgstr "" @@ -1104,7 +1118,7 @@ msgstr "" msgid "Listen address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:574 +#: htdocs/luci-static/resources/view/fchomo/global.js:585 msgid "Listen interfaces" msgstr "" @@ -1113,19 +1127,27 @@ msgstr "" msgid "Listen port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:345 +#: htdocs/luci-static/resources/view/fchomo/global.js:356 msgid "Listen ports" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:122 +#: htdocs/luci-static/resources/fchomo.js:124 msgid "Load balance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:816 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:186 msgid "Local" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:329 +msgid "Local IPv6 address" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:322 +msgid "Local address" +msgstr "" + #: root/usr/share/luci/menu.d/luci-app-fchomo.json:62 msgid "Log" msgstr "" @@ -1138,15 +1160,16 @@ msgstr "" msgid "Log is empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:297 +#: htdocs/luci-static/resources/view/fchomo/global.js:308 msgid "Log level" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:556 +#: htdocs/luci-static/resources/fchomo.js:558 msgid "Lowercase only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:403 +#: htdocs/luci-static/resources/view/fchomo/global.js:414 +#: htdocs/luci-static/resources/view/fchomo/node.js:369 msgid "MTU" msgstr "" @@ -1182,7 +1205,7 @@ msgstr "" msgid "Match rule set." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:580 +#: htdocs/luci-static/resources/view/fchomo/node.js:645 msgid "Max Early Data" msgstr "" @@ -1205,18 +1228,18 @@ msgstr "" msgid "Max upload speed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:617 -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:682 +#: htdocs/luci-static/resources/view/fchomo/node.js:698 msgid "Maximum connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:631 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:630 +#: htdocs/luci-static/resources/view/fchomo/node.js:695 msgid "Maximum streams" msgstr "" @@ -1230,30 +1253,30 @@ msgstr "" msgid "Mihomo server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:624 +#: htdocs/luci-static/resources/view/fchomo/node.js:689 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:623 -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:688 +#: htdocs/luci-static/resources/view/fchomo/node.js:698 msgid "Minimum streams" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:60 -#: htdocs/luci-static/resources/view/fchomo/global.js:389 +#: htdocs/luci-static/resources/fchomo.js:62 +#: htdocs/luci-static/resources/view/fchomo/global.js:400 msgid "Mixed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:396 +#: htdocs/luci-static/resources/view/fchomo/global.js:407 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:348 +#: htdocs/luci-static/resources/view/fchomo/global.js:359 msgid "Mixed port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:603 +#: htdocs/luci-static/resources/view/fchomo/node.js:668 msgid "Multiplex" msgstr "" @@ -1261,7 +1284,7 @@ msgstr "" msgid "Multiplex fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:804 +#: htdocs/luci-static/resources/view/fchomo/node.js:869 msgid "Name of the Proxy group to download provider." msgstr "" @@ -1273,7 +1296,7 @@ msgstr "" msgid "Native" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:336 +#: htdocs/luci-static/resources/view/fchomo/global.js:347 msgid "No Authentication IP ranges" msgstr "" @@ -1282,7 +1305,7 @@ msgid "No add'l params" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:938 +#: htdocs/luci-static/resources/view/fchomo/node.js:1003 msgid "No testing is performed when this provider node is not in use." msgstr "" @@ -1297,17 +1320,17 @@ msgid "Node" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:626 -#: htdocs/luci-static/resources/view/fchomo/node.js:955 +#: htdocs/luci-static/resources/view/fchomo/node.js:1020 msgid "Node exclude filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:631 -#: htdocs/luci-static/resources/view/fchomo/node.js:961 +#: htdocs/luci-static/resources/view/fchomo/node.js:1026 msgid "Node exclude type" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:950 +#: htdocs/luci-static/resources/view/fchomo/node.js:1015 msgid "Node filter" msgstr "" @@ -1319,15 +1342,15 @@ msgstr "" msgid "None" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:462 +#: htdocs/luci-static/resources/view/fchomo/global.js:473 msgid "Not Installed" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:490 +#: htdocs/luci-static/resources/fchomo.js:492 msgid "Not Running" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:331 +#: htdocs/luci-static/resources/view/fchomo/node.js:396 msgid "Obfs Mode" msgstr "" @@ -1341,15 +1364,15 @@ msgstr "" msgid "Obfuscate type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:575 +#: htdocs/luci-static/resources/view/fchomo/global.js:586 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:484 +#: htdocs/luci-static/resources/fchomo.js:486 msgid "Open Dashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:285 +#: htdocs/luci-static/resources/view/fchomo/global.js:296 msgid "Operation mode" msgstr "" @@ -1357,13 +1380,13 @@ msgstr "" msgid "Override ECS in original request." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:504 -#: htdocs/luci-static/resources/view/fchomo/global.js:542 +#: htdocs/luci-static/resources/view/fchomo/global.js:515 +#: htdocs/luci-static/resources/view/fchomo/global.js:553 msgid "Override destination" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:737 +#: htdocs/luci-static/resources/view/fchomo/node.js:802 msgid "Override fields" msgstr "" @@ -1375,19 +1398,19 @@ msgstr "" msgid "Override the Proxy group of DNS server." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:505 +#: htdocs/luci-static/resources/view/fchomo/global.js:516 msgid "Override the connection destination address with the sniffed domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:129 +#: htdocs/luci-static/resources/view/fchomo/global.js:133 msgid "Overview" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:542 +#: htdocs/luci-static/resources/view/fchomo/node.js:607 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:543 +#: htdocs/luci-static/resources/view/fchomo/node.js:608 msgid "PUT" msgstr "" @@ -1397,13 +1420,17 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:78 #: htdocs/luci-static/resources/view/fchomo/node.js:158 -#: htdocs/luci-static/resources/view/fchomo/node.js:345 +#: htdocs/luci-static/resources/view/fchomo/node.js:410 #: htdocs/luci-static/resources/view/fchomo/server.js:138 #: htdocs/luci-static/resources/view/fchomo/server.js:216 msgid "Password" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:420 +#: htdocs/luci-static/resources/view/fchomo/node.js:343 +msgid "Peer pubkic key" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/global.js:431 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1419,23 +1446,23 @@ msgid "" "standards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:771 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:234 msgid "" "Please type %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:322 +#: htdocs/luci-static/resources/view/fchomo/node.js:387 msgid "Plugin" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:331 -#: htdocs/luci-static/resources/view/fchomo/node.js:338 -#: htdocs/luci-static/resources/view/fchomo/node.js:345 -#: htdocs/luci-static/resources/view/fchomo/node.js:351 -#: htdocs/luci-static/resources/view/fchomo/node.js:359 -#: htdocs/luci-static/resources/view/fchomo/node.js:365 +#: htdocs/luci-static/resources/view/fchomo/node.js:396 +#: htdocs/luci-static/resources/view/fchomo/node.js:403 +#: htdocs/luci-static/resources/view/fchomo/node.js:410 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 +#: htdocs/luci-static/resources/view/fchomo/node.js:424 +#: htdocs/luci-static/resources/view/fchomo/node.js:430 msgid "Plugin:" msgstr "" @@ -1443,11 +1470,11 @@ msgstr "" msgid "Port" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:687 msgid "Port %s alrealy exists!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:539 +#: htdocs/luci-static/resources/view/fchomo/global.js:550 msgid "Ports" msgstr "" @@ -1456,25 +1483,26 @@ msgid "Ports pool" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:168 +#: htdocs/luci-static/resources/view/fchomo/node.js:350 msgid "Pre-shared key" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:75 msgid "Prefer IPv4" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:74 +#: htdocs/luci-static/resources/fchomo.js:76 msgid "Prefer IPv6" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:545 #: htdocs/luci-static/resources/view/fchomo/client.js:551 -#: htdocs/luci-static/resources/view/fchomo/global.js:581 -#: htdocs/luci-static/resources/view/fchomo/global.js:598 -#: htdocs/luci-static/resources/view/fchomo/node.js:690 -#: htdocs/luci-static/resources/view/fchomo/node.js:696 -#: htdocs/luci-static/resources/view/fchomo/node.js:894 -#: htdocs/luci-static/resources/view/fchomo/node.js:900 +#: htdocs/luci-static/resources/view/fchomo/global.js:592 +#: htdocs/luci-static/resources/view/fchomo/global.js:609 +#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:761 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 +#: htdocs/luci-static/resources/view/fchomo/node.js:965 msgid "Priority: Proxy Node > Proxy Group > Global." msgstr "" @@ -1486,12 +1514,16 @@ msgstr "" msgid "Priv-key passphrase" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:335 +msgid "Private key" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/global.js:302 msgid "Process matching mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:533 -#: htdocs/luci-static/resources/view/fchomo/node.js:609 +#: htdocs/luci-static/resources/view/fchomo/global.js:544 +#: htdocs/luci-static/resources/view/fchomo/node.js:674 msgid "Protocol" msgstr "" @@ -1506,12 +1538,12 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:509 -#: htdocs/luci-static/resources/view/fchomo/node.js:709 -#: htdocs/luci-static/resources/view/fchomo/node.js:719 +#: htdocs/luci-static/resources/view/fchomo/node.js:774 +#: htdocs/luci-static/resources/view/fchomo/node.js:784 msgid "Provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:791 +#: htdocs/luci-static/resources/view/fchomo/node.js:856 msgid "Provider URL" msgstr "" @@ -1520,15 +1552,15 @@ msgstr "" msgid "Proxy Group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:631 +#: htdocs/luci-static/resources/view/fchomo/global.js:642 msgid "Proxy IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:634 +#: htdocs/luci-static/resources/view/fchomo/global.js:645 msgid "Proxy IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:637 +#: htdocs/luci-static/resources/view/fchomo/global.js:648 msgid "Proxy MAC-s" msgstr "" @@ -1539,16 +1571,16 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:354 #: htdocs/luci-static/resources/view/fchomo/client.js:867 #: htdocs/luci-static/resources/view/fchomo/client.js:999 -#: htdocs/luci-static/resources/view/fchomo/node.js:803 +#: htdocs/luci-static/resources/view/fchomo/node.js:868 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:266 msgid "Proxy group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:368 +#: htdocs/luci-static/resources/view/fchomo/global.js:379 msgid "Proxy mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:640 +#: htdocs/luci-static/resources/view/fchomo/global.js:651 msgid "Proxy routerself" msgstr "" @@ -1566,35 +1598,35 @@ msgstr "" msgid "Quick Reload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:481 +#: htdocs/luci-static/resources/view/fchomo/node.js:546 msgid "REALITY" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:486 +#: htdocs/luci-static/resources/view/fchomo/node.js:551 msgid "REALITY public key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:491 +#: htdocs/luci-static/resources/view/fchomo/node.js:556 msgid "REALITY short ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:493 +#: htdocs/luci-static/resources/view/fchomo/global.js:504 msgid "Random will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:353 +#: htdocs/luci-static/resources/view/fchomo/global.js:364 msgid "Redir port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:369 +#: htdocs/luci-static/resources/view/fchomo/global.js:380 msgid "Redirect TCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:371 +#: htdocs/luci-static/resources/view/fchomo/global.js:382 msgid "Redirect TCP + TProxy UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:373 +#: htdocs/luci-static/resources/view/fchomo/global.js:384 msgid "Redirect TCP + Tun UDP" msgstr "" @@ -1602,44 +1634,48 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:477 +#: htdocs/luci-static/resources/fchomo.js:479 #: htdocs/luci-static/resources/view/fchomo/client.js:443 -#: htdocs/luci-static/resources/view/fchomo/global.js:162 +#: htdocs/luci-static/resources/view/fchomo/global.js:166 #: htdocs/luci-static/resources/view/fchomo/server.js:80 msgid "Reload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:161 +#: htdocs/luci-static/resources/view/fchomo/global.js:165 msgid "Reload All" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:752 +#: htdocs/luci-static/resources/view/fchomo/node.js:817 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:187 msgid "Remote" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:615 +#: htdocs/luci-static/resources/view/fchomo/node.js:375 +msgid "Remote DNS resolve" +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:617 msgid "Remove" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:620 -#: htdocs/luci-static/resources/view/fchomo/node.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:729 +#: htdocs/luci-static/resources/fchomo.js:622 +#: htdocs/luci-static/resources/view/fchomo/node.js:792 +#: htdocs/luci-static/resources/view/fchomo/node.js:794 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:167 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:169 msgid "Remove idles" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:837 +#: htdocs/luci-static/resources/view/fchomo/node.js:902 msgid "Replace name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:838 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Replace node name." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:549 -#: htdocs/luci-static/resources/view/fchomo/node.js:556 +#: htdocs/luci-static/resources/view/fchomo/node.js:614 +#: htdocs/luci-static/resources/view/fchomo/node.js:621 msgid "Request path" msgstr "" @@ -1647,43 +1683,47 @@ msgstr "" msgid "Request timeout" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:198 +#: htdocs/luci-static/resources/view/fchomo/node.js:364 +msgid "Reserved field bytes" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/global.js:202 msgid "Resources management" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:365 +#: htdocs/luci-static/resources/view/fchomo/node.js:430 msgid "Restls script" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:644 +#: htdocs/luci-static/resources/view/fchomo/global.js:655 msgid "Routing Control" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:664 +#: htdocs/luci-static/resources/view/fchomo/global.js:675 msgid "Routing GFW" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:550 -#: htdocs/luci-static/resources/view/fchomo/global.js:597 -#: htdocs/luci-static/resources/view/fchomo/node.js:695 -#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/global.js:608 +#: htdocs/luci-static/resources/view/fchomo/node.js:760 +#: htdocs/luci-static/resources/view/fchomo/node.js:964 msgid "Routing mark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:660 +#: htdocs/luci-static/resources/view/fchomo/global.js:671 msgid "Routing mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:661 +#: htdocs/luci-static/resources/view/fchomo/global.js:672 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:667 +#: htdocs/luci-static/resources/view/fchomo/global.js:678 msgid "Routing mode will be handle domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:646 -#: htdocs/luci-static/resources/view/fchomo/global.js:653 +#: htdocs/luci-static/resources/view/fchomo/global.js:657 +#: htdocs/luci-static/resources/view/fchomo/global.js:664 msgid "Routing ports" msgstr "" @@ -1692,15 +1732,15 @@ msgstr "" msgid "Routing rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:591 +#: htdocs/luci-static/resources/view/fchomo/global.js:602 msgid "Routing rule priority" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:585 +#: htdocs/luci-static/resources/view/fchomo/global.js:596 msgid "Routing table ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:287 +#: htdocs/luci-static/resources/view/fchomo/global.js:298 msgid "Rule" msgstr "" @@ -1722,19 +1762,19 @@ msgstr "" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:490 +#: htdocs/luci-static/resources/fchomo.js:492 msgid "Running" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:59 +#: htdocs/luci-static/resources/fchomo.js:61 msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:86 +#: htdocs/luci-static/resources/fchomo.js:88 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:97 +#: htdocs/luci-static/resources/fchomo.js:99 msgid "SSH" msgstr "" @@ -1742,7 +1782,7 @@ msgstr "" msgid "SUB-RULE" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:383 +#: htdocs/luci-static/resources/view/fchomo/node.js:448 msgid "SUoT version" msgstr "" @@ -1751,23 +1791,23 @@ msgstr "" msgid "Salamander" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:79 +#: htdocs/luci-static/resources/fchomo.js:81 msgid "Same dstaddr requests. Same node" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:80 +#: htdocs/luci-static/resources/fchomo.js:82 msgid "Same srcaddr and dstaddr requests. Same node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:410 +#: htdocs/luci-static/resources/view/fchomo/global.js:421 msgid "Segment maximum size" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:119 +#: htdocs/luci-static/resources/fchomo.js:121 msgid "Select" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:453 +#: htdocs/luci-static/resources/view/fchomo/global.js:464 msgid "Select Dashboard" msgstr "" @@ -1780,20 +1820,20 @@ msgstr "" msgid "Server address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:599 msgid "Server hostname" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:153 +#: htdocs/luci-static/resources/view/fchomo/global.js:157 msgid "Server status" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:132 +#: htdocs/luci-static/resources/view/fchomo/global.js:136 msgid "Service status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:61 -#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/fchomo.js:63 +#: htdocs/luci-static/resources/fchomo.js:89 msgid "Shadowsocks" msgstr "" @@ -1809,59 +1849,59 @@ msgstr "" msgid "Shadowsocks password" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:651 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Show connections in the dashboard for breaking connections easier." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:298 +#: htdocs/luci-static/resources/view/fchomo/global.js:309 msgid "Silent" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:78 +#: htdocs/luci-static/resources/fchomo.js:80 msgid "Simple round-robin all nodes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:463 -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:528 +#: htdocs/luci-static/resources/view/fchomo/node.js:945 msgid "Skip cert verify" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:511 +#: htdocs/luci-static/resources/view/fchomo/global.js:522 msgid "Skiped sniffing domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:517 +#: htdocs/luci-static/resources/view/fchomo/global.js:528 msgid "Skiped sniffing dst address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:514 +#: htdocs/luci-static/resources/view/fchomo/global.js:525 msgid "Skiped sniffing src address" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:89 +#: htdocs/luci-static/resources/fchomo.js:91 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:521 +#: htdocs/luci-static/resources/view/fchomo/global.js:532 msgid "Sniff protocol" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:498 +#: htdocs/luci-static/resources/view/fchomo/global.js:509 msgid "Sniffer" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:501 +#: htdocs/luci-static/resources/view/fchomo/global.js:512 msgid "Sniffer settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:647 -#: htdocs/luci-static/resources/view/fchomo/global.js:654 +#: htdocs/luci-static/resources/view/fchomo/global.js:658 +#: htdocs/luci-static/resources/view/fchomo/global.js:665 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:384 +#: htdocs/luci-static/resources/view/fchomo/global.js:395 msgid "Stack" msgstr "" @@ -1888,7 +1928,7 @@ msgstr "" msgid "Successfully updated." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:890 +#: htdocs/luci-static/resources/fchomo.js:900 msgid "Successfully uploaded." msgstr "" @@ -1898,7 +1938,7 @@ msgid "" "text, yaml, mrs.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:386 +#: htdocs/luci-static/resources/view/fchomo/global.js:397 msgid "System" msgstr "" @@ -1910,40 +1950,40 @@ msgstr "" msgid "TCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:314 +#: htdocs/luci-static/resources/view/fchomo/global.js:325 msgid "TCP concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:644 +#: htdocs/luci-static/resources/view/fchomo/node.js:709 msgid "TCP only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:322 +#: htdocs/luci-static/resources/view/fchomo/global.js:333 msgid "TCP-Keep-Alive idle timeout" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:317 +#: htdocs/luci-static/resources/view/fchomo/global.js:328 msgid "TCP-Keep-Alive interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:675 -#: htdocs/luci-static/resources/view/fchomo/node.js:853 +#: htdocs/luci-static/resources/view/fchomo/node.js:740 +#: htdocs/luci-static/resources/view/fchomo/node.js:918 msgid "TFO" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:425 -#: htdocs/luci-static/resources/view/fchomo/node.js:333 -#: htdocs/luci-static/resources/view/fchomo/node.js:391 +#: htdocs/luci-static/resources/view/fchomo/global.js:436 +#: htdocs/luci-static/resources/view/fchomo/node.js:398 +#: htdocs/luci-static/resources/view/fchomo/node.js:456 #: htdocs/luci-static/resources/view/fchomo/server.js:309 msgid "TLS" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:510 #: htdocs/luci-static/resources/view/fchomo/server.js:331 msgid "TLS ALPN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "TLS SNI" msgstr "" @@ -1951,8 +1991,8 @@ msgstr "" msgid "TLS fields" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:63 -#: htdocs/luci-static/resources/fchomo.js:95 +#: htdocs/luci-static/resources/fchomo.js:65 +#: htdocs/luci-static/resources/fchomo.js:97 msgid "TUIC" msgstr "" @@ -1961,7 +2001,12 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:215 +#: htdocs/luci-static/resources/view/fchomo/node.js:323 +#: htdocs/luci-static/resources/view/fchomo/node.js:330 +msgid "The %s address used by local machine in the Wireguard network." +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/global.js:226 msgid "The default value is 2:00 every day." msgstr "" @@ -1983,8 +2028,8 @@ msgstr "" msgid "The server public key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:466 -#: htdocs/luci-static/resources/view/fchomo/node.js:883 +#: htdocs/luci-static/resources/view/fchomo/node.js:531 +#: htdocs/luci-static/resources/view/fchomo/node.js:948 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -1996,25 +2041,25 @@ msgid "" "stream based UDP relay mode that TUIC does not provide." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:376 +#: htdocs/luci-static/resources/view/fchomo/global.js:387 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:681 msgid "To enable, you need to install dnsmasq-full." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:604 +#: htdocs/luci-static/resources/view/fchomo/global.js:615 msgid "Tproxy Fwmark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:358 +#: htdocs/luci-static/resources/view/fchomo/global.js:369 msgid "Tproxy port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:497 +#: htdocs/luci-static/resources/view/fchomo/node.js:562 msgid "Transport" msgstr "" @@ -2022,27 +2067,27 @@ msgstr "" msgid "Transport fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:502 +#: htdocs/luci-static/resources/view/fchomo/node.js:567 msgid "Transport type" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:92 +#: htdocs/luci-static/resources/fchomo.js:94 msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:609 +#: htdocs/luci-static/resources/view/fchomo/global.js:620 msgid "Tun Fwmark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:374 +#: htdocs/luci-static/resources/view/fchomo/global.js:385 msgid "Tun TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:381 +#: htdocs/luci-static/resources/view/fchomo/global.js:392 msgid "Tun settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:385 +#: htdocs/luci-static/resources/view/fchomo/global.js:396 msgid "Tun stack." msgstr "" @@ -2051,20 +2096,20 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:482 #: htdocs/luci-static/resources/view/fchomo/client.js:960 #: htdocs/luci-static/resources/view/fchomo/node.js:55 -#: htdocs/luci-static/resources/view/fchomo/node.js:750 +#: htdocs/luci-static/resources/view/fchomo/node.js:815 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 #: htdocs/luci-static/resources/view/fchomo/server.js:112 msgid "Type" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:274 -#: htdocs/luci-static/resources/view/fchomo/node.js:372 -#: htdocs/luci-static/resources/view/fchomo/node.js:861 +#: htdocs/luci-static/resources/view/fchomo/node.js:437 +#: htdocs/luci-static/resources/view/fchomo/node.js:926 #: htdocs/luci-static/resources/view/fchomo/server.js:367 msgid "UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:414 +#: htdocs/luci-static/resources/view/fchomo/global.js:425 msgid "UDP NAT expiration time" msgstr "" @@ -2084,7 +2129,7 @@ msgstr "" msgid "UDP relay mode" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:121 +#: htdocs/luci-static/resources/fchomo.js:123 msgid "URL test" msgstr "" @@ -2095,7 +2140,7 @@ msgstr "" msgid "UUID" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:535 +#: htdocs/luci-static/resources/fchomo.js:537 msgid "Unable to download unsupported type: %s" msgstr "" @@ -2103,12 +2148,12 @@ msgstr "" msgid "Unable to save contents: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:311 +#: htdocs/luci-static/resources/view/fchomo/global.js:322 msgid "Unified delay" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:137 -#: htdocs/luci-static/resources/view/fchomo/global.js:142 +#: htdocs/luci-static/resources/view/fchomo/global.js:141 +#: htdocs/luci-static/resources/view/fchomo/global.js:146 msgid "Unknown" msgstr "" @@ -2120,8 +2165,8 @@ msgstr "" msgid "Unknown error: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:377 -#: htdocs/luci-static/resources/view/fchomo/node.js:865 +#: htdocs/luci-static/resources/view/fchomo/node.js:442 +#: htdocs/luci-static/resources/view/fchomo/node.js:930 msgid "UoT" msgstr "" @@ -2129,16 +2174,16 @@ msgstr "" msgid "Update failed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:797 +#: htdocs/luci-static/resources/view/fchomo/node.js:862 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:260 msgid "Update interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:662 +#: htdocs/luci-static/resources/view/fchomo/node.js:727 msgid "Upload bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:663 +#: htdocs/luci-static/resources/view/fchomo/node.js:728 msgid "Upload bandwidth in Mbps." msgstr "" @@ -2146,7 +2191,7 @@ msgstr "" msgid "Upload certificate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:204 +#: htdocs/luci-static/resources/view/fchomo/global.js:206 msgid "Upload initial package" msgstr "" @@ -2154,6 +2199,7 @@ msgstr "" msgid "Upload key" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/global.js:208 #: htdocs/luci-static/resources/view/fchomo/server.js:346 #: htdocs/luci-static/resources/view/fchomo/server.js:361 msgid "Upload..." @@ -2167,11 +2213,11 @@ msgstr "" msgid "Used to resolve the domain of the Proxy node." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:440 +#: htdocs/luci-static/resources/view/fchomo/node.js:505 msgid "Used to verify the hostname on the returned certificates." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:331 +#: htdocs/luci-static/resources/view/fchomo/global.js:342 msgid "User Authentication" msgstr "" @@ -2180,48 +2226,48 @@ msgstr "" msgid "Username" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:617 +#: htdocs/luci-static/resources/view/fchomo/global.js:628 msgid "Users filter mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:592 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:597 +#: htdocs/luci-static/resources/view/fchomo/node.js:662 msgid "V2ray HTTPUpgrade fast open" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:91 +#: htdocs/luci-static/resources/fchomo.js:93 msgid "VLESS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:62 -#: htdocs/luci-static/resources/fchomo.js:90 +#: htdocs/luci-static/resources/fchomo.js:64 +#: htdocs/luci-static/resources/fchomo.js:92 msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:820 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:218 msgid "Value" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:175 -#: htdocs/luci-static/resources/view/fchomo/node.js:351 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 msgid "Version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:359 +#: htdocs/luci-static/resources/view/fchomo/node.js:424 msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:300 +#: htdocs/luci-static/resources/view/fchomo/global.js:311 msgid "Warning" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:507 -#: htdocs/luci-static/resources/view/fchomo/node.js:518 -#: htdocs/luci-static/resources/view/fchomo/node.js:523 +#: htdocs/luci-static/resources/view/fchomo/node.js:572 +#: htdocs/luci-static/resources/view/fchomo/node.js:583 +#: htdocs/luci-static/resources/view/fchomo/node.js:588 msgid "WebSocket" msgstr "" @@ -2229,14 +2275,26 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:619 +#: htdocs/luci-static/resources/view/fchomo/global.js:630 msgid "White list" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:96 +#: htdocs/luci-static/resources/fchomo.js:98 msgid "WireGuard" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:344 +msgid "WireGuard peer public key." +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:351 +msgid "WireGuard pre-shared key." +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:336 +msgid "WireGuard requires base64-encoded private keys." +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:317 msgid "Xudp (Xray-core)" msgstr "" @@ -2245,25 +2303,25 @@ msgstr "" msgid "Yaml text" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:49 +#: htdocs/luci-static/resources/fchomo.js:51 msgid "YouTube" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:872 +#: htdocs/luci-static/resources/fchomo.js:882 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:184 +#: htdocs/luci-static/resources/fchomo.js:186 #: htdocs/luci-static/resources/view/fchomo/node.js:258 #: htdocs/luci-static/resources/view/fchomo/node.js:297 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:185 +#: htdocs/luci-static/resources/fchomo.js:187 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:186 +#: htdocs/luci-static/resources/fchomo.js:188 #: htdocs/luci-static/resources/view/fchomo/node.js:259 msgid "aes-256-gcm" msgstr "" @@ -2281,7 +2339,7 @@ msgstr "" msgid "certificate" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:187 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/view/fchomo/node.js:260 msgid "chacha20-ietf-poly1305" msgstr "" @@ -2295,34 +2353,34 @@ msgstr "" msgid "cubic" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:560 +#: htdocs/luci-static/resources/view/fchomo/global.js:571 msgid "dialer-ip4p-convert" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:888 +#: htdocs/luci-static/resources/view/fchomo/node.js:749 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "dialer-proxy" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:875 +#: htdocs/luci-static/resources/view/fchomo/node.js:940 msgid "down" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:517 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 +#: htdocs/luci-static/resources/view/fchomo/node.js:571 +#: htdocs/luci-static/resources/view/fchomo/node.js:582 +#: htdocs/luci-static/resources/view/fchomo/node.js:587 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:576 +#: htdocs/luci-static/resources/view/fchomo/node.js:641 msgid "gRPC service name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:388 +#: htdocs/luci-static/resources/view/fchomo/global.js:399 msgid "gVisor" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:613 +#: htdocs/luci-static/resources/view/fchomo/node.js:678 msgid "h2mux" msgstr "" @@ -2330,8 +2388,8 @@ msgstr "" msgid "metacubexd" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:679 -#: htdocs/luci-static/resources/view/fchomo/node.js:857 +#: htdocs/luci-static/resources/view/fchomo/node.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:922 msgid "mpTCP" msgstr "" @@ -2344,15 +2402,15 @@ msgstr "" msgid "no-resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:718 -#: htdocs/luci-static/resources/fchomo.js:740 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:750 msgid "non-empty value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:182 +#: htdocs/luci-static/resources/fchomo.js:184 #: htdocs/luci-static/resources/view/fchomo/node.js:295 #: htdocs/luci-static/resources/view/fchomo/node.js:315 -#: htdocs/luci-static/resources/view/fchomo/node.js:323 +#: htdocs/luci-static/resources/view/fchomo/node.js:388 msgid "none" msgstr "" @@ -2364,15 +2422,15 @@ msgstr "" msgid "not included \",\"" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:109 +#: htdocs/luci-static/resources/fchomo.js:111 msgid "null" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:324 +#: htdocs/luci-static/resources/view/fchomo/node.js:389 msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:840 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 msgid "override.proxy-name" msgstr "" @@ -2384,27 +2442,27 @@ msgstr "" msgid "private key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:557 +#: htdocs/luci-static/resources/view/fchomo/global.js:568 msgid "quic-go-disable-ecn" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:554 +#: htdocs/luci-static/resources/view/fchomo/global.js:565 msgid "quic-go-disable-gso" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:35 +#: htdocs/luci-static/resources/fchomo.js:36 msgid "razord-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:327 +#: htdocs/luci-static/resources/view/fchomo/node.js:392 msgid "restls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:326 +#: htdocs/luci-static/resources/view/fchomo/node.js:391 msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:611 +#: htdocs/luci-static/resources/view/fchomo/node.js:676 msgid "smux" msgstr "" @@ -2412,90 +2470,95 @@ msgstr "" msgid "src" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:192 +#: htdocs/luci-static/resources/view/fchomo/global.js:196 msgid "unchecked" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:559 +#: htdocs/luci-static/resources/fchomo.js:561 msgid "unique UCI identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:562 +#: htdocs/luci-static/resources/fchomo.js:564 msgid "unique identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:749 +#: htdocs/luci-static/resources/fchomo.js:759 msgid "unique value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:870 +#: htdocs/luci-static/resources/view/fchomo/node.js:935 msgid "up" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:176 #: htdocs/luci-static/resources/view/fchomo/node.js:220 -#: htdocs/luci-static/resources/view/fchomo/node.js:352 -#: htdocs/luci-static/resources/view/fchomo/node.js:384 +#: htdocs/luci-static/resources/view/fchomo/node.js:417 +#: htdocs/luci-static/resources/view/fchomo/node.js:449 msgid "v1" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:177 -#: htdocs/luci-static/resources/view/fchomo/node.js:353 -#: htdocs/luci-static/resources/view/fchomo/node.js:385 +#: htdocs/luci-static/resources/view/fchomo/node.js:418 +#: htdocs/luci-static/resources/view/fchomo/node.js:450 msgid "v2" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:178 -#: htdocs/luci-static/resources/view/fchomo/node.js:354 +#: htdocs/luci-static/resources/view/fchomo/node.js:419 msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:700 -#: htdocs/luci-static/resources/fchomo.js:703 +#: htdocs/luci-static/resources/fchomo.js:702 +#: htdocs/luci-static/resources/fchomo.js:705 msgid "valid JSON format" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:456 +#: htdocs/luci-static/resources/view/fchomo/node.js:521 msgid "valid SHA256 string with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:761 -#: htdocs/luci-static/resources/fchomo.js:764 +#: htdocs/luci-static/resources/fchomo.js:771 +#: htdocs/luci-static/resources/fchomo.js:774 msgid "valid URL" msgstr "" #: htdocs/luci-static/resources/fchomo.js:715 +#: htdocs/luci-static/resources/fchomo.js:725 msgid "valid base64 key with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:720 +#: htdocs/luci-static/resources/fchomo.js:730 msgid "valid key length with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:683 +#: htdocs/luci-static/resources/fchomo.js:685 msgid "valid port value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:784 msgid "valid uuid" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:190 msgid "xchacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:34 +#: htdocs/luci-static/resources/fchomo.js:35 msgid "yacd-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:612 +#: htdocs/luci-static/resources/view/fchomo/node.js:677 msgid "yamux" msgstr "" +#: htdocs/luci-static/resources/fchomo.js:34 +msgid "zashboard" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:296 msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:537 +#: htdocs/luci-static/resources/fchomo.js:539 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index 095a1e50d..d230c20ef 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -12,35 +12,35 @@ msgstr "" msgid "%s log" msgstr "%s 日志" -#: htdocs/luci-static/resources/fchomo.js:417 -#: htdocs/luci-static/resources/fchomo.js:430 -#: htdocs/luci-static/resources/fchomo.js:443 -#: htdocs/luci-static/resources/fchomo.js:457 +#: htdocs/luci-static/resources/fchomo.js:419 +#: htdocs/luci-static/resources/fchomo.js:432 +#: htdocs/luci-static/resources/fchomo.js:445 +#: htdocs/luci-static/resources/fchomo.js:459 #: htdocs/luci-static/resources/view/fchomo/client.js:282 #: htdocs/luci-static/resources/view/fchomo/client.js:496 #: htdocs/luci-static/resources/view/fchomo/client.js:510 #: htdocs/luci-static/resources/view/fchomo/client.js:978 -#: htdocs/luci-static/resources/view/fchomo/global.js:459 +#: htdocs/luci-static/resources/view/fchomo/global.js:470 msgid "-- Please choose --" msgstr "-- 请选择 --" -#: htdocs/luci-static/resources/fchomo.js:733 +#: htdocs/luci-static/resources/fchomo.js:743 msgid "/^(\\d+)(s|m|h|d)?$/" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:46 +#: htdocs/luci-static/resources/fchomo.js:48 msgid "163Music" msgstr "网抑云" -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:192 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:193 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:194 msgid "2022-blake3-chacha20-poly1305" msgstr "" @@ -49,40 +49,40 @@ msgstr "" msgid "Save your configuration before uploading files!" msgstr "上传文件前请先保存配置!" -#: htdocs/luci-static/resources/view/fchomo/global.js:447 +#: htdocs/luci-static/resources/view/fchomo/global.js:458 msgid "API" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:488 +#: htdocs/luci-static/resources/view/fchomo/global.js:499 msgid "API DoH service" msgstr "API DoH 服务器" -#: htdocs/luci-static/resources/view/fchomo/global.js:479 +#: htdocs/luci-static/resources/view/fchomo/global.js:490 msgid "API HTTP port" msgstr "API HTTP 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:483 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 msgid "API HTTPS port" msgstr "API HTTPS 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:437 +#: htdocs/luci-static/resources/view/fchomo/global.js:448 msgid "API TLS certificate path" msgstr "API TLS 证书路径" -#: htdocs/luci-static/resources/view/fchomo/global.js:441 +#: htdocs/luci-static/resources/view/fchomo/global.js:452 msgid "API TLS private key path" msgstr "API TLS 私钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:492 +#: htdocs/luci-static/resources/view/fchomo/global.js:503 msgid "API secret" msgstr "API 令牌" -#: htdocs/luci-static/resources/view/fchomo/global.js:262 +#: htdocs/luci-static/resources/view/fchomo/global.js:273 msgid "ASN version" msgstr "ASN 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:565 -#: htdocs/luci-static/resources/view/fchomo/global.js:615 +#: htdocs/luci-static/resources/view/fchomo/global.js:576 +#: htdocs/luci-static/resources/view/fchomo/global.js:626 msgid "Access Control" msgstr "访问控制" @@ -98,7 +98,7 @@ msgstr "新增 DNS 服务器" msgid "Add a Node" msgstr "新增 节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:719 +#: htdocs/luci-static/resources/view/fchomo/node.js:784 msgid "Add a provider" msgstr "新增 供应商" @@ -122,11 +122,11 @@ msgstr "新增 服务器" msgid "Add a sub rule" msgstr "新增 子规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:831 +#: htdocs/luci-static/resources/view/fchomo/node.js:896 msgid "Add prefix" msgstr "添加前缀" -#: htdocs/luci-static/resources/view/fchomo/node.js:834 +#: htdocs/luci-static/resources/view/fchomo/node.js:899 msgid "Add suffix" msgstr "添加后缀" @@ -135,23 +135,27 @@ msgstr "添加后缀" msgid "Address" msgstr "地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:618 -#: htdocs/luci-static/resources/view/fchomo/global.js:662 +#: htdocs/luci-static/resources/view/fchomo/global.js:629 +#: htdocs/luci-static/resources/view/fchomo/global.js:673 msgid "All allowed" msgstr "允许所有" -#: htdocs/luci-static/resources/view/fchomo/global.js:648 -#: htdocs/luci-static/resources/view/fchomo/global.js:655 +#: htdocs/luci-static/resources/view/fchomo/global.js:659 +#: htdocs/luci-static/resources/view/fchomo/global.js:666 msgid "All ports" msgstr "所有端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:475 +#: htdocs/luci-static/resources/view/fchomo/global.js:486 msgid "" "Allow access from private network.
To access the API on a private " "network from a public website, it must be enabled." msgstr "" "允许从私有网络访问。
要从公共网站访问私有网络上的 API,则必须启用。" +#: htdocs/luci-static/resources/view/fchomo/node.js:357 +msgid "Allowed IPs" +msgstr "允许的 IP" + #: htdocs/luci-static/resources/view/fchomo/global.js:58 msgid "Already at the latest version." msgstr "已是最新版本。" @@ -165,7 +169,7 @@ msgstr "已在更新中。" msgid "Alter ID" msgstr "额外 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:140 +#: htdocs/luci-static/resources/view/fchomo/global.js:144 msgid "Application version" msgstr "应用版本" @@ -177,7 +181,7 @@ msgstr "认证超时" msgid "Authenticated length" msgstr "认证长度" -#: htdocs/luci-static/resources/view/fchomo/global.js:293 +#: htdocs/luci-static/resources/view/fchomo/global.js:304 msgid "Auto" msgstr "自动" @@ -185,19 +189,19 @@ msgstr "自动" msgid "Auto configure firewall" msgstr "自动配置防火墙" -#: htdocs/luci-static/resources/view/fchomo/global.js:201 +#: htdocs/luci-static/resources/view/fchomo/global.js:212 msgid "Auto update" msgstr "自动更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:202 +#: htdocs/luci-static/resources/view/fchomo/global.js:213 msgid "Auto update resources." msgstr "自动更新资源文件。" -#: htdocs/luci-static/resources/fchomo.js:45 +#: htdocs/luci-static/resources/fchomo.js:47 msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/global.js:398 +#: htdocs/luci-static/resources/view/fchomo/global.js:409 msgid "Based on google/gvisor." msgstr "基于 google/gvisor。" @@ -215,24 +219,24 @@ msgid "Binary format only supports domain / ipcidr" msgstr "二进制格式仅支持 domain/ipcidr" #: htdocs/luci-static/resources/view/fchomo/client.js:543 -#: htdocs/luci-static/resources/view/fchomo/global.js:579 -#: htdocs/luci-static/resources/view/fchomo/node.js:688 -#: htdocs/luci-static/resources/view/fchomo/node.js:892 +#: htdocs/luci-static/resources/view/fchomo/global.js:590 +#: htdocs/luci-static/resources/view/fchomo/node.js:753 +#: htdocs/luci-static/resources/view/fchomo/node.js:957 msgid "Bind interface" msgstr "绑定接口" #: htdocs/luci-static/resources/view/fchomo/client.js:544 -#: htdocs/luci-static/resources/view/fchomo/node.js:689 -#: htdocs/luci-static/resources/view/fchomo/node.js:893 +#: htdocs/luci-static/resources/view/fchomo/node.js:754 +#: htdocs/luci-static/resources/view/fchomo/node.js:958 msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:580 +#: htdocs/luci-static/resources/view/fchomo/global.js:591 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "绑定出站流量至指定接口。留空自动检测。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:620 +#: htdocs/luci-static/resources/view/fchomo/global.js:631 msgid "Black list" msgstr "黑名单" @@ -248,19 +252,19 @@ msgstr "启动 DNS 服务器" msgid "Boot DNS server (Node)" msgstr "启动 DNS 服务器 (节点)" -#: htdocs/luci-static/resources/view/fchomo/global.js:663 +#: htdocs/luci-static/resources/view/fchomo/global.js:674 msgid "Bypass CN" msgstr "绕过 CN 流量" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:481 msgid "CORS Allow origins" msgstr "CORS 允许的来源" -#: htdocs/luci-static/resources/view/fchomo/global.js:474 +#: htdocs/luci-static/resources/view/fchomo/global.js:485 msgid "CORS Allow private network" msgstr "CORS 允许私有网络" -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/view/fchomo/global.js:482 msgid "CORS allowed origins, * will be used if empty." msgstr "CORS 允许的来源,留空则使用 *。" @@ -268,11 +272,11 @@ msgstr "CORS 允许的来源,留空则使用 *。" msgid "Cancel" msgstr "取消" -#: htdocs/luci-static/resources/view/fchomo/node.js:450 +#: htdocs/luci-static/resources/view/fchomo/node.js:515 msgid "Cert fingerprint" msgstr "证书指纹" -#: htdocs/luci-static/resources/view/fchomo/node.js:451 +#: htdocs/luci-static/resources/view/fchomo/node.js:516 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" @@ -281,7 +285,7 @@ msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" msgid "Certificate path" msgstr "证书路径" -#: htdocs/luci-static/resources/view/fchomo/global.js:190 +#: htdocs/luci-static/resources/view/fchomo/global.js:194 msgid "Check" msgstr "检查" @@ -289,15 +293,15 @@ msgstr "检查" msgid "Check update" msgstr "检查更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:265 +#: htdocs/luci-static/resources/view/fchomo/global.js:276 msgid "China IPv4 list version" msgstr "大陆 IPv4 库版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:268 +#: htdocs/luci-static/resources/view/fchomo/global.js:279 msgid "China IPv6 list version" msgstr "大陆 IPv6 库版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:274 +#: htdocs/luci-static/resources/view/fchomo/global.js:285 msgid "China list version" msgstr "大陆域名列表版本" @@ -315,11 +319,11 @@ msgstr "清空日志" msgid "Client" msgstr "客户端" -#: htdocs/luci-static/resources/view/fchomo/node.js:472 +#: htdocs/luci-static/resources/view/fchomo/node.js:537 msgid "Client fingerprint" msgstr "客户端指纹" -#: htdocs/luci-static/resources/view/fchomo/global.js:145 +#: htdocs/luci-static/resources/view/fchomo/global.js:149 msgid "Client status" msgstr "客户端状态" @@ -327,21 +331,21 @@ msgstr "客户端状态" msgid "Collecting data..." msgstr "收集数据中..." -#: htdocs/luci-static/resources/view/fchomo/global.js:650 -#: htdocs/luci-static/resources/view/fchomo/global.js:657 +#: htdocs/luci-static/resources/view/fchomo/global.js:661 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "Common and STUN ports" msgstr "常用端口和 STUN 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:649 -#: htdocs/luci-static/resources/view/fchomo/global.js:656 +#: htdocs/luci-static/resources/view/fchomo/global.js:660 +#: htdocs/luci-static/resources/view/fchomo/global.js:667 msgid "Common ports only (bypass P2P traffic)" msgstr "仅常用端口(绕过 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:626 +#: htdocs/luci-static/resources/fchomo.js:628 msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:848 +#: htdocs/luci-static/resources/view/fchomo/node.js:913 msgid "Configuration Items" msgstr "配置项" @@ -350,16 +354,16 @@ msgstr "配置项" msgid "Congestion controller" msgstr "拥塞控制器" -#: htdocs/luci-static/resources/view/fchomo/global.js:166 +#: htdocs/luci-static/resources/view/fchomo/global.js:170 msgid "Connection check" msgstr "连接检查" -#: htdocs/luci-static/resources/view/fchomo/node.js:780 +#: htdocs/luci-static/resources/view/fchomo/node.js:845 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:243 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "内容将不会被验证,请确保输入正确。" -#: htdocs/luci-static/resources/view/fchomo/node.js:772 +#: htdocs/luci-static/resources/view/fchomo/node.js:837 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:235 msgid "Contents" msgstr "内容" @@ -368,23 +372,23 @@ msgstr "内容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:135 +#: htdocs/luci-static/resources/view/fchomo/global.js:139 msgid "Core version" msgstr "核心版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:214 +#: htdocs/luci-static/resources/view/fchomo/global.js:225 msgid "Cron expression" msgstr "Cron 表达式" -#: htdocs/luci-static/resources/view/fchomo/global.js:679 +#: htdocs/luci-static/resources/view/fchomo/global.js:690 msgid "Custom Direct List" msgstr "自定义直连列表" -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:880 msgid "Custom HTTP header." msgstr "自定义 HTTP header。" -#: htdocs/luci-static/resources/view/fchomo/global.js:704 +#: htdocs/luci-static/resources/view/fchomo/global.js:715 msgid "Custom Proxy List" msgstr "自定义代理列表" @@ -393,7 +397,7 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "自定义内部 hosts。支持 yamljson 格式。" -#: htdocs/luci-static/resources/fchomo.js:84 +#: htdocs/luci-static/resources/fchomo.js:86 msgid "DIRECT" msgstr "" @@ -402,13 +406,14 @@ msgstr "" msgid "DNS policy" msgstr "DNS 策略" -#: htdocs/luci-static/resources/view/fchomo/global.js:363 +#: htdocs/luci-static/resources/view/fchomo/global.js:374 msgid "DNS port" msgstr " DNS 端口" #: htdocs/luci-static/resources/view/fchomo/client.js:795 #: htdocs/luci-static/resources/view/fchomo/client.js:805 #: htdocs/luci-static/resources/view/fchomo/client.js:991 +#: htdocs/luci-static/resources/view/fchomo/node.js:381 msgid "DNS server" msgstr "DNS 服务器" @@ -416,11 +421,11 @@ msgstr "DNS 服务器" msgid "DNS settings" msgstr "DNS 设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:232 +#: htdocs/luci-static/resources/view/fchomo/global.js:243 msgid "Dashboard version" msgstr "面板版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:302 +#: htdocs/luci-static/resources/view/fchomo/global.js:313 msgid "Debug" msgstr "调试" @@ -436,33 +441,37 @@ msgstr "默认 DNS(由 WAN 下发)" msgid "Default DNS server" msgstr "默认 DNS 服务器" +#: htdocs/luci-static/resources/view/fchomo/node.js:358 +msgid "Destination addresses allowed to be forwarded via Wireguard." +msgstr "允许通过 WireGuard 转发的目的地址" + #: htdocs/luci-static/resources/view/fchomo/node.js:44 msgid "Dial fields" msgstr "拨号字段" -#: htdocs/luci-static/resources/view/fchomo/global.js:286 +#: htdocs/luci-static/resources/view/fchomo/global.js:297 msgid "Direct" msgstr "直连" -#: htdocs/luci-static/resources/view/fchomo/global.js:622 +#: htdocs/luci-static/resources/view/fchomo/global.js:633 msgid "Direct IPv4 IP-s" msgstr "直连 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:625 +#: htdocs/luci-static/resources/view/fchomo/global.js:636 msgid "Direct IPv6 IP-s" msgstr "直连 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:628 +#: htdocs/luci-static/resources/view/fchomo/global.js:639 msgid "Direct MAC-s" msgstr "直连 MAC 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:294 +#: htdocs/luci-static/resources/view/fchomo/global.js:305 #: htdocs/luci-static/resources/view/fchomo/node.js:116 #: htdocs/luci-static/resources/view/fchomo/server.js:177 msgid "Disable" msgstr "禁用" -#: htdocs/luci-static/resources/view/fchomo/node.js:433 +#: htdocs/luci-static/resources/view/fchomo/node.js:498 msgid "Disable SNI" msgstr "禁用 SNI" @@ -478,32 +487,32 @@ msgstr "禁用 UDP" msgid "Domain" msgstr "域名" -#: htdocs/luci-static/resources/view/fchomo/node.js:434 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中发送服务器名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:881 +#: htdocs/luci-static/resources/view/fchomo/node.js:529 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Donot verifying server certificate." msgstr "不验证服务器证书。" -#: htdocs/luci-static/resources/view/fchomo/node.js:668 +#: htdocs/luci-static/resources/view/fchomo/node.js:733 msgid "Download bandwidth" msgstr "下载带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:669 +#: htdocs/luci-static/resources/view/fchomo/node.js:734 msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:532 +#: htdocs/luci-static/resources/fchomo.js:534 msgid "Download failed: %s" msgstr "下载失败: %s" -#: htdocs/luci-static/resources/fchomo.js:530 +#: htdocs/luci-static/resources/fchomo.js:532 msgid "Download successful." msgstr "下载成功。" -#: htdocs/luci-static/resources/fchomo.js:70 +#: htdocs/luci-static/resources/fchomo.js:72 msgid "Dual stack" msgstr "双栈" @@ -515,15 +524,15 @@ msgstr "强制覆盖 ECS" msgid "EDNS Client Subnet" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:305 +#: htdocs/luci-static/resources/view/fchomo/global.js:316 msgid "ETag support" msgstr "ETag 支持" -#: htdocs/luci-static/resources/view/fchomo/node.js:581 +#: htdocs/luci-static/resources/view/fchomo/node.js:646 msgid "Early Data first packet length limit." msgstr "前置数据长度阈值" -#: htdocs/luci-static/resources/view/fchomo/node.js:587 +#: htdocs/luci-static/resources/view/fchomo/node.js:652 msgid "Early Data header name" msgstr "前置数据标头" @@ -535,7 +544,7 @@ msgstr "编辑节点" msgid "Edit ruleset" msgstr "编辑规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:233 msgid "Editer" msgstr "编辑器" @@ -546,11 +555,11 @@ msgstr "编辑器" #: htdocs/luci-static/resources/view/fchomo/client.js:728 #: htdocs/luci-static/resources/view/fchomo/client.js:815 #: htdocs/luci-static/resources/view/fchomo/client.js:956 -#: htdocs/luci-static/resources/view/fchomo/global.js:292 -#: htdocs/luci-static/resources/view/fchomo/global.js:529 +#: htdocs/luci-static/resources/view/fchomo/global.js:303 +#: htdocs/luci-static/resources/view/fchomo/global.js:540 #: htdocs/luci-static/resources/view/fchomo/node.js:51 -#: htdocs/luci-static/resources/view/fchomo/node.js:746 -#: htdocs/luci-static/resources/view/fchomo/node.js:912 +#: htdocs/luci-static/resources/view/fchomo/node.js:811 +#: htdocs/luci-static/resources/view/fchomo/node.js:977 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:181 #: htdocs/luci-static/resources/view/fchomo/server.js:84 #: htdocs/luci-static/resources/view/fchomo/server.js:108 @@ -570,28 +579,28 @@ msgstr "" msgid "Enable 0-RTT handshake" msgstr "启用 0-RTT 握手" -#: htdocs/luci-static/resources/view/fchomo/node.js:656 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 msgid "Enable TCP Brutal" msgstr "启用 TCP Brutal" -#: htdocs/luci-static/resources/view/fchomo/node.js:657 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "Enable TCP Brutal congestion control algorithm" msgstr "启用 TCP Brutal 拥塞控制算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:645 +#: htdocs/luci-static/resources/view/fchomo/node.js:710 msgid "Enable multiplexing only for TCP." msgstr "仅为 TCP 启用多路复用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:639 +#: htdocs/luci-static/resources/view/fchomo/node.js:704 msgid "Enable padding" msgstr "启用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:650 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 msgid "Enable statistic" msgstr "启用统计" -#: htdocs/luci-static/resources/view/fchomo/node.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 +#: htdocs/luci-static/resources/view/fchomo/node.js:443 +#: htdocs/luci-static/resources/view/fchomo/node.js:931 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" @@ -603,7 +612,7 @@ msgid "" "connections, losing the ability to masquerade with HTTP/3." msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HTTP/3 伪装的能力。" -#: htdocs/luci-static/resources/view/fchomo/global.js:419 +#: htdocs/luci-static/resources/view/fchomo/global.js:430 msgid "Endpoint-Independent NAT" msgstr "端点独立 NAT" @@ -612,7 +621,7 @@ msgstr "端点独立 NAT" msgid "Entry" msgstr "条目" -#: htdocs/luci-static/resources/view/fchomo/global.js:299 +#: htdocs/luci-static/resources/view/fchomo/global.js:310 msgid "Error" msgstr "错误" @@ -623,58 +632,59 @@ msgid "" msgstr "超过此限制将会触发强制健康检查。留空则使用 5。" #: htdocs/luci-static/resources/view/fchomo/client.js:632 -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:1027 msgid "Exclude matched node types." msgstr "排除匹配的节点类型。" #: htdocs/luci-static/resources/view/fchomo/client.js:627 -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:1021 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" #: htdocs/luci-static/resources/view/fchomo/client.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:943 +#: htdocs/luci-static/resources/view/fchomo/node.js:1008 msgid "Expected HTTP code. 204 will be used if empty." msgstr "预期的 HTTP code。留空则使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:945 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "Expected status" msgstr "预期状态" -#: htdocs/luci-static/resources/fchomo.js:556 -#: htdocs/luci-static/resources/fchomo.js:559 -#: htdocs/luci-static/resources/fchomo.js:562 -#: htdocs/luci-static/resources/fchomo.js:643 -#: htdocs/luci-static/resources/fchomo.js:651 -#: htdocs/luci-static/resources/fchomo.js:659 -#: htdocs/luci-static/resources/fchomo.js:683 -#: htdocs/luci-static/resources/fchomo.js:700 -#: htdocs/luci-static/resources/fchomo.js:703 +#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:561 +#: htdocs/luci-static/resources/fchomo.js:564 +#: htdocs/luci-static/resources/fchomo.js:645 +#: htdocs/luci-static/resources/fchomo.js:653 +#: htdocs/luci-static/resources/fchomo.js:661 +#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:702 +#: htdocs/luci-static/resources/fchomo.js:705 #: htdocs/luci-static/resources/fchomo.js:715 -#: htdocs/luci-static/resources/fchomo.js:718 -#: htdocs/luci-static/resources/fchomo.js:720 -#: htdocs/luci-static/resources/fchomo.js:733 -#: htdocs/luci-static/resources/fchomo.js:740 -#: htdocs/luci-static/resources/fchomo.js:749 -#: htdocs/luci-static/resources/fchomo.js:761 -#: htdocs/luci-static/resources/fchomo.js:764 +#: htdocs/luci-static/resources/fchomo.js:725 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:730 +#: htdocs/luci-static/resources/fchomo.js:743 +#: htdocs/luci-static/resources/fchomo.js:750 +#: htdocs/luci-static/resources/fchomo.js:759 +#: htdocs/luci-static/resources/fchomo.js:771 #: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:784 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:472 #: htdocs/luci-static/resources/view/fchomo/client.js:830 -#: htdocs/luci-static/resources/view/fchomo/node.js:456 +#: htdocs/luci-static/resources/view/fchomo/node.js:521 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:213 msgid "Expecting: %s" msgstr "请输入:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:515 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 +#: htdocs/luci-static/resources/view/fchomo/node.js:580 +#: htdocs/luci-static/resources/view/fchomo/node.js:587 msgid "Expecting: only support %s." msgstr "请输入:仅支援 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:548 +#: htdocs/luci-static/resources/view/fchomo/global.js:559 msgid "Experimental" msgstr "实验性" @@ -686,19 +696,19 @@ msgstr "实验性" msgid "Factor" msgstr "条件" -#: htdocs/luci-static/resources/fchomo.js:584 +#: htdocs/luci-static/resources/fchomo.js:586 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "无法执行 \"/etc/init.d/fchomo %s %s\" 原因: %s" -#: htdocs/luci-static/resources/fchomo.js:874 +#: htdocs/luci-static/resources/fchomo.js:884 msgid "Failed to upload %s, error: %s." msgstr "上传 %s 失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:893 +#: htdocs/luci-static/resources/fchomo.js:903 msgid "Failed to upload, error: %s." msgstr "上传失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:120 +#: htdocs/luci-static/resources/fchomo.js:122 msgid "Fallback" msgstr "自动回退" @@ -713,7 +723,7 @@ msgid "Fallback filter" msgstr "後備过滤器" #: htdocs/luci-static/resources/view/fchomo/client.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:951 +#: htdocs/luci-static/resources/view/fchomo/node.js:1016 msgid "Filter nodes that meet keywords or regexps." msgstr "过滤匹配关键字或表达式的节点。" @@ -745,8 +755,8 @@ msgstr "" "noopener\">%s
." #: htdocs/luci-static/resources/view/fchomo/client.js:588 -#: htdocs/luci-static/resources/view/fchomo/node.js:839 -#: htdocs/luci-static/resources/view/fchomo/node.js:944 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "" "For format see %s." @@ -754,7 +764,11 @@ msgstr "" "格式请参阅 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:508 +#: htdocs/luci-static/resources/view/fchomo/node.js:376 +msgid "Force DNS remote resolution." +msgstr "强制 DNS 远程解析。" + +#: htdocs/luci-static/resources/view/fchomo/global.js:519 msgid "Forced sniffing domain" msgstr "强制嗅探域名" @@ -762,31 +776,31 @@ msgstr "强制嗅探域名" msgid "Format" msgstr "格式" -#: htdocs/luci-static/resources/view/fchomo/global.js:123 +#: htdocs/luci-static/resources/view/fchomo/global.js:127 #: htdocs/luci-static/resources/view/fchomo/log.js:97 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:3 msgid "FullCombo Mihomo" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:541 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:271 +#: htdocs/luci-static/resources/view/fchomo/global.js:282 msgid "GFW list version" msgstr "GFW 域名列表版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:279 +#: htdocs/luci-static/resources/view/fchomo/global.js:290 msgid "General" msgstr "常规" #: htdocs/luci-static/resources/view/fchomo/client.js:463 #: htdocs/luci-static/resources/view/fchomo/node.js:40 -#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:801 msgid "General fields" msgstr "常规字段" -#: htdocs/luci-static/resources/view/fchomo/global.js:282 +#: htdocs/luci-static/resources/view/fchomo/global.js:293 msgid "General settings" msgstr "常规设置" @@ -803,15 +817,15 @@ msgstr "常规设置" msgid "Generate" msgstr "生成" -#: htdocs/luci-static/resources/view/fchomo/global.js:407 +#: htdocs/luci-static/resources/view/fchomo/global.js:418 msgid "Generic segmentation offload" msgstr "通用分段卸载(GSO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:256 +#: htdocs/luci-static/resources/view/fchomo/global.js:267 msgid "GeoIP version" msgstr "GeoIP 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:259 +#: htdocs/luci-static/resources/view/fchomo/global.js:270 msgid "GeoSite version" msgstr "GeoSite 版本" @@ -829,20 +843,20 @@ msgstr "Geoip 启用" msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:48 +#: htdocs/luci-static/resources/fchomo.js:50 msgid "GitHub" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:288 +#: htdocs/luci-static/resources/view/fchomo/global.js:299 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:14 msgid "Global" msgstr "全局" -#: htdocs/luci-static/resources/view/fchomo/global.js:328 +#: htdocs/luci-static/resources/view/fchomo/global.js:339 msgid "Global Authentication" msgstr "全局认证" -#: htdocs/luci-static/resources/view/fchomo/global.js:431 +#: htdocs/luci-static/resources/view/fchomo/global.js:442 msgid "Global client fingerprint" msgstr "全局客户端指纹" @@ -850,7 +864,7 @@ msgstr "全局客户端指纹" msgid "Global padding" msgstr "全局填充" -#: htdocs/luci-static/resources/fchomo.js:47 +#: htdocs/luci-static/resources/fchomo.js:49 msgid "Google" msgstr "谷歌" @@ -862,21 +876,21 @@ msgstr "授予 fchomo 访问 UCI 配置的权限" msgid "Group" msgstr "组" -#: htdocs/luci-static/resources/fchomo.js:58 -#: htdocs/luci-static/resources/fchomo.js:85 -#: htdocs/luci-static/resources/view/fchomo/node.js:332 -#: htdocs/luci-static/resources/view/fchomo/node.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:515 +#: htdocs/luci-static/resources/fchomo.js:60 +#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/view/fchomo/node.js:397 +#: htdocs/luci-static/resources/view/fchomo/node.js:569 +#: htdocs/luci-static/resources/view/fchomo/node.js:580 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:84 -#: htdocs/luci-static/resources/view/fchomo/node.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:814 +#: htdocs/luci-static/resources/view/fchomo/node.js:628 +#: htdocs/luci-static/resources/view/fchomo/node.js:879 msgid "HTTP header" msgstr "HTTP header" -#: htdocs/luci-static/resources/view/fchomo/node.js:540 +#: htdocs/luci-static/resources/view/fchomo/node.js:605 msgid "HTTP request method" msgstr "HTTP 请求方法" @@ -890,37 +904,37 @@ msgid "" "returned if empty." msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面。" -#: htdocs/luci-static/resources/view/fchomo/node.js:505 -#: htdocs/luci-static/resources/view/fchomo/node.js:516 +#: htdocs/luci-static/resources/view/fchomo/node.js:570 +#: htdocs/luci-static/resources/view/fchomo/node.js:581 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:666 +#: htdocs/luci-static/resources/view/fchomo/global.js:677 msgid "Handle domain" msgstr "处理域名" #: htdocs/luci-static/resources/view/fchomo/client.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:916 +#: htdocs/luci-static/resources/view/fchomo/node.js:981 msgid "Health check URL" msgstr "健康检查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:586 -#: htdocs/luci-static/resources/view/fchomo/node.js:942 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Health check expected status" msgstr "健康检查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:566 -#: htdocs/luci-static/resources/view/fchomo/node.js:925 +#: htdocs/luci-static/resources/view/fchomo/node.js:990 msgid "Health check interval" msgstr "健康检查间隔" #: htdocs/luci-static/resources/view/fchomo/client.js:573 -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:996 msgid "Health check timeout" msgstr "健康检查超时" #: htdocs/luci-static/resources/view/fchomo/client.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:738 +#: htdocs/luci-static/resources/view/fchomo/node.js:803 msgid "Health fields" msgstr "健康字段" @@ -928,7 +942,7 @@ msgstr "健康字段" msgid "Heartbeat interval" msgstr "心跳间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:338 +#: htdocs/luci-static/resources/view/fchomo/node.js:403 msgid "Host that supports TLS 1.3" msgstr "主机名称 (支援 TLS 1.3)" @@ -945,8 +959,8 @@ msgstr "主机密钥算法" msgid "Hosts" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:64 -#: htdocs/luci-static/resources/fchomo.js:94 +#: htdocs/luci-static/resources/fchomo.js:66 +#: htdocs/luci-static/resources/fchomo.js:96 msgid "Hysteria2" msgstr "" @@ -963,21 +977,21 @@ msgstr "" msgid "IP override" msgstr "IP 覆写" -#: htdocs/luci-static/resources/view/fchomo/node.js:700 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:765 +#: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/fchomo.js:71 +#: htdocs/luci-static/resources/fchomo.js:73 msgid "IPv4 only" msgstr "仅 IPv4" -#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:74 msgid "IPv6 only" msgstr "仅 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:753 -#: htdocs/luci-static/resources/view/fchomo/global.js:308 +#: htdocs/luci-static/resources/view/fchomo/global.js:319 msgid "IPv6 support" msgstr "IPv6 支持" @@ -1005,8 +1019,8 @@ msgstr "导入 rule-set 链接" #: htdocs/luci-static/resources/view/fchomo/node.js:104 #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/node.js:871 -#: htdocs/luci-static/resources/view/fchomo/node.js:876 +#: htdocs/luci-static/resources/view/fchomo/node.js:936 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 #: htdocs/luci-static/resources/view/fchomo/server.js:159 #: htdocs/luci-static/resources/view/fchomo/server.js:165 msgid "In Mbps." @@ -1019,7 +1033,7 @@ msgstr "单位为毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:574 #: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/node.js:932 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" @@ -1029,16 +1043,16 @@ msgid "In seconds." msgstr "单位为秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:567 -#: htdocs/luci-static/resources/view/fchomo/global.js:318 -#: htdocs/luci-static/resources/view/fchomo/global.js:323 -#: htdocs/luci-static/resources/view/fchomo/global.js:415 -#: htdocs/luci-static/resources/view/fchomo/node.js:798 -#: htdocs/luci-static/resources/view/fchomo/node.js:926 +#: htdocs/luci-static/resources/view/fchomo/global.js:329 +#: htdocs/luci-static/resources/view/fchomo/global.js:334 +#: htdocs/luci-static/resources/view/fchomo/global.js:426 +#: htdocs/luci-static/resources/view/fchomo/node.js:863 +#: htdocs/luci-static/resources/view/fchomo/node.js:991 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/global.js:342 +#: htdocs/luci-static/resources/view/fchomo/global.js:353 msgid "Inbound" msgstr "入站" @@ -1066,15 +1080,15 @@ msgstr "引入所有代理节点及供应商。" msgid "Includes all Proxy Node." msgstr "引入所有代理节点。" -#: htdocs/luci-static/resources/view/fchomo/global.js:301 +#: htdocs/luci-static/resources/view/fchomo/global.js:312 msgid "Info" msgstr "信息" -#: htdocs/luci-static/resources/view/fchomo/global.js:572 +#: htdocs/luci-static/resources/view/fchomo/global.js:583 msgid "Interface Control" msgstr "接口控制" -#: htdocs/luci-static/resources/fchomo.js:69 +#: htdocs/luci-static/resources/fchomo.js:71 msgid "Keep default" msgstr "保持缺省" @@ -1088,14 +1102,14 @@ msgstr "证书路径" #: htdocs/luci-static/resources/view/fchomo/client.js:810 #: htdocs/luci-static/resources/view/fchomo/client.js:951 #: htdocs/luci-static/resources/view/fchomo/node.js:46 -#: htdocs/luci-static/resources/view/fchomo/node.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:806 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:176 #: htdocs/luci-static/resources/view/fchomo/server.js:103 msgid "Label" msgstr "标签" #: htdocs/luci-static/resources/view/fchomo/client.js:580 -#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:1002 msgid "Lazy" msgstr "懒惰状态" @@ -1107,11 +1121,11 @@ msgstr "" "提供旧协议支持(VMess MD5 身份验证)仅出于兼容性目的,不建议使用 alterId > " "1。" -#: htdocs/luci-static/resources/view/fchomo/global.js:400 +#: htdocs/luci-static/resources/view/fchomo/global.js:411 msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" -#: htdocs/luci-static/resources/view/fchomo/node.js:446 +#: htdocs/luci-static/resources/view/fchomo/node.js:511 #: htdocs/luci-static/resources/view/fchomo/server.js:332 msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" @@ -1120,7 +1134,7 @@ msgstr "支持的应用层协议协商列表,按顺序排列。" msgid "Listen address" msgstr "监听地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:574 +#: htdocs/luci-static/resources/view/fchomo/global.js:585 msgid "Listen interfaces" msgstr "监听接口" @@ -1129,19 +1143,27 @@ msgstr "监听接口" msgid "Listen port" msgstr "监听端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:345 +#: htdocs/luci-static/resources/view/fchomo/global.js:356 msgid "Listen ports" msgstr "监听端口" -#: htdocs/luci-static/resources/fchomo.js:122 +#: htdocs/luci-static/resources/fchomo.js:124 msgid "Load balance" msgstr "负载均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:816 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:186 msgid "Local" msgstr "本地" +#: htdocs/luci-static/resources/view/fchomo/node.js:329 +msgid "Local IPv6 address" +msgstr "本地 IPv6 地址" + +#: htdocs/luci-static/resources/view/fchomo/node.js:322 +msgid "Local address" +msgstr "本地地址" + #: root/usr/share/luci/menu.d/luci-app-fchomo.json:62 msgid "Log" msgstr "日志" @@ -1154,15 +1176,16 @@ msgstr "日志文件不存在。" msgid "Log is empty." msgstr "日志为空。" -#: htdocs/luci-static/resources/view/fchomo/global.js:297 +#: htdocs/luci-static/resources/view/fchomo/global.js:308 msgid "Log level" msgstr "日志等级" -#: htdocs/luci-static/resources/fchomo.js:556 +#: htdocs/luci-static/resources/fchomo.js:558 msgid "Lowercase only" msgstr "仅限小写" -#: htdocs/luci-static/resources/view/fchomo/global.js:403 +#: htdocs/luci-static/resources/view/fchomo/global.js:414 +#: htdocs/luci-static/resources/view/fchomo/node.js:369 msgid "MTU" msgstr "" @@ -1198,7 +1221,7 @@ msgstr "匹配响应通过 ipcidr
" msgid "Match rule set." msgstr "匹配规则集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:580 +#: htdocs/luci-static/resources/view/fchomo/node.js:645 msgid "Max Early Data" msgstr "前置数据最大值" @@ -1221,12 +1244,12 @@ msgstr "最大下载速度" msgid "Max upload speed" msgstr "最大上传速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:617 -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:682 +#: htdocs/luci-static/resources/view/fchomo/node.js:698 msgid "Maximum connections" msgstr "最大连接数" -#: htdocs/luci-static/resources/view/fchomo/node.js:631 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1234,7 +1257,7 @@ msgstr "" "在打开新连接之前,连接中的最大多路复用流数量。
%s 和 " "%s 冲突。" -#: htdocs/luci-static/resources/view/fchomo/node.js:630 +#: htdocs/luci-static/resources/view/fchomo/node.js:695 msgid "Maximum streams" msgstr "最大流数量" @@ -1248,30 +1271,30 @@ msgstr "Mihomo 客户端" msgid "Mihomo server" msgstr "Mihomo 服务端" -#: htdocs/luci-static/resources/view/fchomo/node.js:624 +#: htdocs/luci-static/resources/view/fchomo/node.js:689 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在打开新连接之前,连接中的最小多路复用流数量。" -#: htdocs/luci-static/resources/view/fchomo/node.js:623 -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:688 +#: htdocs/luci-static/resources/view/fchomo/node.js:698 msgid "Minimum streams" msgstr "最小流数量" -#: htdocs/luci-static/resources/fchomo.js:60 -#: htdocs/luci-static/resources/view/fchomo/global.js:389 +#: htdocs/luci-static/resources/fchomo.js:62 +#: htdocs/luci-static/resources/view/fchomo/global.js:400 msgid "Mixed" msgstr "混合" -#: htdocs/luci-static/resources/view/fchomo/global.js:396 +#: htdocs/luci-static/resources/view/fchomo/global.js:407 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。" -#: htdocs/luci-static/resources/view/fchomo/global.js:348 +#: htdocs/luci-static/resources/view/fchomo/global.js:359 msgid "Mixed port" msgstr "混合端口" -#: htdocs/luci-static/resources/view/fchomo/node.js:603 +#: htdocs/luci-static/resources/view/fchomo/node.js:668 msgid "Multiplex" msgstr "多路复用" @@ -1279,7 +1302,7 @@ msgstr "多路复用" msgid "Multiplex fields" msgstr "多路复用字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:804 +#: htdocs/luci-static/resources/view/fchomo/node.js:869 msgid "Name of the Proxy group to download provider." msgstr "用于下载供应商订阅的策略组名称。" @@ -1291,7 +1314,7 @@ msgstr "用于下载规则集订阅的策略组名称。" msgid "Native" msgstr "原生" -#: htdocs/luci-static/resources/view/fchomo/global.js:336 +#: htdocs/luci-static/resources/view/fchomo/global.js:347 msgid "No Authentication IP ranges" msgstr "无需认证的 IP 范围" @@ -1300,7 +1323,7 @@ msgid "No add'l params" msgstr "无附加参数" #: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:938 +#: htdocs/luci-static/resources/view/fchomo/node.js:1003 msgid "No testing is performed when this provider node is not in use." msgstr "当此供应商的节点未使用时,不执行任何测试。" @@ -1315,17 +1338,17 @@ msgid "Node" msgstr "节点" #: htdocs/luci-static/resources/view/fchomo/client.js:626 -#: htdocs/luci-static/resources/view/fchomo/node.js:955 +#: htdocs/luci-static/resources/view/fchomo/node.js:1020 msgid "Node exclude filter" msgstr "排除节点" #: htdocs/luci-static/resources/view/fchomo/client.js:631 -#: htdocs/luci-static/resources/view/fchomo/node.js:961 +#: htdocs/luci-static/resources/view/fchomo/node.js:1026 msgid "Node exclude type" msgstr "排除节点类型" #: htdocs/luci-static/resources/view/fchomo/client.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:950 +#: htdocs/luci-static/resources/view/fchomo/node.js:1015 msgid "Node filter" msgstr "过滤节点" @@ -1337,15 +1360,15 @@ msgstr "节点切换容差" msgid "None" msgstr "无" -#: htdocs/luci-static/resources/view/fchomo/global.js:462 +#: htdocs/luci-static/resources/view/fchomo/global.js:473 msgid "Not Installed" msgstr "未安装" -#: htdocs/luci-static/resources/fchomo.js:490 +#: htdocs/luci-static/resources/fchomo.js:492 msgid "Not Running" msgstr "未在运行" -#: htdocs/luci-static/resources/view/fchomo/node.js:331 +#: htdocs/luci-static/resources/view/fchomo/node.js:396 msgid "Obfs Mode" msgstr "Obfs 模式" @@ -1359,15 +1382,15 @@ msgstr "混淆密码" msgid "Obfuscate type" msgstr "混淆类型" -#: htdocs/luci-static/resources/view/fchomo/global.js:575 +#: htdocs/luci-static/resources/view/fchomo/global.js:586 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:484 +#: htdocs/luci-static/resources/fchomo.js:486 msgid "Open Dashboard" msgstr "打开面板" -#: htdocs/luci-static/resources/view/fchomo/global.js:285 +#: htdocs/luci-static/resources/view/fchomo/global.js:296 msgid "Operation mode" msgstr "运行模式" @@ -1375,13 +1398,13 @@ msgstr "运行模式" msgid "Override ECS in original request." msgstr "覆盖原始请求中的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/global.js:504 -#: htdocs/luci-static/resources/view/fchomo/global.js:542 +#: htdocs/luci-static/resources/view/fchomo/global.js:515 +#: htdocs/luci-static/resources/view/fchomo/global.js:553 msgid "Override destination" msgstr "覆盖目标地址" #: htdocs/luci-static/resources/view/fchomo/client.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:737 +#: htdocs/luci-static/resources/view/fchomo/node.js:802 msgid "Override fields" msgstr "覆盖字段" @@ -1393,19 +1416,19 @@ msgstr "覆盖 DNS 回应的服务器的 IP 地址。" msgid "Override the Proxy group of DNS server." msgstr "覆盖 DNS 服务器所使用的策略组。" -#: htdocs/luci-static/resources/view/fchomo/global.js:505 +#: htdocs/luci-static/resources/view/fchomo/global.js:516 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的域名覆盖连接目标。" -#: htdocs/luci-static/resources/view/fchomo/global.js:129 +#: htdocs/luci-static/resources/view/fchomo/global.js:133 msgid "Overview" msgstr "概览" -#: htdocs/luci-static/resources/view/fchomo/node.js:542 +#: htdocs/luci-static/resources/view/fchomo/node.js:607 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:543 +#: htdocs/luci-static/resources/view/fchomo/node.js:608 msgid "PUT" msgstr "" @@ -1415,13 +1438,17 @@ msgstr "数据包编码" #: htdocs/luci-static/resources/view/fchomo/node.js:78 #: htdocs/luci-static/resources/view/fchomo/node.js:158 -#: htdocs/luci-static/resources/view/fchomo/node.js:345 +#: htdocs/luci-static/resources/view/fchomo/node.js:410 #: htdocs/luci-static/resources/view/fchomo/server.js:138 #: htdocs/luci-static/resources/view/fchomo/server.js:216 msgid "Password" msgstr "密码" -#: htdocs/luci-static/resources/view/fchomo/global.js:420 +#: htdocs/luci-static/resources/view/fchomo/node.js:343 +msgid "Peer pubkic key" +msgstr "对端公钥" + +#: htdocs/luci-static/resources/view/fchomo/global.js:431 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1437,7 +1464,7 @@ msgid "" "standards." msgstr "链接格式标准请参考
%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:771 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:234 msgid "" "Please type %s%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:322 +#: htdocs/luci-static/resources/view/fchomo/node.js:387 msgid "Plugin" msgstr "插件" -#: htdocs/luci-static/resources/view/fchomo/node.js:331 -#: htdocs/luci-static/resources/view/fchomo/node.js:338 -#: htdocs/luci-static/resources/view/fchomo/node.js:345 -#: htdocs/luci-static/resources/view/fchomo/node.js:351 -#: htdocs/luci-static/resources/view/fchomo/node.js:359 -#: htdocs/luci-static/resources/view/fchomo/node.js:365 +#: htdocs/luci-static/resources/view/fchomo/node.js:396 +#: htdocs/luci-static/resources/view/fchomo/node.js:403 +#: htdocs/luci-static/resources/view/fchomo/node.js:410 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 +#: htdocs/luci-static/resources/view/fchomo/node.js:424 +#: htdocs/luci-static/resources/view/fchomo/node.js:430 msgid "Plugin:" msgstr "插件:" @@ -1462,11 +1489,11 @@ msgstr "插件:" msgid "Port" msgstr "端口" -#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:687 msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" -#: htdocs/luci-static/resources/view/fchomo/global.js:539 +#: htdocs/luci-static/resources/view/fchomo/global.js:550 msgid "Ports" msgstr "端口" @@ -1475,25 +1502,26 @@ msgid "Ports pool" msgstr "端口池" #: htdocs/luci-static/resources/view/fchomo/node.js:168 +#: htdocs/luci-static/resources/view/fchomo/node.js:350 msgid "Pre-shared key" msgstr "预共享密钥" -#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:75 msgid "Prefer IPv4" msgstr "优先 IPv4" -#: htdocs/luci-static/resources/fchomo.js:74 +#: htdocs/luci-static/resources/fchomo.js:76 msgid "Prefer IPv6" msgstr "优先 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:545 #: htdocs/luci-static/resources/view/fchomo/client.js:551 -#: htdocs/luci-static/resources/view/fchomo/global.js:581 -#: htdocs/luci-static/resources/view/fchomo/global.js:598 -#: htdocs/luci-static/resources/view/fchomo/node.js:690 -#: htdocs/luci-static/resources/view/fchomo/node.js:696 -#: htdocs/luci-static/resources/view/fchomo/node.js:894 -#: htdocs/luci-static/resources/view/fchomo/node.js:900 +#: htdocs/luci-static/resources/view/fchomo/global.js:592 +#: htdocs/luci-static/resources/view/fchomo/global.js:609 +#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:761 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 +#: htdocs/luci-static/resources/view/fchomo/node.js:965 msgid "Priority: Proxy Node > Proxy Group > Global." msgstr "优先级: 代理节点 > 策略组 > 全局。" @@ -1505,12 +1533,16 @@ msgstr "密钥" msgid "Priv-key passphrase" msgstr "密钥密码" -#: htdocs/luci-static/resources/view/fchomo/global.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:335 +msgid "Private key" +msgstr "私钥" + +#: htdocs/luci-static/resources/view/fchomo/global.js:302 msgid "Process matching mode" msgstr "进程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:533 -#: htdocs/luci-static/resources/view/fchomo/node.js:609 +#: htdocs/luci-static/resources/view/fchomo/global.js:544 +#: htdocs/luci-static/resources/view/fchomo/node.js:674 msgid "Protocol" msgstr "协议" @@ -1525,12 +1557,12 @@ msgid "" msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:509 -#: htdocs/luci-static/resources/view/fchomo/node.js:709 -#: htdocs/luci-static/resources/view/fchomo/node.js:719 +#: htdocs/luci-static/resources/view/fchomo/node.js:774 +#: htdocs/luci-static/resources/view/fchomo/node.js:784 msgid "Provider" msgstr "供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:791 +#: htdocs/luci-static/resources/view/fchomo/node.js:856 msgid "Provider URL" msgstr "供应商订阅 URL" @@ -1539,15 +1571,15 @@ msgstr "供应商订阅 URL" msgid "Proxy Group" msgstr "策略组" -#: htdocs/luci-static/resources/view/fchomo/global.js:631 +#: htdocs/luci-static/resources/view/fchomo/global.js:642 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:634 +#: htdocs/luci-static/resources/view/fchomo/global.js:645 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:637 +#: htdocs/luci-static/resources/view/fchomo/global.js:648 msgid "Proxy MAC-s" msgstr "代理 MAC 地址" @@ -1558,16 +1590,16 @@ msgstr "代理节点" #: htdocs/luci-static/resources/view/fchomo/client.js:354 #: htdocs/luci-static/resources/view/fchomo/client.js:867 #: htdocs/luci-static/resources/view/fchomo/client.js:999 -#: htdocs/luci-static/resources/view/fchomo/node.js:803 +#: htdocs/luci-static/resources/view/fchomo/node.js:868 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:266 msgid "Proxy group" msgstr "策略组" -#: htdocs/luci-static/resources/view/fchomo/global.js:368 +#: htdocs/luci-static/resources/view/fchomo/global.js:379 msgid "Proxy mode" msgstr "代理模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:640 +#: htdocs/luci-static/resources/view/fchomo/global.js:651 msgid "Proxy routerself" msgstr "代理路由器自身" @@ -1585,35 +1617,35 @@ msgstr "QUIC 拥塞控制器。" msgid "Quick Reload" msgstr "快速重载" -#: htdocs/luci-static/resources/view/fchomo/node.js:481 +#: htdocs/luci-static/resources/view/fchomo/node.js:546 msgid "REALITY" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:486 +#: htdocs/luci-static/resources/view/fchomo/node.js:551 msgid "REALITY public key" msgstr "REALITY 公钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:491 +#: htdocs/luci-static/resources/view/fchomo/node.js:556 msgid "REALITY short ID" msgstr "REALITY 标识符" -#: htdocs/luci-static/resources/view/fchomo/global.js:493 +#: htdocs/luci-static/resources/view/fchomo/global.js:504 msgid "Random will be used if empty." msgstr "留空将使用随机令牌。" -#: htdocs/luci-static/resources/view/fchomo/global.js:353 +#: htdocs/luci-static/resources/view/fchomo/global.js:364 msgid "Redir port" msgstr "Redir 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:369 +#: htdocs/luci-static/resources/view/fchomo/global.js:380 msgid "Redirect TCP" msgstr "Redirect TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:371 +#: htdocs/luci-static/resources/view/fchomo/global.js:382 msgid "Redirect TCP + TProxy UDP" msgstr "Redirect TCP + TProxy UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:373 +#: htdocs/luci-static/resources/view/fchomo/global.js:384 msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" @@ -1621,44 +1653,48 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:477 +#: htdocs/luci-static/resources/fchomo.js:479 #: htdocs/luci-static/resources/view/fchomo/client.js:443 -#: htdocs/luci-static/resources/view/fchomo/global.js:162 +#: htdocs/luci-static/resources/view/fchomo/global.js:166 #: htdocs/luci-static/resources/view/fchomo/server.js:80 msgid "Reload" msgstr "重载" -#: htdocs/luci-static/resources/view/fchomo/global.js:161 +#: htdocs/luci-static/resources/view/fchomo/global.js:165 msgid "Reload All" msgstr "重载所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:752 +#: htdocs/luci-static/resources/view/fchomo/node.js:817 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:187 msgid "Remote" msgstr "远程" -#: htdocs/luci-static/resources/fchomo.js:615 +#: htdocs/luci-static/resources/view/fchomo/node.js:375 +msgid "Remote DNS resolve" +msgstr "远程 DNS 解析" + +#: htdocs/luci-static/resources/fchomo.js:617 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:620 -#: htdocs/luci-static/resources/view/fchomo/node.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:729 +#: htdocs/luci-static/resources/fchomo.js:622 +#: htdocs/luci-static/resources/view/fchomo/node.js:792 +#: htdocs/luci-static/resources/view/fchomo/node.js:794 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:167 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:169 msgid "Remove idles" msgstr "移除闲置" -#: htdocs/luci-static/resources/view/fchomo/node.js:837 +#: htdocs/luci-static/resources/view/fchomo/node.js:902 msgid "Replace name" msgstr "名称替换" -#: htdocs/luci-static/resources/view/fchomo/node.js:838 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Replace node name." msgstr "替换节点名称" -#: htdocs/luci-static/resources/view/fchomo/node.js:549 -#: htdocs/luci-static/resources/view/fchomo/node.js:556 +#: htdocs/luci-static/resources/view/fchomo/node.js:614 +#: htdocs/luci-static/resources/view/fchomo/node.js:621 msgid "Request path" msgstr "请求路径" @@ -1666,43 +1702,47 @@ msgstr "请求路径" msgid "Request timeout" msgstr "请求超时" -#: htdocs/luci-static/resources/view/fchomo/global.js:198 +#: htdocs/luci-static/resources/view/fchomo/node.js:364 +msgid "Reserved field bytes" +msgstr "保留字段字节" + +#: htdocs/luci-static/resources/view/fchomo/global.js:202 msgid "Resources management" msgstr "资源管理" -#: htdocs/luci-static/resources/view/fchomo/node.js:365 +#: htdocs/luci-static/resources/view/fchomo/node.js:430 msgid "Restls script" msgstr "Restls 剧本" -#: htdocs/luci-static/resources/view/fchomo/global.js:644 +#: htdocs/luci-static/resources/view/fchomo/global.js:655 msgid "Routing Control" msgstr "路由控制" -#: htdocs/luci-static/resources/view/fchomo/global.js:664 +#: htdocs/luci-static/resources/view/fchomo/global.js:675 msgid "Routing GFW" msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/view/fchomo/client.js:550 -#: htdocs/luci-static/resources/view/fchomo/global.js:597 -#: htdocs/luci-static/resources/view/fchomo/node.js:695 -#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/global.js:608 +#: htdocs/luci-static/resources/view/fchomo/node.js:760 +#: htdocs/luci-static/resources/view/fchomo/node.js:964 msgid "Routing mark" msgstr "路由标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:660 +#: htdocs/luci-static/resources/view/fchomo/global.js:671 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:661 +#: htdocs/luci-static/resources/view/fchomo/global.js:672 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "流量通过防火墙规则进入 mihomo 的路由模式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:667 +#: htdocs/luci-static/resources/view/fchomo/global.js:678 msgid "Routing mode will be handle domain." msgstr "路由模式将处理域名。" -#: htdocs/luci-static/resources/view/fchomo/global.js:646 -#: htdocs/luci-static/resources/view/fchomo/global.js:653 +#: htdocs/luci-static/resources/view/fchomo/global.js:657 +#: htdocs/luci-static/resources/view/fchomo/global.js:664 msgid "Routing ports" msgstr "路由端口" @@ -1711,15 +1751,15 @@ msgstr "路由端口" msgid "Routing rule" msgstr "路由规则" -#: htdocs/luci-static/resources/view/fchomo/global.js:591 +#: htdocs/luci-static/resources/view/fchomo/global.js:602 msgid "Routing rule priority" msgstr "路由规则优先权" -#: htdocs/luci-static/resources/view/fchomo/global.js:585 +#: htdocs/luci-static/resources/view/fchomo/global.js:596 msgid "Routing table ID" msgstr "路由表 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:287 +#: htdocs/luci-static/resources/view/fchomo/global.js:298 msgid "Rule" msgstr "规则" @@ -1741,19 +1781,19 @@ msgstr "规则集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:490 +#: htdocs/luci-static/resources/fchomo.js:492 msgid "Running" msgstr "正在运行" -#: htdocs/luci-static/resources/fchomo.js:59 +#: htdocs/luci-static/resources/fchomo.js:61 msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:86 +#: htdocs/luci-static/resources/fchomo.js:88 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:97 +#: htdocs/luci-static/resources/fchomo.js:99 msgid "SSH" msgstr "" @@ -1761,7 +1801,7 @@ msgstr "" msgid "SUB-RULE" msgstr "SUB-RULE" -#: htdocs/luci-static/resources/view/fchomo/node.js:383 +#: htdocs/luci-static/resources/view/fchomo/node.js:448 msgid "SUoT version" msgstr "SUoT 版本" @@ -1770,23 +1810,23 @@ msgstr "SUoT 版本" msgid "Salamander" msgstr "Salamander" -#: htdocs/luci-static/resources/fchomo.js:79 +#: htdocs/luci-static/resources/fchomo.js:81 msgid "Same dstaddr requests. Same node" msgstr "相同 目标地址 请求。相同节点" -#: htdocs/luci-static/resources/fchomo.js:80 +#: htdocs/luci-static/resources/fchomo.js:82 msgid "Same srcaddr and dstaddr requests. Same node" msgstr "相同 来源地址 和 目标地址 请求。相同节点" -#: htdocs/luci-static/resources/view/fchomo/global.js:410 +#: htdocs/luci-static/resources/view/fchomo/global.js:421 msgid "Segment maximum size" msgstr "分段最大尺寸" -#: htdocs/luci-static/resources/fchomo.js:119 +#: htdocs/luci-static/resources/fchomo.js:121 msgid "Select" msgstr "手动选择" -#: htdocs/luci-static/resources/view/fchomo/global.js:453 +#: htdocs/luci-static/resources/view/fchomo/global.js:464 msgid "Select Dashboard" msgstr "选择面板" @@ -1799,20 +1839,20 @@ msgstr "服务端" msgid "Server address" msgstr "服务器地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:599 msgid "Server hostname" msgstr "服务器主机名称" -#: htdocs/luci-static/resources/view/fchomo/global.js:153 +#: htdocs/luci-static/resources/view/fchomo/global.js:157 msgid "Server status" msgstr "服务端状态" -#: htdocs/luci-static/resources/view/fchomo/global.js:132 +#: htdocs/luci-static/resources/view/fchomo/global.js:136 msgid "Service status" msgstr "服务状态" -#: htdocs/luci-static/resources/fchomo.js:61 -#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/fchomo.js:63 +#: htdocs/luci-static/resources/fchomo.js:89 msgid "Shadowsocks" msgstr "" @@ -1828,59 +1868,59 @@ msgstr "Shadowsocks 加密" msgid "Shadowsocks password" msgstr "Shadowsocks 密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:651 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中显示连接以便于打断连接。" -#: htdocs/luci-static/resources/view/fchomo/global.js:298 +#: htdocs/luci-static/resources/view/fchomo/global.js:309 msgid "Silent" msgstr "静音" -#: htdocs/luci-static/resources/fchomo.js:78 +#: htdocs/luci-static/resources/fchomo.js:80 msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:463 -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:528 +#: htdocs/luci-static/resources/view/fchomo/node.js:945 msgid "Skip cert verify" msgstr "跳过证书验证" -#: htdocs/luci-static/resources/view/fchomo/global.js:511 +#: htdocs/luci-static/resources/view/fchomo/global.js:522 msgid "Skiped sniffing domain" msgstr "跳过嗅探域名" -#: htdocs/luci-static/resources/view/fchomo/global.js:517 +#: htdocs/luci-static/resources/view/fchomo/global.js:528 msgid "Skiped sniffing dst address" msgstr "跳过嗅探目标地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:514 +#: htdocs/luci-static/resources/view/fchomo/global.js:525 msgid "Skiped sniffing src address" msgstr "跳过嗅探来源地址" -#: htdocs/luci-static/resources/fchomo.js:89 +#: htdocs/luci-static/resources/fchomo.js:91 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:521 +#: htdocs/luci-static/resources/view/fchomo/global.js:532 msgid "Sniff protocol" msgstr "嗅探协议" -#: htdocs/luci-static/resources/view/fchomo/global.js:498 +#: htdocs/luci-static/resources/view/fchomo/global.js:509 msgid "Sniffer" msgstr "嗅探器" -#: htdocs/luci-static/resources/view/fchomo/global.js:501 +#: htdocs/luci-static/resources/view/fchomo/global.js:512 msgid "Sniffer settings" msgstr "嗅探器设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:647 -#: htdocs/luci-static/resources/view/fchomo/global.js:654 +#: htdocs/luci-static/resources/view/fchomo/global.js:658 +#: htdocs/luci-static/resources/view/fchomo/global.js:665 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开。" -#: htdocs/luci-static/resources/view/fchomo/global.js:384 +#: htdocs/luci-static/resources/view/fchomo/global.js:395 msgid "Stack" msgstr "堆栈" @@ -1907,7 +1947,7 @@ msgstr "已成功导入 %s 个规则集 (共 %s 个)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:890 +#: htdocs/luci-static/resources/fchomo.js:900 msgid "Successfully uploaded." msgstr "已成功上传。" @@ -1919,7 +1959,7 @@ msgstr "" "支持规则集类型为: file, http 并且格式为: text, yaml, mrs 的规则集链接。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:386 +#: htdocs/luci-static/resources/view/fchomo/global.js:397 msgid "System" msgstr "系统" @@ -1931,40 +1971,40 @@ msgstr "系统 DNS" msgid "TCP" msgstr "TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:314 +#: htdocs/luci-static/resources/view/fchomo/global.js:325 msgid "TCP concurrency" msgstr "TCP 并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:644 +#: htdocs/luci-static/resources/view/fchomo/node.js:709 msgid "TCP only" msgstr "仅 TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:322 +#: htdocs/luci-static/resources/view/fchomo/global.js:333 msgid "TCP-Keep-Alive idle timeout" msgstr "TCP-Keep-Alive 闲置超时" -#: htdocs/luci-static/resources/view/fchomo/global.js:317 +#: htdocs/luci-static/resources/view/fchomo/global.js:328 msgid "TCP-Keep-Alive interval" msgstr "TCP-Keep-Alive 间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:675 -#: htdocs/luci-static/resources/view/fchomo/node.js:853 +#: htdocs/luci-static/resources/view/fchomo/node.js:740 +#: htdocs/luci-static/resources/view/fchomo/node.js:918 msgid "TFO" msgstr "TCP 快速打开 (TFO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:425 -#: htdocs/luci-static/resources/view/fchomo/node.js:333 -#: htdocs/luci-static/resources/view/fchomo/node.js:391 +#: htdocs/luci-static/resources/view/fchomo/global.js:436 +#: htdocs/luci-static/resources/view/fchomo/node.js:398 +#: htdocs/luci-static/resources/view/fchomo/node.js:456 #: htdocs/luci-static/resources/view/fchomo/server.js:309 msgid "TLS" msgstr "TLS" -#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:510 #: htdocs/luci-static/resources/view/fchomo/server.js:331 msgid "TLS ALPN" msgstr "TLS ALPN" -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "TLS SNI" msgstr "" @@ -1972,8 +2012,8 @@ msgstr "" msgid "TLS fields" msgstr "TLS字段" -#: htdocs/luci-static/resources/fchomo.js:63 -#: htdocs/luci-static/resources/fchomo.js:95 +#: htdocs/luci-static/resources/fchomo.js:65 +#: htdocs/luci-static/resources/fchomo.js:97 msgid "TUIC" msgstr "" @@ -1982,7 +2022,12 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "让客户端使用 BBR 流控算法。" -#: htdocs/luci-static/resources/view/fchomo/global.js:215 +#: htdocs/luci-static/resources/view/fchomo/node.js:323 +#: htdocs/luci-static/resources/view/fchomo/node.js:330 +msgid "The %s address used by local machine in the Wireguard network." +msgstr "WireGuard 网络中使用的本机 %s 地址。" + +#: htdocs/luci-static/resources/view/fchomo/global.js:226 msgid "The default value is 2:00 every day." msgstr "默认值为每天 2:00。" @@ -2004,8 +2049,8 @@ msgstr "服务端私钥,需要 PEM 格式。" msgid "The server public key, in PEM format." msgstr "服务端公钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:466 -#: htdocs/luci-static/resources/view/fchomo/node.js:883 +#: htdocs/luci-static/resources/view/fchomo/node.js:531 +#: htdocs/luci-static/resources/view/fchomo/node.js:948 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2020,26 +2065,26 @@ msgstr "" "这是 TUIC 的 SUoT 协议移植, 旨在提供 TUIC 不提供的基于 QUIC 流的 UDP 中继模" "式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:376 +#: htdocs/luci-static/resources/view/fchomo/global.js:387 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" "要启用 Tun 支持,您需要安装 ip-fullkmod-tun。" -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:681 msgid "To enable, you need to install dnsmasq-full." msgstr "要启用,您需要安装 dnsmasq-full。" -#: htdocs/luci-static/resources/view/fchomo/global.js:604 +#: htdocs/luci-static/resources/view/fchomo/global.js:615 msgid "Tproxy Fwmark" msgstr "Tproxy 标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:358 +#: htdocs/luci-static/resources/view/fchomo/global.js:369 msgid "Tproxy port" msgstr "Tproxy 端口" -#: htdocs/luci-static/resources/view/fchomo/node.js:497 +#: htdocs/luci-static/resources/view/fchomo/node.js:562 msgid "Transport" msgstr "传输层" @@ -2047,27 +2092,27 @@ msgstr "传输层" msgid "Transport fields" msgstr "传输层字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:502 +#: htdocs/luci-static/resources/view/fchomo/node.js:567 msgid "Transport type" msgstr "传输层类型" -#: htdocs/luci-static/resources/fchomo.js:92 +#: htdocs/luci-static/resources/fchomo.js:94 msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:609 +#: htdocs/luci-static/resources/view/fchomo/global.js:620 msgid "Tun Fwmark" msgstr "Tun 标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:374 +#: htdocs/luci-static/resources/view/fchomo/global.js:385 msgid "Tun TCP/UDP" msgstr "Tun TCP/UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:381 +#: htdocs/luci-static/resources/view/fchomo/global.js:392 msgid "Tun settings" msgstr "Tun 设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:385 +#: htdocs/luci-static/resources/view/fchomo/global.js:396 msgid "Tun stack." msgstr "Tun 堆栈" @@ -2076,20 +2121,20 @@ msgstr "Tun 堆栈" #: htdocs/luci-static/resources/view/fchomo/client.js:482 #: htdocs/luci-static/resources/view/fchomo/client.js:960 #: htdocs/luci-static/resources/view/fchomo/node.js:55 -#: htdocs/luci-static/resources/view/fchomo/node.js:750 +#: htdocs/luci-static/resources/view/fchomo/node.js:815 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 #: htdocs/luci-static/resources/view/fchomo/server.js:112 msgid "Type" msgstr "类型" #: htdocs/luci-static/resources/view/fchomo/client.js:274 -#: htdocs/luci-static/resources/view/fchomo/node.js:372 -#: htdocs/luci-static/resources/view/fchomo/node.js:861 +#: htdocs/luci-static/resources/view/fchomo/node.js:437 +#: htdocs/luci-static/resources/view/fchomo/node.js:926 #: htdocs/luci-static/resources/view/fchomo/server.js:367 msgid "UDP" msgstr "UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:414 +#: htdocs/luci-static/resources/view/fchomo/global.js:425 msgid "UDP NAT expiration time" msgstr "UDP NAT 过期时间" @@ -2109,7 +2154,7 @@ msgstr "UDP 包中继模式。" msgid "UDP relay mode" msgstr "UDP 中继模式" -#: htdocs/luci-static/resources/fchomo.js:121 +#: htdocs/luci-static/resources/fchomo.js:123 msgid "URL test" msgstr "自动选择" @@ -2120,7 +2165,7 @@ msgstr "自动选择" msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:535 +#: htdocs/luci-static/resources/fchomo.js:537 msgid "Unable to download unsupported type: %s" msgstr "无法下载不支持的类型: %s" @@ -2128,12 +2173,12 @@ msgstr "无法下载不支持的类型: %s" msgid "Unable to save contents: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:311 +#: htdocs/luci-static/resources/view/fchomo/global.js:322 msgid "Unified delay" msgstr "统一延迟" -#: htdocs/luci-static/resources/view/fchomo/global.js:137 -#: htdocs/luci-static/resources/view/fchomo/global.js:142 +#: htdocs/luci-static/resources/view/fchomo/global.js:141 +#: htdocs/luci-static/resources/view/fchomo/global.js:146 msgid "Unknown" msgstr "未知" @@ -2145,8 +2190,8 @@ msgstr "未知错误。" msgid "Unknown error: %s" msgstr "未知错误:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:377 -#: htdocs/luci-static/resources/view/fchomo/node.js:865 +#: htdocs/luci-static/resources/view/fchomo/node.js:442 +#: htdocs/luci-static/resources/view/fchomo/node.js:930 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -2154,16 +2199,16 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失败。" -#: htdocs/luci-static/resources/view/fchomo/node.js:797 +#: htdocs/luci-static/resources/view/fchomo/node.js:862 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:260 msgid "Update interval" msgstr "更新间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:662 +#: htdocs/luci-static/resources/view/fchomo/node.js:727 msgid "Upload bandwidth" msgstr "上传带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:663 +#: htdocs/luci-static/resources/view/fchomo/node.js:728 msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" @@ -2171,7 +2216,7 @@ msgstr "上传带宽(单位:Mbps)。" msgid "Upload certificate" msgstr "上传证书" -#: htdocs/luci-static/resources/view/fchomo/global.js:204 +#: htdocs/luci-static/resources/view/fchomo/global.js:206 msgid "Upload initial package" msgstr "上传初始资源包" @@ -2179,6 +2224,7 @@ msgstr "上传初始资源包" msgid "Upload key" msgstr "上传密钥" +#: htdocs/luci-static/resources/view/fchomo/global.js:208 #: htdocs/luci-static/resources/view/fchomo/server.js:346 #: htdocs/luci-static/resources/view/fchomo/server.js:361 msgid "Upload..." @@ -2192,11 +2238,11 @@ msgstr "用于解析 DNS 服务器的域名。必须是 IP。" msgid "Used to resolve the domain of the Proxy node." msgstr "用于解析代理节点的域名。" -#: htdocs/luci-static/resources/view/fchomo/node.js:440 +#: htdocs/luci-static/resources/view/fchomo/node.js:505 msgid "Used to verify the hostname on the returned certificates." msgstr "用于验证返回的证书上的主机名。" -#: htdocs/luci-static/resources/view/fchomo/global.js:331 +#: htdocs/luci-static/resources/view/fchomo/global.js:342 msgid "User Authentication" msgstr "用户认证" @@ -2205,48 +2251,48 @@ msgstr "用户认证" msgid "Username" msgstr "用户名" -#: htdocs/luci-static/resources/view/fchomo/global.js:617 +#: htdocs/luci-static/resources/view/fchomo/global.js:628 msgid "Users filter mode" msgstr "使用者过滤模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:592 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:597 +#: htdocs/luci-static/resources/view/fchomo/node.js:662 msgid "V2ray HTTPUpgrade fast open" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:91 +#: htdocs/luci-static/resources/fchomo.js:93 msgid "VLESS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:62 -#: htdocs/luci-static/resources/fchomo.js:90 +#: htdocs/luci-static/resources/fchomo.js:64 +#: htdocs/luci-static/resources/fchomo.js:92 msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:820 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:218 msgid "Value" msgstr "可视化值" #: htdocs/luci-static/resources/view/fchomo/node.js:175 -#: htdocs/luci-static/resources/view/fchomo/node.js:351 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 msgid "Version" msgstr "版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:359 +#: htdocs/luci-static/resources/view/fchomo/node.js:424 msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:300 +#: htdocs/luci-static/resources/view/fchomo/global.js:311 msgid "Warning" msgstr "警告" -#: htdocs/luci-static/resources/view/fchomo/node.js:507 -#: htdocs/luci-static/resources/view/fchomo/node.js:518 -#: htdocs/luci-static/resources/view/fchomo/node.js:523 +#: htdocs/luci-static/resources/view/fchomo/node.js:572 +#: htdocs/luci-static/resources/view/fchomo/node.js:583 +#: htdocs/luci-static/resources/view/fchomo/node.js:588 msgid "WebSocket" msgstr "" @@ -2254,14 +2300,26 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服务端时,HomeProxy 是更好的选择。" -#: htdocs/luci-static/resources/view/fchomo/global.js:619 +#: htdocs/luci-static/resources/view/fchomo/global.js:630 msgid "White list" msgstr "白名单" -#: htdocs/luci-static/resources/fchomo.js:96 +#: htdocs/luci-static/resources/fchomo.js:98 msgid "WireGuard" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:344 +msgid "WireGuard peer public key." +msgstr "WireGuard 对端公钥。" + +#: htdocs/luci-static/resources/view/fchomo/node.js:351 +msgid "WireGuard pre-shared key." +msgstr "WireGuard 预共享密钥。" + +#: htdocs/luci-static/resources/view/fchomo/node.js:336 +msgid "WireGuard requires base64-encoded private keys." +msgstr "WireGuard 要求 base64 编码的私钥。" + #: htdocs/luci-static/resources/view/fchomo/node.js:317 msgid "Xudp (Xray-core)" msgstr "" @@ -2270,25 +2328,25 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/fchomo.js:49 +#: htdocs/luci-static/resources/fchomo.js:51 msgid "YouTube" msgstr "油管" -#: htdocs/luci-static/resources/fchomo.js:872 +#: htdocs/luci-static/resources/fchomo.js:882 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上传。大小:%sB。" -#: htdocs/luci-static/resources/fchomo.js:184 +#: htdocs/luci-static/resources/fchomo.js:186 #: htdocs/luci-static/resources/view/fchomo/node.js:258 #: htdocs/luci-static/resources/view/fchomo/node.js:297 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:185 +#: htdocs/luci-static/resources/fchomo.js:187 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:186 +#: htdocs/luci-static/resources/fchomo.js:188 #: htdocs/luci-static/resources/view/fchomo/node.js:259 msgid "aes-256-gcm" msgstr "" @@ -2306,7 +2364,7 @@ msgstr "bbr" msgid "certificate" msgstr "证书" -#: htdocs/luci-static/resources/fchomo.js:187 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/view/fchomo/node.js:260 msgid "chacha20-ietf-poly1305" msgstr "" @@ -2320,34 +2378,34 @@ msgstr "" msgid "cubic" msgstr "cubic" -#: htdocs/luci-static/resources/view/fchomo/global.js:560 +#: htdocs/luci-static/resources/view/fchomo/global.js:571 msgid "dialer-ip4p-convert" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:888 +#: htdocs/luci-static/resources/view/fchomo/node.js:749 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "dialer-proxy" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:875 +#: htdocs/luci-static/resources/view/fchomo/node.js:940 msgid "down" msgstr "Hysteria 下载速率" -#: htdocs/luci-static/resources/view/fchomo/node.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:517 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 +#: htdocs/luci-static/resources/view/fchomo/node.js:571 +#: htdocs/luci-static/resources/view/fchomo/node.js:582 +#: htdocs/luci-static/resources/view/fchomo/node.js:587 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:576 +#: htdocs/luci-static/resources/view/fchomo/node.js:641 msgid "gRPC service name" msgstr "gRPC 服务名称" -#: htdocs/luci-static/resources/view/fchomo/global.js:388 +#: htdocs/luci-static/resources/view/fchomo/global.js:399 msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:613 +#: htdocs/luci-static/resources/view/fchomo/node.js:678 msgid "h2mux" msgstr "" @@ -2355,8 +2413,8 @@ msgstr "" msgid "metacubexd" msgstr "metacubexd" -#: htdocs/luci-static/resources/view/fchomo/node.js:679 -#: htdocs/luci-static/resources/view/fchomo/node.js:857 +#: htdocs/luci-static/resources/view/fchomo/node.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:922 msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" @@ -2369,15 +2427,15 @@ msgstr "new_reno" msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:718 -#: htdocs/luci-static/resources/fchomo.js:740 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:750 msgid "non-empty value" msgstr "非空值" -#: htdocs/luci-static/resources/fchomo.js:182 +#: htdocs/luci-static/resources/fchomo.js:184 #: htdocs/luci-static/resources/view/fchomo/node.js:295 #: htdocs/luci-static/resources/view/fchomo/node.js:315 -#: htdocs/luci-static/resources/view/fchomo/node.js:323 +#: htdocs/luci-static/resources/view/fchomo/node.js:388 msgid "none" msgstr "无" @@ -2389,15 +2447,15 @@ msgstr "未找到" msgid "not included \",\"" msgstr "不包含 \",\"" -#: htdocs/luci-static/resources/fchomo.js:109 +#: htdocs/luci-static/resources/fchomo.js:111 msgid "null" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:324 +#: htdocs/luci-static/resources/view/fchomo/node.js:389 msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:840 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 msgid "override.proxy-name" msgstr "" @@ -2409,27 +2467,27 @@ msgstr "" msgid "private key" msgstr "私钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:557 +#: htdocs/luci-static/resources/view/fchomo/global.js:568 msgid "quic-go-disable-ecn" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:554 +#: htdocs/luci-static/resources/view/fchomo/global.js:565 msgid "quic-go-disable-gso" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:35 +#: htdocs/luci-static/resources/fchomo.js:36 msgid "razord-meta" msgstr "razord-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:327 +#: htdocs/luci-static/resources/view/fchomo/node.js:392 msgid "restls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:326 +#: htdocs/luci-static/resources/view/fchomo/node.js:391 msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:611 +#: htdocs/luci-static/resources/view/fchomo/node.js:676 msgid "smux" msgstr "" @@ -2437,90 +2495,95 @@ msgstr "" msgid "src" msgstr "src" -#: htdocs/luci-static/resources/view/fchomo/global.js:192 +#: htdocs/luci-static/resources/view/fchomo/global.js:196 msgid "unchecked" msgstr "未检查" -#: htdocs/luci-static/resources/fchomo.js:559 +#: htdocs/luci-static/resources/fchomo.js:561 msgid "unique UCI identifier" msgstr "独立 UCI 标识" -#: htdocs/luci-static/resources/fchomo.js:562 +#: htdocs/luci-static/resources/fchomo.js:564 msgid "unique identifier" msgstr "独立标识" -#: htdocs/luci-static/resources/fchomo.js:749 +#: htdocs/luci-static/resources/fchomo.js:759 msgid "unique value" msgstr "独立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:870 +#: htdocs/luci-static/resources/view/fchomo/node.js:935 msgid "up" msgstr "Hysteria 上传速率" #: htdocs/luci-static/resources/view/fchomo/node.js:176 #: htdocs/luci-static/resources/view/fchomo/node.js:220 -#: htdocs/luci-static/resources/view/fchomo/node.js:352 -#: htdocs/luci-static/resources/view/fchomo/node.js:384 +#: htdocs/luci-static/resources/view/fchomo/node.js:417 +#: htdocs/luci-static/resources/view/fchomo/node.js:449 msgid "v1" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:177 -#: htdocs/luci-static/resources/view/fchomo/node.js:353 -#: htdocs/luci-static/resources/view/fchomo/node.js:385 +#: htdocs/luci-static/resources/view/fchomo/node.js:418 +#: htdocs/luci-static/resources/view/fchomo/node.js:450 msgid "v2" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:178 -#: htdocs/luci-static/resources/view/fchomo/node.js:354 +#: htdocs/luci-static/resources/view/fchomo/node.js:419 msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:700 -#: htdocs/luci-static/resources/fchomo.js:703 +#: htdocs/luci-static/resources/fchomo.js:702 +#: htdocs/luci-static/resources/fchomo.js:705 msgid "valid JSON format" msgstr "有效的 JSON 格式" -#: htdocs/luci-static/resources/view/fchomo/node.js:456 +#: htdocs/luci-static/resources/view/fchomo/node.js:521 msgid "valid SHA256 string with %d characters" msgstr "包含 %d 个字符的有效 SHA256 字符串" -#: htdocs/luci-static/resources/fchomo.js:761 -#: htdocs/luci-static/resources/fchomo.js:764 +#: htdocs/luci-static/resources/fchomo.js:771 +#: htdocs/luci-static/resources/fchomo.js:774 msgid "valid URL" msgstr "有效网址" #: htdocs/luci-static/resources/fchomo.js:715 +#: htdocs/luci-static/resources/fchomo.js:725 msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" -#: htdocs/luci-static/resources/fchomo.js:720 +#: htdocs/luci-static/resources/fchomo.js:730 msgid "valid key length with %d characters" msgstr "包含 %d 个字符的有效密钥" -#: htdocs/luci-static/resources/fchomo.js:683 +#: htdocs/luci-static/resources/fchomo.js:685 msgid "valid port value" msgstr "有效端口值" -#: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:784 msgid "valid uuid" msgstr "有效 uuid" -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:190 msgid "xchacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:34 +#: htdocs/luci-static/resources/fchomo.js:35 msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:612 +#: htdocs/luci-static/resources/view/fchomo/node.js:677 msgid "yamux" msgstr "" +#: htdocs/luci-static/resources/fchomo.js:34 +msgid "zashboard" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:296 msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:537 +#: htdocs/luci-static/resources/fchomo.js:539 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc b/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc index c2aaefcf8..7602f21bb 100755 --- a/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc +++ b/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc @@ -440,12 +440,13 @@ uci.foreach(uciconf, ucinode, (cfg) => { ["routing-mark"]: strToInt(cfg.routing_mark), ["ip-version"]: cfg.ip_version, - /* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / hysteria2 / TUIC / SSH */ + /* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / hysteria2 / TUIC / SSH / WireGuard */ username: cfg.username, uuid: cfg.vmess_uuid || cfg.uuid, cipher: cfg.vmess_chipher || cfg.shadowsocks_chipher, password: cfg.shadowsocks_password || cfg.password, headers: cfg.headers ? json(cfg.headers) : null, + ["private-key"]: cfg.wireguard_private_key || cfg.ssh_priv_key, /* Hysteria / Hysteria2 */ ports: isEmpty(cfg.hysteria_ports) ? null : join(',', cfg.hysteria_ports), @@ -455,7 +456,6 @@ uci.foreach(uciconf, ucinode, (cfg) => { ["obfs-password"]: cfg.hysteria_obfs_password, /* SSH */ - ["private-key"]: cfg.ssh_priv_key, ["private-key-passphrase"]: cfg.ssh_priv_key_passphrase, ["host-key-algorithms"]: cfg.ssh_host_key_algorithms, ["host-key"]: cfg.ssh_host_key, @@ -497,6 +497,17 @@ uci.foreach(uciconf, ucinode, (cfg) => { ["authenticated-length"]: strToBool(cfg.vmess_authenticated_length), ["packet-encoding"]: cfg.vmess_packet_encoding, + /* WireGuard */ + ip: cfg.wireguard_ip, + ipv6: cfg.wireguard_ipv6, + ["public-key"]: cfg.wireguard_peer_public_key, + ["pre-shared-key"]: cfg.wireguard_pre_shared_key, + ["allowed-ips"]: cfg.wireguard_allowed_ips, + reserved: cfg.wireguard_reserved, + mtu: strToInt(cfg.wireguard_mtu), + ["remote-dns-resolve"]: strToBool(cfg.wireguard_remote_dns_resolve), + dns: cfg.wireguard_dns, + /* Plugin fields */ plugin: cfg.plugin, ["plugin-opts"]: cfg.plugin ? { diff --git a/netatalk/Makefile b/netatalk/Makefile new file mode 100644 index 000000000..39f673dcf --- /dev/null +++ b/netatalk/Makefile @@ -0,0 +1,98 @@ +# +# Copyright (C) 2009-2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=netatalk +PKG_VERSION:=3.1.12 +PKG_RELEASE:=3 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@SF/netatalk +PKG_HASH:=1560f83a3da41be97e0b70a96e2402159b8ddc631d38538360b14784beada5d1 + +PKG_BUILD_PARALLEL:=1 +PKG_INSTALL:=1 +PKG_FIXUP:=autoreconf + +PKG_CPE_ID:=cpe:/a:netatalk:netatalk + +PKG_BUILD_DEPENDS:=libevent2 + +include $(INCLUDE_DIR)/package.mk + +define Package/netatalk + SECTION:=net + CATEGORY:=Network + SUBMENU:=Filesystem + DEPENDS:=+libattr +libdb47 +libgcrypt +libopenssl + TITLE:=netatalk + URL:=http://netatalk.sourceforge.net + MAINTAINER:=Alexandru Ardelean +endef + +define Package/netatalk/decription + Netatalk is a freely-available Open Source AFP fileserver. + It also provides a kernel level implementation of the AppleTalk + Protocol Suite. +endef + +TARGET_CFLAGS += -std=gnu99 + +CONFIGURE_ARGS += \ + --disable-afs \ + --enable-hfs \ + --disable-debugging \ + --disable-shell-check \ + --disable-timelord \ + --disable-a2boot \ + --disable-cups \ + --disable-tcp-wrappers \ + --with-cnid-default-backend=dbd \ + --with-bdb="$(STAGING_DIR)/usr/" \ + --with-libevent=no \ + --with-libgcrypt-dir="$(STAGING_DIR)/usr" \ + --with-ssl-dir="$(STAGING_DIR)/usr" \ + --with-uams-path="/usr/lib/uams" \ + --without-acls \ + --without-kerberos \ + --without-mysql \ + --with-mysql-config=false \ + --without-pam \ + --disable-admin-group \ + --disable-srvloc \ + --disable-zeroconf \ + $(if $(CONFIG_SHADOW_PASSWORDS),--with-shadow,--without-shadow) \ + --without-dtrace \ + --without-ldap + +define Package/netatalk/conffiles +/etc/afp.conf +/etc/extmap.conf +/etc/netatalk/ +endef + +define Package/netatalk/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_DIR) $(1)/usr/lib/uams + $(INSTALL_DIR) $(1)/etc/init.d + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libatalk.so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/bin/dbd $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/ad $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/afppasswd $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/sbin/afpd $(1)/usr/sbin/ + $(CP) $(PKG_INSTALL_DIR)/usr/sbin/cnid_dbd $(1)/usr/sbin/ + $(CP) $(PKG_INSTALL_DIR)/usr/sbin/cnid_metad $(1)/usr/sbin/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/uams/*.so $(1)/usr/lib/uams/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/afp.conf $(1)/etc/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/extmap.conf $(1)/etc/ + $(INSTALL_BIN) ./files/afpd.init $(1)/etc/init.d/afpd +endef + +$(eval $(call BuildPackage,netatalk)) diff --git a/netatalk/files/afpd.init b/netatalk/files/afpd.init new file mode 100644 index 000000000..8fab349e3 --- /dev/null +++ b/netatalk/files/afpd.init @@ -0,0 +1,23 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2010-2012 OpenWrt.org + +START=80 +STOP=10 + +USE_PROCD=1 + +start_service() { + mkdir -p /var/netatalk/CNID/ + + procd_open_instance + procd_set_param command /usr/sbin/afpd -d -F /etc/afp.conf + procd_set_param file /etc/afp.conf + procd_set_param respawn + procd_close_instance + + procd_open_instance + procd_set_param command /usr/sbin/cnid_metad -d + procd_set_param respawn + procd_close_instance +} + diff --git a/netatalk/patches/001-automake-compat.patch b/netatalk/patches/001-automake-compat.patch new file mode 100644 index 000000000..28c107a35 --- /dev/null +++ b/netatalk/patches/001-automake-compat.patch @@ -0,0 +1,9 @@ +--- a/macros/iconv.m4 ++++ b/macros/iconv.m4 +@@ -115,6 +115,5 @@ int main() { + + CFLAGS="$savedcflags" + LDFLAGS="$savedldflags" +- CPPFLAGS="$saved_CPPFLAGS" + + ]) diff --git a/netatalk/patches/002-ld_library_path.patch b/netatalk/patches/002-ld_library_path.patch new file mode 100644 index 000000000..73be55a6a --- /dev/null +++ b/netatalk/patches/002-ld_library_path.patch @@ -0,0 +1,26 @@ +--- a/macros/db3-check.m4 ++++ b/macros/db3-check.m4 +@@ -148,9 +148,9 @@ if test "x$bdb_required" = "xyes"; then + dnl -- LD_LIBRARY_PATH on many platforms. This will be fairly + dnl -- portable hopefully. Reference: + dnl -- http://lists.gnu.org/archive/html/autoconf/2009-03/msg00040.html +- eval export $shlibpath_var=$bdblibdir ++# eval export $shlibpath_var=$bdblibdir + NETATALK_BDB_TRY_LINK +- eval export $shlibpath_var=$saved_shlibpath_var ++# eval export $shlibpath_var=$saved_shlibpath_var + + if test x"${atalk_cv_bdb_version}" = x"yes"; then + BDB_CFLAGS="-I${bdbdir}/include${subdir}" +@@ -177,9 +177,9 @@ if test "x$bdb_required" = "xyes"; then + CPPFLAGS="-I${bdbdir}/include${subdir} $CPPFLAGS" + LDFLAGS="-L$bdblibdir $LDFLAGS" + +- eval export $shlibpath_var=$bdblibdir ++# eval export $shlibpath_var=$bdblibdir + NETATALK_BDB_TRY_LINK +- eval export $shlibpath_var=$saved_shlibpath_var ++# eval export $shlibpath_var=$saved_shlibpath_var + + if test x"${atalk_cv_bdb_version}" = x"yes"; then + BDB_CFLAGS="-I${bdbdir}/include${subdir}" diff --git a/netatalk/patches/010-gcc10.patch b/netatalk/patches/010-gcc10.patch new file mode 100644 index 000000000..cbf2177e6 --- /dev/null +++ b/netatalk/patches/010-gcc10.patch @@ -0,0 +1,20 @@ +From 32df6e155ccfc83216321925273c3e75e631ebe6 Mon Sep 17 00:00:00 2001 +From: Andrew Bauer +Date: Wed, 22 Jan 2020 09:59:47 -0600 +Subject: [PATCH] fix ftbs multiple def of invalid_dircache_entries + +--- + etc/afpd/directory.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/etc/afpd/directory.h ++++ b/etc/afpd/directory.h +@@ -91,7 +91,7 @@ struct maccess { + #define AR_UWRITE (1<<2) + #define AR_UOWN (1<<7) + +-q_t *invalid_dircache_entries; ++extern q_t *invalid_dircache_entries; + + typedef int (*dir_loop)(struct dirent *, char *, void *); + diff --git a/pgyvpn/Makefile b/pgyvpn/Makefile new file mode 100644 index 000000000..7379e4fdb --- /dev/null +++ b/pgyvpn/Makefile @@ -0,0 +1,116 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/target.mk + +ifeq ($(ARCH),arm) + ifneq ($(findstring $(CPU_SUBTYPE), neon neon-vfpv4 vfpv3),) + PKG_ARCH_PGYYPN:=arm_$(CPU_TYPE)_$(CPU_SUBTYPE)-$(LIBC)-unknown + else ifneq ($(findstring $(CPU_TYPE), cortex-a9),) + PKG_ARCH_PGYYPN:=arm_cortex-a9-$(LIBC)-unknown + else + PKG_ARCH_PGYYPN:=arm_cortex-a7-$(LIBC)-unknown + endif +endif +ifeq ($(ARCH),aarch64) + ifneq ($(findstring $(CPU_TYPE), cortex-a53 cortex-a72),) + PKG_ARCH_PGYYPN:=aarch64_$(CPU_TYPE)-$(LIBC)-unknown + else + PKG_ARCH_PGYYPN:=aarch64_generic-$(LIBC)-unknown + endif +endif +ifeq ($(ARCH),mips) + PKG_ARCH_PGYYPN:=mips_24kc-$(LIBC)-unknown +endif +ifeq ($(ARCH),mipsel) + ifneq ($(findstring $(CPU_TYPE), 24kec 74kc 1004kc),) + PKG_ARCH_PGYYPN:=$(ARCH)_$(CPU_TYPE)-$(LIBC)-unknown + else + PKG_ARCH_PGYYPN:=mipsel_24kc-$(LIBC)-unknown + endif +endif +ifeq ($(BOARD),x86) + ifeq ($(ARCH),x86_64) + PKG_ARCH_PGYYPN:=x86_64-$(LIBC)-unknown + else + PKG_ARCH_PGYYPN:=i386_pentium-mmx-$(LIBC)-unknown + endif +endif + +PKG_NAME:=pgyvpn +PKG_VERSION:=3.1.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=pgyvpnsvr +PKG_SOURCE_URL:=https://mirrors.oray.com/orayos/packages/$(PKG_NAME)/$(PKG_ARCH_PGYYPN)/$(PKG_VERSION)/bin +PKG_HASH:=skip + +PKG_FLAGS:=nonshared +PKG_MAINTAINER:=Oray + +include $(INCLUDE_DIR)/package.mk + +define Package/pgyvpn + SECTION:=net + CATEGORY:=Network + SUBMENU:=VPN + DEPENDS:=@(arm||aarch64||mips||mipsel||i386||x86_64) \ + +iptables +libc +libopenssl +librt \ + +libpthread +libstdcpp +kmod-tun + TITLE:=PuGongYing VPN, Fast networking + URL:=https://pgy.oray.com/ +endef + +define Package/pgyvpn/description + PuGongYing VPN is a product of Oray Company, support custom network, account security + system, traffic monitoring, cloud application access, virtual serial port, etc. +endef + +define Download/extra + FILE:=pgyvpn_oraysl + URL:=$(PKG_SOURCE_URL) + HASH:=skip +endef +$(eval $(call Download,extra)) + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + mv $(DL_DIR)/{pgyvpn_oraysl,pgyvpnsvr} $(PKG_BUILD_DIR) + chmod +x $(PKG_BUILD_DIR)/{pgyvpn_oraysl,pgyvpnsvr} +endef + +define Build/Compile + true +endef + +define Package/pgyvpn/install + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DIR) $(1)/etc/hotplug.d/iface + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_DIR) $(1)/usr/share/pgyvpn + + $(CP) $(PKG_BUILD_DIR)/{pgyvpn_oraysl,pgyvpnsvr} $(1)/usr/sbin + $(INSTALL_BIN) ./files/etc/init.d/* $(1)/etc/init.d + $(INSTALL_CONF) ./files/etc/config/* $(1)/etc/config + $(INSTALL_BIN) ./files/etc/hotplug.d/iface/* $(1)/etc/hotplug.d/iface + $(INSTALL_BIN) ./files/usr/share/pgyvpn/* $(1)/usr/share/pgyvpn +endef + +define Package/pgyvpn/preinst + #!/bin/sh + [ -z "$${IPKG_INSTROOT}" ] && { + pidof pgyvpnsvr > /dev/null && \ + test -f $${PKG_ROOT}etc/init.d/pgyvpn && \ + /etc/init.d/pgyvpn stop; true + } + exit 0 +endef + +define Package/pgyvpn/postinst + #!/bin/sh + [ -z "$${IPKG_INSTROOT}" ] && { + /etc/init.d/pgyvpn restart; true + } + exit 0 +endef + +$(eval $(call BuildPackage,pgyvpn)) diff --git a/pgyvpn/files/etc/config/pgyvpn b/pgyvpn/files/etc/config/pgyvpn new file mode 100644 index 000000000..e9b60db32 --- /dev/null +++ b/pgyvpn/files/etc/config/pgyvpn @@ -0,0 +1,20 @@ +config base 'base' + option filename '/usr/sbin/pgyvpnsvr' + option check_route_conflict '1' + option script_p2pinit '/usr/share/pgyvpn/p2pinit.sh' + option script_vncinit '/usr/share/pgyvpn/vncinit.sh' + option script_progress '/usr/share/pgyvpn/vpnprogress.sh' + +config secure 'secure' + option encrypt '0' + +config log 'log' + option path '/tmp/oray/pgyvpnsvr/log' + option mask '7' + +config oraysl 'oraysl' + option filename '/usr/sbin/pgyvpn_oraysl' + option logpath '/tmp/oray/pgyvpn_oraysl/log' + option statusfilename '/tmp/oray/pgyvpn_oraysl/status' + option pidfilename '/tmp/oray/pgyvpn_oraysl/pid' + diff --git a/pgyvpn/files/etc/hotplug.d/iface/pgyvpn b/pgyvpn/files/etc/hotplug.d/iface/pgyvpn new file mode 100755 index 000000000..4e3d32615 --- /dev/null +++ b/pgyvpn/files/etc/hotplug.d/iface/pgyvpn @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "$INTERFACE" == "wan" -a "$ACTION" == "ifup" ] && { + /etc/init.d/pgyvpn restart +} diff --git a/pgyvpn/files/etc/init.d/pgyvpn b/pgyvpn/files/etc/init.d/pgyvpn new file mode 100755 index 000000000..8a9f48ecc --- /dev/null +++ b/pgyvpn/files/etc/init.d/pgyvpn @@ -0,0 +1,150 @@ +#!/bin/sh /etc/rc.common + +. /lib/functions.sh + +START=62 +STOP=62 +USE_PROCD=1 + +write_log() +{ + echo $* + logger -t pgyvpn "$*" +} + +start_service() +{ + local res_def_path='/usr/share/pgyvpn' + local pgyvpn_filename + local username + local password + local check_route_conflict + local log_path + local log_mask + local local_ip + local local_mask + local use_encrypt + local script_p2pinit + local script_vncinit + local script_progress + local oraysl_filename + local oraysl_logpath + local oraysl_statusfilename + local oraysl_pidfilename + local login_status + local enable_status + + #read uci config + config_load pgyvpn + config_get login_status base login_status + config_get enable_status base enable_status + + if [ -z $enable_status ] || [ "$enable_status" == "0" ]; then + exit 0 + fi + + config_get pgyvpn_filename base filename '/usr/sbin/pgyvpnsvr' + config_get username base user '' + config_get password base pwd '' + config_get_bool check_route_conflict base check_route_conflict 0 + config_get log_path log path '/tmp/oray/pgyvpnsvr/log' + config_get log_mask log mask '0x77' + config_get_bool use_encrypt secure encrypt 0 + config_get script_p2pinit base script_p2pinit "$res_def_path/p2pinit.sh" + config_get script_vncinit base script_vncinit "$res_def_path/vncinit.sh" + config_get script_progress base script_progress "$res_def_path/vpnprogress.sh" + config_get oraysl_filename oraysl filename '/usr/sbin/pgyvpn_oraysl' + config_get oraysl_logpath oraysl logpath '/tmp/oray/pgyvpn_oraysl/log' + config_get oraysl_statusfilename oraysl statusfilename '/tmp/oray/pgyvpn_oraysl/status' + config_get oraysl_pidfilename oraysl pidfilename '/tmp/oray/pgyvpn_oraysl/pid' + local_ip=$(uci get network.lan.ipaddr 2> /dev/null) + local_mask=$(uci get network.lan.netmask 2> /dev/null) + + local host_name=$(uci get system.@system[0].hostname 2> /dev/null) + + #print config + write_log "pgyvpn app filename is $pgyvpn_filename" + write_log "username is $username" + write_log "log path is $log_path" + write_log "log mask is $log_mask" + write_log "local ip is $local_ip" + write_log "local mask is $local_mask" + write_log "script for p2p init is $script_p2pinit" + write_log "script for vnc init is $script_vncinit" + write_log "script for progress is $script_progress" + write_log "oraysl filename is $oraysl_filename" + write_log "oraysl log path is $oraysl_logpath" + write_log "oraysl status filename is $oraysl_statusfilename" + write_log "oraysl pid filename is $oraysl_pidfilename" + [ $use_encrypt -eq 1 ] && write_log 'use encrypt' || write_log 'no use encrypt' + + #make app command args + local cmd_arg='' + local api_address="pgyapi.oray.net" + cmd_arg="$cmd_arg --apiaddress $api_address --usehttps --rpc --autologinAsRpc" + #cmd_arg="$cmd_arg --apiaddress $api_address --usehttps --autologinAsRpc" + cmd_arg="$cmd_arg --logsize 4194304 --logpath $log_path --logmask $log_mask" + cmd_arg="$cmd_arg --orayslpath $oraysl_filename --oraysllogpath $oraysl_logpath --orayslstatusfilename $oraysl_statusfilename --orayslpidfilename $oraysl_pidfilename" + [ -n "$script_p2pinit" ] && cmd_arg="$cmd_arg -n $script_p2pinit" + [ -n "$script_vncinit" ] && cmd_arg="$cmd_arg -C $script_vncinit" + # [ -n "$script_progress" ] && cmd_arg="$cmd_arg -n $script_progress" + [ -n "$script_progress" ] && cmd_arg="$cmd_arg -N $script_progress" + [ -n "$local_ip" ] && cmd_arg="$cmd_arg --localip $local_ip" + [ -n "$local_mask" ] && cmd_arg="$cmd_arg --localmask $local_mask" + [ $use_encrypt -eq 1 ] && cmd_arg="$cmd_arg -r" + [ $check_route_conflict -ne 0 ] && cmd_arg="$cmd_arg --vipmask 255.255.255.255" + [ -n "$host_name" ] && cmd_arg="$cmd_arg --hostname $host_name" + + #start app + procd_open_instance + procd_set_param command $pgyvpn_filename $cmd_arg + [ -n "$username" ] && procd_append_param command --sn "$username" + [ -n "$password" ] && procd_append_param command --pwd "$password" + procd_set_param respawn + procd_close_instance + +} + +stop_service() +{ + #remove p2p firewall + iptables -w -t filter -F oray_vpn_p2p 2> /dev/null + while true; + do + iptables -w -t filter -D INPUT -j oray_vpn_p2p 2>/dev/null + [ $? -ne 0 ] && break + done + iptables -w -t filter -X oray_vpn_p2p 2> /dev/null + + #remove forward firewall + iptables -w -t filter -F oray_vpn_vnc 2> /dev/null + while true; + do + iptables -w -t filter -D INPUT -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break + done + + while true; + do + iptables -w -t filter -D FORWARD -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break + done + + while true; + do + iptables -w -t filter -D OUTPUT -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break + done + iptables -w -t filter -X oray_vpn_vnc 2> /dev/null + + #stop oraysl + killall pgyvpn_oraysl 2> /dev/null + + rm /tmp/pgyvpnsvr_mutex 2> /dev/null #delete mutex file + rm /tmp/pgyvpnsvr_rpc_mutex 2> /dev/null #delete rpc mutex file + + local oraysl_statusfilename + config_load pgyvpn + config_get oraysl_statusfilename oraysl statusfilename '/tmp/oray/pgyvpn_oraysl/status' + rm oraysl_statusfilename 2> /dev/null #delete oraysl status file +} diff --git a/pgyvpn/files/usr/share/pgyvpn/p2pinit.sh b/pgyvpn/files/usr/share/pgyvpn/p2pinit.sh new file mode 100755 index 000000000..01a170b28 --- /dev/null +++ b/pgyvpn/files/usr/share/pgyvpn/p2pinit.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +#删除oray_vpn_p2p表 +iptables -w -t filter -F oray_vpn_p2p +while true; +do + iptables -w -t filter -D INPUT -j oray_vpn_p2p 2>/dev/null + [ $? -ne 0 ] && break +done +iptables -w -t filter -X oray_vpn_p2p + +#建立oray_vpn_p2p表 +iptables -w -t filter -N oray_vpn_p2p +iptables -w -t filter -I oray_vpn_p2p -p udp --dport $2 -j ACCEPT +iptables -w -t filter -I oray_vpn_p2p -p udp --dport 1900 -j ACCEPT +iptables -w -t filter -I INPUT 1 -j oray_vpn_p2p diff --git a/pgyvpn/files/usr/share/pgyvpn/vncinit.sh b/pgyvpn/files/usr/share/pgyvpn/vncinit.sh new file mode 100755 index 000000000..e98aabed7 --- /dev/null +++ b/pgyvpn/files/usr/share/pgyvpn/vncinit.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +#删除oray_vpn_vnc表 +iptables -w -t filter -F oray_vpn_vnc +while true; +do + iptables -w -t filter -D INPUT -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break +done + +while true; +do + iptables -w -t filter -D FORWARD -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break +done + +while true; +do + iptables -w -t filter -D OUTPUT -j oray_vpn_vnc 2>/dev/null + [ $? -ne 0 ] && break +done +iptables -w -t filter -X oray_vpn_vnc + +#建立oray_vpn_vnc表 +iptables -w -t filter -N oray_vpn_vnc +iptables -w -t filter -I oray_vpn_vnc -i oray_vnc -o br-lan -j ACCEPT +iptables -w -t filter -I oray_vpn_vnc -o oray_vnc -i br-lan -j ACCEPT +iptables -w -t filter -I INPUT 1 -j oray_vpn_vnc +iptables -w -t filter -I OUTPUT 1 -j oray_vpn_vnc +iptables -w -t filter -I FORWARD 1 -j oray_vpn_vnc +iptables -w -t filter -I oray_vpn_vnc -i oray_vnc -j ACCEPT diff --git a/pgyvpn/files/usr/share/pgyvpn/vpnprogress.sh b/pgyvpn/files/usr/share/pgyvpn/vpnprogress.sh new file mode 100755 index 000000000..7edbceaae --- /dev/null +++ b/pgyvpn/files/usr/share/pgyvpn/vpnprogress.sh @@ -0,0 +1,116 @@ +#!/bin/sh + +progress="$1" + +#connect status +echo $progress >/tmp/orayboxvpn_connect_status + +logger -t vpnprogress $progress + +#99: 表示 链接中 +# 1: 表示 已组网 +# 0: 表示 未组网 + +# 显示登录页面 +#4 -1: 表示 账号错误 +#-2: 表示 帐号密码为空 +#6 -3: 表示 成员数不足 +#5 -4: 表示 登录失败 +#2 -5: 表示 服务过期 +#1026 -8: 表示 修改密码 +#7 -9: 表示 服务被禁 +#401 -10: 表示 授权被禁 +#-1 -11: 表示 登录故障 这个要区别一下登录失败(登录成功后断开) + + +# 显示登录成功 未组网页面 +#-1 -6: 表示 移除网络 +#6 -7: 表示 状态关闭 + +# err_code= +# vpn_status= +# login_status= + +if [ "$progress" == "connected" ] ;then ### 已组网 + vpn_status=1 +elif [ "$progress" == "tryconnect" ] ;then + logger -t vpnprogress $progress +elif [ "$progress" == "sn" ] ;then + vpn_status=99 + uci set pgyvpn.base.login_status=1 + uci set pgyvpn.base.vpnid=$2 + uci set pgyvpn.base.vpnpwd=$3 +elif [ "$progress" == "login_err" ] ;then + vpn_status=0 + err_code=$2 + if [ "$err_code" == "4" ] ;then + err_code=-1 + elif [ "$err_code" == "6" ] ;then + err_code=-3 + elif [ "$err_code" == "5" ] ;then + err_code=-4 + elif [ "$err_code" == "2" ] ;then + err_code=-5 + elif [ "$err_code" == "7" ] ;then + err_code=-9 + elif [ "$err_code" == "401" ] ;then + err_code=-10 + elif [ "$err_code" == "403" ] ;then + err_code=-10 + elif [ "$err_code" == "-1" ] ;then + err_code=-11 + fi + ### login failed can't disabled vpn service + + if [ "$err_code" == "-11" ] ;then + status=`uci get pgyvpn.base.login_status` + logger -t errcode $status + if [ "$status" != "1" ] ;then + uci set pgyvpn.base.enable_status=0 ### 下回不启用 + /etc/init.d/pgyvpn stop > /dev/null + fi + elif [ "$err_code" != "-4" ] ;then + uci set pgyvpn.base.enable_status=0 ### 下回不启用 + /etc/init.d/pgyvpn stop > /dev/null + fi + + + uci set pgyvpn.base.err_code=$err_code + +elif [ "$progress" == "not_in_group" ] ;then ### 未组网 + ## not_in_group is not a err + vpn_status=0 + err_code=0 + uci set pgyvpn.base.login_status=1 + +elif [ "$progress" == "disconnected" ] ;then + err_code=$2 + vpn_status=0 + if [ -n "$err_code" ] ;then + vpn_status=0 + if [ "$err_code" == "-1" ] ;then + err_code=-6 + elif [ "$err_code" == "6" ] ;then + err_code=-7 + elif [ "$err_code" == "1026" ] ;then + err_code=-8 + fi + uci set pgyvpn.base.err_code=$err_code + fi +fi + +if [ -n "$vpn_status" ] ;then + uci set pgyvpn.base.vpn_status=$vpn_status +fi + +if [ "$err_code" == "-5" ] || [ "$err_code" == "-9" ] || [ "$err_code" == "-8" ] ;then + uci set pgyvpn.base.login_status=0 + uci set pgyvpn.base.enable_status=0 +fi + +if [ "$vpn_status" == "1" ] || [ "$vpn_status" == "0" -a "$err_code" == "0" ] ;then + uci set pgyvpn.base.login_status=1 + uci set pgyvpn.base.enable_status=1 +fi + +uci commit diff --git a/phtunnel/Makefile b/phtunnel/Makefile new file mode 100644 index 000000000..f8bd4d277 --- /dev/null +++ b/phtunnel/Makefile @@ -0,0 +1,106 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/target.mk + +ifeq ($(ARCH),arm) + ifneq ($(findstring $(CPU_SUBTYPE), neon neon-vfpv4 vfpv3),) + PKG_ARCH_PHT:=arm_$(CPU_TYPE)_$(CPU_SUBTYPE)-$(LIBC)-unknown + else ifneq ($(findstring $(CPU_TYPE), cortex-a9),) + PKG_ARCH_PHT:=arm_cortex-a9-$(LIBC)-unknown + else + PKG_ARCH_PHT:=arm_cortex-a7-$(LIBC)-unknown + endif +endif +ifeq ($(ARCH),aarch64) + ifneq ($(findstring $(CPU_TYPE), cortex-a53 cortex-a72),) + PKG_ARCH_PHT:=aarch64_$(CPU_TYPE)-$(LIBC)-unknown + else + PKG_ARCH_PHT:=aarch64_generic-$(LIBC)-unknown + endif +endif +ifeq ($(ARCH),mips) + PKG_ARCH_PHT:=mips_24kc-$(LIBC)-unknown +endif +ifeq ($(ARCH),mipsel) + ifneq ($(findstring $(CPU_TYPE), 24kec 74kc 1004kc),) + PKG_ARCH_PHT:=$(ARCH)_$(CPU_TYPE)-$(LIBC)-unknown + else + PKG_ARCH_PHT:=mipsel_24kc-$(LIBC)-unknown + endif +endif +ifeq ($(BOARD),x86) + ifeq ($(ARCH),x86_64) + PKG_ARCH_PHT:=x86_64-$(LIBC)-unknown + else ifeq ($(CPU_TYPE),pentium4) + PKG_ARCH_PHT:=i386_pentium4-$(LIBC)-unknown + else + PKG_ARCH_PHT:=i386_pentium-mmx-$(LIBC)-unknown + endif +endif + +PKG_NAME:=phtunnel +PKG_VERSION:=1.0.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=phtunnel +PKG_SOURCE_URL:=https://mirrors.oray.com/orayos/packages/$(PKG_NAME)/$(PKG_ARCH_PHT)/$(PKG_VERSION)/bin +PKG_HASH:=skip + +PKG_FLAGS:=nonshared +PKG_MAINTAINER:=Oray + +include $(INCLUDE_DIR)/package.mk + +define Package/phtunnel + SECTION:=net + CATEGORY:=Network + SUBMENU:=Web Servers/Proxies + DEPENDS:=@(arm||aarch64||mips||mipsel||i386||x86_64) \ + +libc +libpthread +librt + TITLE:=HSK Intranet penetration + URL:=https://hsk.oray.com/ +endef + +define Package/phtunnel/description + PHTunnel is the core component of HSK intranet penetration, which can easily implement high-performance + reverse proxy applications, supports TCP, HTTP, HTTPS protocols, end-to-end TLS encrypted communication, + black and white list anti-black verification, etc. Through PHTunnel, external network devices can easily + penetrate various complex routes and firewalls to access devices on the internal network. +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + mv $(DL_DIR)/$(PKG_SOURCE) $(PKG_BUILD_DIR) + chmod +x $(PKG_BUILD_DIR)/$(PKG_SOURCE) +endef + +define Build/Compile + true +endef + +define Package/phtunnel/conffiles +/etc/phtunnel.json +endef + +define Package/phtunnel/install + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DIR) $(1)/etc/hotplug.d/iface + $(INSTALL_DIR) $(1)/usr/sbin + + $(CP) $(PKG_BUILD_DIR)/phtunnel $(1)/usr/sbin + $(INSTALL_BIN) ./files/etc/init.d/* $(1)/etc/init.d + $(INSTALL_CONF) ./files/etc/config/* $(1)/etc/config + $(INSTALL_BIN) ./files/etc/hotplug.d/iface/* $(1)/etc/hotplug.d/iface +endef + +define Package/phtunnel/preinst + #!/bin/sh + [ -z "$${IPKG_INSTROOT}" ] && { + pidof phtunnel > /dev/null && \ + test -f $${PKG_ROOT}etc/init.d/phtunnel && \ + /etc/init.d/phtunnel stop; true + } + exit 0 +endef + +$(eval $(call BuildPackage,phtunnel)) diff --git a/phtunnel/files/etc/config/phtunnel b/phtunnel/files/etc/config/phtunnel new file mode 100644 index 000000000..27ed450f5 --- /dev/null +++ b/phtunnel/files/etc/config/phtunnel @@ -0,0 +1,6 @@ +config base 'base' + option enabled '0' + +config log 'log' + option path '/var/log/phtunnel.log' + diff --git a/phtunnel/files/etc/hotplug.d/iface/30-oray-phtunnel b/phtunnel/files/etc/hotplug.d/iface/30-oray-phtunnel new file mode 100755 index 000000000..02a314741 --- /dev/null +++ b/phtunnel/files/etc/hotplug.d/iface/30-oray-phtunnel @@ -0,0 +1,6 @@ +#!/bin/sh + +[ "$INTERFACE" == "wan" -a "$ACTION" == "ifup" ] && { + logger -t oray 'wan interface up and phtunnel restart' + /etc/init.d/phtunnel restart +} diff --git a/phtunnel/files/etc/init.d/phtunnel b/phtunnel/files/etc/init.d/phtunnel new file mode 100755 index 000000000..789fe40a7 --- /dev/null +++ b/phtunnel/files/etc/init.d/phtunnel @@ -0,0 +1,103 @@ +#!/bin/sh /etc/rc.common + +. /lib/functions.sh + +START=65 +STOP=65 + +USE_PROCD=1 + +#退出后清理 +exit_clean() +{ + [ -f "$1" ] && rm $1 + [ -f "$2" ] && rm $2 + [ -f "$3" ] && rm $3 +} + +start_service() +{ + local enabled + local config_file + local log_path + local app_id + local app_key + local server_addr + local pid_file + local device_info + local cmd + local log_dir_path + + config_load phtunnel + config_get enabled base enabled '0' + [ "$enabled" == "0" ] && { + echo 'phtunnel is not enabled' + exit 1 + } + + config_get config_file base config_file '/etc/phtunnel.json' #配置文件路径 + config_get app_id base app_id '' #appid + config_get app_key base app_key '' #appkey + config_get server_addr base server 'https://hsk-embed.oray.com' #服务器地址 + config_get pid_file base pid_file '/tmp/phtunnel.pid' #pid文件位置 + config_get log_path log path '/var/log/oraybox/phtunnel.log' #日志位置 + + echo 'now start phtunnel' + + log_dir_path="${log_path%/*}" + [ ! -d "$log_dir_path" ] && mkdir -p $log_dir_path + + cmd="phtunnel -R 100 -c $config_file -l $log_path --rpc -p $pid_file" + [ -n "$app_id" -a -n "$app_key" ] && cmd="$cmd --appid "$app_id" --appkey $app_key" + [ -n "$server_addr" ] && cmd="$cmd -s $server_addr" + [ -n "$dev_info" ] && cmd="$cmd --deviceinfo 'mem:32; usb:on; cpu:mipsel'" + #echo $cmd + + procd_open_instance + procd_set_param command $cmd + procd_set_param respawn + procd_close_instance +} + +stop_service() +{ + echo 'now stop phtunnel' + + local enabled + local config_file + local pid_file + local log_path + config_load phtunnel + config_get enabled base enabled '0' + config_get config_file base config_file '/etc/phtunnel.json' #配置文件路径 + config_get pid_file base pid_file '/tmp/phtunnel.pid' + config_get log_path log path '/var/log/oraybox/phtunnel.log' + + #获取程序的pid + local pid=$(cat "$pid_file" 2> /dev/null | grep 'pid=' | cut -d'=' -f2 2> /dev/null) + [ -z "$pid" ] && { + echo 'phtunnel pid is not found' + exit_clean $pid_file $log_path + return 0 + } + + #如果enabled为0(禁用),则删除配置文件 + [ "$enabled" = "0" -a -f "$config_file" ] && rm $config_file + + #kill程序 + kill "$pid" 2> /dev/null + for i in $(seq 1 4) + do + [ -d "/proc/$pid" ] || { + echo 'phtunnel processor is stopped' + exit_clean $pid_file $log_path + return 0 + } + echo "phtunnel processor is still alive(pid is $pid), wait 1 second" + sleep 1 + done + + echo "phtunnel processor is still alive(pid is $pid), kill it" + kill -9 $pid 2> /dev/null + exit_clean $pid_file $log_path +} diff --git a/vlmcsd/Makefile b/vlmcsd/Makefile new file mode 100644 index 000000000..5ca8cb55d --- /dev/null +++ b/vlmcsd/Makefile @@ -0,0 +1,41 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=vlmcsd +PKG_VERSION:=svn1113 +PKG_RELEASE:=3 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/Wind4/vlmcsd/tar.gz/$(PKG_VERSION)? +PKG_HASH:=62f55c48f5de1249c2348ab6b96dabbe7e38899230954b0c8774efb01d9c42cc + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=fuyumi <280604399@qq.com> + +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/vlmcsd + SECTION:=net + CATEGORY:=Network + TITLE:=vlmcsd for OpenWRT + URL:=http://forums.mydigitallife.info/threads/50234 + DEPENDS:=+libpthread +endef + +define Package/vlmcsd/description + vlmcsd is a KMS Emulator in C. +endef + +MAKE_FLAGS += \ + -C $(PKG_BUILD_DIR) + +define Package/vlmcsd/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcsd $(1)/usr/bin/vlmcsd + $(INSTALL_DIR) $(1)/etc/vlmcsd + $(INSTALL_BIN) ./files/vlmcsd.ini $(1)/etc/vlmcsd/vlmcsd.ini +endef + +$(eval $(call BuildPackage,vlmcsd)) diff --git a/vlmcsd/files/vlmcsd.ini b/vlmcsd/files/vlmcsd.ini new file mode 100644 index 000000000..fe1e52cf0 --- /dev/null +++ b/vlmcsd/files/vlmcsd.ini @@ -0,0 +1,74 @@ +#ePID/HwId设置为Windows显式 +;Windows = 06401-00206-471-111111-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 + +#ePID设置为Office2010(包含Visio和Project)显式 +;Office2010 = 06401-00096-199-222222-03-1033-17763.0000-2822018 + +#ePID/HwId设置为Office2013(包含Visio和Project)显式 +;Office2013 = 06401-00206-234-333333-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 + +#ePID/HwId设置为Office2016(包含Visio和Project)显式 +;Office2016 = 06401-00206-437-444444-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 + +#ePID/HwId设置为Office2019(包含Visio和Project)显式 +;Office2019 = 06401-00206-666-666666-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 + +#ePID/HwId设置为Windows中国政府版 (Enterprise G/GN) 显式 +;WinChinaGov = 06401-03858-000-555555-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08 + +#使用自定义TCP端口 +;Port = 1688 + +#监听所有IPv4地址(默认端口1688) +;Listen = 0.0.0.0:1688 + +#监听所有IPv6地址(默认端口1688) +;Listen = [::]:1688 + +#程序启动时随机ePIDs(只有那些未显式指定的) +;RandomizationLevel = 1 + +#在ePIDs中使用特定区域 (1033 = 美国英语),即使ePID是随机的 +;LCID = 1033 + +#设置最多4个同时工作(分叉进程或线程) +;MaxWorkers = 4 + +#闲置30秒后断开用户 +;ConnectionTimeout = 30 + +#每次请求后立即断开客户端 +;DisconnectClientsImmediately = yes + +#写一个pid文件(包含vlmcsd的进程ID的文件) +;PidFile = /var/run/vlmcsd.pid + +#写日志到/var/log/vlmcsd.log +;LogFile = /var/log/vlmcsd.log + +#创建详细日志 +;LogVerbose = true + +#设置激活间隔2小时 +;ActivationInterval = 2h + +#设置更新间隔7天 +;RenewalInterval = 7d + +#运行程序的用户为vlmcsduser +;user = vlmcsduser + +#运行程序的组为vlmcsdgroup +;group = vlmcsdgroup + +#禁用或启用RPC的NDR64传输语法(默认启用) +;UseNDR64 = true + +#禁用或启用RPC的绑定时间特性协商(默认启用) +;UseBTFN = true + +#Windows 10/ Windows 11 KMS 安装激活密钥 +#Windows 10/11 Pro:W269N-WFGWX-YVC9B-4J6C9-T83GX +#Windows 10/11 Enterprise:NPPR9-FWDCX-D2C8J-H872K-2YT43 +#Windows 10/11 Pro for Workstations:NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J + diff --git a/vlmcsd/files/vlmcsd.init b/vlmcsd/files/vlmcsd.init new file mode 100755 index 000000000..d65db5671 --- /dev/null +++ b/vlmcsd/files/vlmcsd.init @@ -0,0 +1,37 @@ +#!/bin/sh /etc/rc.common +# Copyright (c) 2011-2015 OpenWrt.org + +START=90 + +start(){ + if [ ! -f "/tmp/vlmcsd.pid" ]; then + /usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -p /tmp/vlmcsd.pid -L 0.0.0.0:1688 + iptables -D input_rule -p tcp --dport 1688 -j ACCEPT + iptables -A input_rule -p tcp --dport 1688 -j ACCEPT + sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user + echo "iptables -A input_rule -p tcp --dport 1688 -j ACCEPT ## luci-app-vlmcsd" >> /etc/firewall.user + echo "KMS Server has started." + else + echo "KMS Server has already started." + fi +} + +stop(){ + if [ ! -f "/tmp/vlmcsd.pid" ]; then + echo "KMS Server is not running." + else + pid=`cat /tmp/vlmcsd.pid` + kill $pid + rm -f /tmp/vlmcsd.pid + iptables -D input_rule -p tcp --dport 1688 -j ACCEPT + sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user + echo "KMS Server has stopped." + fi +} + +restart(){ + stop + sleep 2 + start + echo "KMS Server has restarted." +}