1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
This commit is contained in:
suyuan 2023-09-30 10:23:52 +08:00
commit c488f2f630
98 changed files with 16335 additions and 385 deletions

View file

@ -8,7 +8,7 @@ jobs:
build:
strategy:
matrix:
OMR_TARGET: [bpi-r1, bpi-r2, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64, ubnt-erx, r4s, r7800, rutx, r5s, qnap-301w]
OMR_TARGET: [bpi-r1, bpi-r2, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64, ubnt-erx, r4s, r7800, rutx12, rutx50, r5s, qnap-301w]
OMR_KERNEL: [5.4, 6.1]
runs-on: ubuntu-latest
continue-on-error: true

View file

@ -1,4 +1,10 @@
#!/bin/sh
#
# Copyright (C) 2020, 2022 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
nl="
"
@ -56,7 +62,7 @@ configure() {
if [ "$GO_INSTALL_ALL" != 1 ]; then
code="$(printf '%s\n' "$files" | grep '\.\(c\|cc\|cpp\|go\|h\|hh\|hpp\|proto\|s\)$')"
testdata="$(printf '%s\n' "$files" | grep '/testdata/')"
gomod="$(printf '%s\n' "$files" | grep '/go\.\(mod\|sum\)$')"
gomod="$(printf '%s\n' "$files" | grep '/go\.\(mod\|sum\|work\)$')"
for pattern in $GO_INSTALL_EXTRA; do
extra="$(printf '%s\n' "$extra"; printf '%s\n' "$files" | grep -e "$pattern")"

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2018, 2020 Jeffery To
# Copyright (C) 2018, 2020-2021, 2023 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -60,9 +60,10 @@ define GoCompiler/Default/Install/Bin
$(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api)
$(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/"
$(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/"
for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README.md SECURITY.md; do \
for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \
if [ -f "$(1)/$$$$file" ]; then \
$(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \
fi ; \

View file

@ -1,47 +0,0 @@
#
# Copyright (C) 2018 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=golang-golang-x-crypto
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/golang/crypto.git
PKG_SOURCE_VERSION:=4def268fd1a49955bfb3dda92fe3db4f924f2285
PKG_SOURCE_DATE:=20190701
#PKG_MIRROR_HASH:=80b16b203736ac56883d0610edbc5981eb78f15b7b35d11b5ca639f7c3814214
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=golang.org/x/crypto
GO_PKG_SOURCE_ONLY:=1
include $(INCLUDE_DIR)/package.mk
include ../golang-package.mk
define Package/golang-golang-x-crypto-dev
$(call GoPackage/GoSubMenu)
TITLE:=Go supplementary cryptography libraries
URL:=https://godoc.org/golang.org/x/crypto
DEPENDS:=$(GO_ARCH_DEPENDS) \
+golang-golang-x-net-dev \
+golang-golang-x-sys-dev
PKGARCH:=all
endef
define Package/golang-golang-x-crypto-dev/description
Supplementary Go cryptography libraries.
endef
$(eval $(call GoSrcPackage,golang-golang-x-crypto-dev))
$(eval $(call BuildPackage,golang-golang-x-crypto-dev))

View file

@ -1,58 +0,0 @@
#
# Copyright (C) 2018 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=golang-golang-x-net
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/golang/net.git
PKG_SOURCE_VERSION:=afe8f62b1d6bbd81f31868121a50b06d8188e1f9
PKG_SOURCE_DATE:=20180620
PKG_MIRROR_HASH:=9a8bb3bf21ea60121d7e87f1bd1af9effbdcd908f758be99457653172d13eb1e
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=golang.org/x/net
# exclude http2/h2i to break circular dependency with golang-golang-x-crypto-dev
# since there are no other binaries, can skip compilation
GO_PKG_SOURCE_ONLY:=1
include $(INCLUDE_DIR)/package.mk
include ../golang-package.mk
define Package/golang-golang-x-net-dev
$(call GoPackage/GoSubMenu)
TITLE:=Go supplementary network libraries
URL:=https://godoc.org/golang.org/x/net
DEPENDS:=$(GO_ARCH_DEPENDS) +golang-golang-x-text-dev
PKGARCH:=all
endef
define Package/golang-golang-x-net-dev/description
Supplementary Go networking libraries.
endef
# http2/testdata/draft-ietf-httpbis-http2.xml is a non-free document
# http2/z_spec_test.go uses http2/testdata/draft-ietf-httpbis-http2.xml
define Package/golang-golang-x-net-dev/install
$(call GoPackage/Package/Install/Src,$(1))
rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/draft-ietf-httpbis-http2.xml
rmdir $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/
rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/z_spec_test.go
endef
$(eval $(call GoSrcPackage,golang-golang-x-net-dev))
$(eval $(call BuildPackage,golang-golang-x-net-dev))

View file

@ -1,46 +0,0 @@
#
# Copyright (C) 2018 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=golang-golang-x-sys
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/golang/sys.git
PKG_SOURCE_VERSION:=63fc586f45fe72d95d5240a5d5eb95e6503907d3
PKG_SOURCE_DATE:=20180621
PKG_MIRROR_HASH:=3afe7936fb9fb291ef9b9cfa88f51576cdc19abbd34240232ce284958ac7dbaf
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=golang.org/x/sys
GO_PKG_SOURCE_ONLY:=1
include $(INCLUDE_DIR)/package.mk
include ../golang-package.mk
define Package/golang-golang-x-sys-dev
$(call GoPackage/GoSubMenu)
TITLE:=Go packages for interaction with the OS
URL:=https://godoc.org/golang.org/x/sys
DEPENDS:=$(GO_ARCH_DEPENDS)
PKGARCH:=all
endef
define Package/golang-golang-x-sys-dev/description
Supplementary Go packages for low-level interactions with the operating
system.
endef
$(eval $(call GoSrcPackage,golang-golang-x-sys-dev))
$(eval $(call BuildPackage,golang-golang-x-sys-dev))

View file

@ -1,47 +0,0 @@
#
# Copyright (C) 2018 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=golang-golang-x-text
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/golang/text.git
PKG_SOURCE_VERSION:=5cec4b58c438bd98288aeb248bab2c1840713d21
PKG_SOURCE_DATE:=20180520
PKG_MIRROR_HASH:=6c541a59f32f57afa54a2216045ddf16a077f8fe2e823fbbe77723eca04ddddb
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=golang.org/x/text
# exclude gotext (and message/pipeline) to avoid dependency on golang.org/x/tools
# since there are no other binaries, can skip compilation
GO_PKG_SOURCE_ONLY:=1
include $(INCLUDE_DIR)/package.mk
include ../golang-package.mk
define Package/golang-golang-x-text-dev
$(call GoPackage/GoSubMenu)
TITLE:=Go text processing support
URL:=https://godoc.org/golang.org/x/text
DEPENDS:=$(GO_ARCH_DEPENDS)
PKGARCH:=all
endef
define Package/golang-golang-x-text-dev/description
Supplementary Go libraries for text processing, many involving Unicode.
endef
$(eval $(call GoSrcPackage,golang-golang-x-text-dev))
$(eval $(call BuildPackage,golang-golang-x-text-dev))

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2020 Jeffery To
# Copyright (C) 2020, 2022 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -107,10 +107,10 @@ GO_HOST_CUSTOM_LDFLAGS= \
GO_HOST_INSTALL_ARGS= \
-v \
-ldflags "all=$(GO_HOST_DEFAULT_LDFLAGS)" \
$(if $(filter $(GO_HOST_ENABLE_PIE),1),-buildmode pie) \
$(if $(GO_HOST_GCFLAGS),-gcflags "$(GO_HOST_GCFLAGS)") \
$(if $(GO_HOST_CUSTOM_LDFLAGS),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \
$(if $(GO_HOST_TAGS),-tags "$(GO_HOST_TAGS)")
$(if $(GO_HOST_ENABLE_PIE),-buildmode pie) \
$(if $(strip $(GO_HOST_GCFLAGS)),-gcflags "$(GO_HOST_GCFLAGS)") \
$(if $(strip $(GO_HOST_CUSTOM_LDFLAGS)),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \
$(if $(strip $(GO_HOST_TAGS)),-tags "$(GO_HOST_TAGS)")
define GoHost/Host/Configure
$(GO_GENERAL_BUILD_CONFIG_VARS) \

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2018-2020 Jeffery To
# Copyright (C) 2018-2022 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -32,7 +32,7 @@ include $(GO_INCLUDE_DIR)/golang-values.mk
#
# * Files in any 'testdata' directory
#
# * go.mod and go.sum, in any directory
# * go.mod, go.sum and go.work, in any directory
#
# e.g. GO_PKG_INSTALL_EXTRA:=example.toml marshal_test.toml
#
@ -198,9 +198,11 @@ GO_PKG_TARGET_VARS= \
GOOS="$(GO_OS)" \
GOARCH="$(GO_ARCH)" \
GO386="$(GO_386)" \
GOAMD64="$(GO_AMD64)" \
GOARM="$(GO_ARM)" \
GOMIPS="$(GO_MIPS)" \
GOMIPS64="$(GO_MIPS64)" \
GOPPC64="$(GO_PPC64)" \
CGO_ENABLED=1 \
CC="$(TARGET_CC)" \
CXX="$(TARGET_CXX)" \
@ -213,7 +215,8 @@ GO_PKG_BUILD_VARS= \
GOPATH="$(GO_PKG_BUILD_DIR)" \
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
GOMODCACHE="$(GO_MOD_CACHE_DIR)" \
GOENV=off GOPROXY="direct"
GOENV=off GOPROXY="direct" \
GOTOOLCHAIN=local
GO_PKG_VARS= \
$(GO_PKG_TARGET_VARS) \
@ -236,17 +239,18 @@ GO_PKG_CUSTOM_LDFLAGS= \
GO_PKG_INSTALL_ARGS= \
-v \
-buildvcs=false \
-trimpath \
-ldflags "all=$(GO_PKG_DEFAULT_LDFLAGS)" \
$(if $(GO_PKG_DEFAULT_GCFLAGS),-gcflags "all=$(GO_PKG_DEFAULT_GCFLAGS)") \
$(if $(GO_PKG_DEFAULT_ASMFLAGS),-asmflags "all=$(GO_PKG_DEFAULT_ASMFLAGS)") \
$(if $(filter $(GO_PKG_ENABLE_PIE),1),-buildmode pie) \
$(if $(strip $(GO_PKG_DEFAULT_GCFLAGS)),-gcflags "all=$(GO_PKG_DEFAULT_GCFLAGS)") \
$(if $(strip $(GO_PKG_DEFAULT_ASMFLAGS)),-asmflags "all=$(GO_PKG_DEFAULT_ASMFLAGS)") \
$(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \
$(if $(filter $(GO_ARCH),arm),-installsuffix "v$(GO_ARM)") \
$(if $(filter $(GO_ARCH),mips mipsle),-installsuffix "$(GO_MIPS)") \
$(if $(filter $(GO_ARCH),mips64 mips64le),-installsuffix "$(GO_MIPS64)") \
$(if $(GO_PKG_GCFLAGS),-gcflags "$(GO_PKG_GCFLAGS) $(GO_PKG_DEFAULT_GCFLAGS)") \
$(if $(GO_PKG_CUSTOM_LDFLAGS),-ldflags "$(GO_PKG_CUSTOM_LDFLAGS) $(GO_PKG_DEFAULT_LDFLAGS)") \
$(if $(GO_PKG_TAGS),-tags "$(GO_PKG_TAGS)")
$(if $(strip $(GO_PKG_GCFLAGS)),-gcflags "$(GO_PKG_GCFLAGS) $(GO_PKG_DEFAULT_GCFLAGS)") \
$(if $(strip $(GO_PKG_CUSTOM_LDFLAGS)),-ldflags "$(GO_PKG_CUSTOM_LDFLAGS) $(GO_PKG_DEFAULT_LDFLAGS)") \
$(if $(strip $(GO_PKG_TAGS)),-tags "$(GO_PKG_TAGS)")
define GoPackage/Build/Configure
$(GO_GENERAL_BUILD_CONFIG_VARS) \
@ -314,14 +318,3 @@ define GoSrcPackage
Package/$(1)/install=$$(call GoPackage/Package/Install/Src,$$(1))
endif
endef
# Deprecated variables - these will be removed after the next OpenWrt release
GO_PKG_PATH=$(GO_PKG_BUILD_DEPENDS_PATH)
GO_PKG_WORK_DIR=$(PKG_BUILD_DIR)/$(GO_PKG_WORK_DIR_NAME)
GO_PKG_CACHE_DIR=$(GO_BUILD_CACHE_DIR)
GO_PKG_DEFAULT_VARS=$(GO_PKG_VARS)
GoPackage/Environment=$(GO_PKG_VARS)
GoPackage/is_dir_not_empty=$$$$($(FIND) "$(1)" -maxdepth 0 -type d \! -empty 2>/dev/null)
GoPackage/has_binaries=$(call GoPackage/is_dir_not_empty,$(GO_PKG_BUILD_BIN_DIR))
# End of deprecated variables

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2018, 2020 Jeffery To
# Copyright (C) 2018-2023 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -29,8 +29,10 @@ unexport \
GOOS \
GOPATH \
GOROOT \
GOTOOLCHAIN \
GOTMPDIR \
GOWORK GOPROXY
GOPROXY \
GOWORK
# Unmodified:
# GOINSECURE
# GOPRIVATE
@ -201,7 +203,7 @@ endif
# Target Go
GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||x86_64)
GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64)
# ASLR/PIE
@ -219,7 +221,7 @@ GO_PIE_SUPPORTED_OS_ARCH:= \
\
aix_ppc64 \
\
linux_ppc64le linux_riscv64 linux_s390x
linux_loong64 linux_ppc64le linux_riscv64 linux_s390x
# From https://go.dev/src/cmd/go/internal/work/init.go
go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared)

View file

@ -17,7 +17,7 @@ config GOLANG_BUILD_CACHE_DIR
default ""
help
Store the Go build cache in this directory.
If not set, uses './.go-build'.
If not set, uses '$(TMP_DIR)/go-build'.
config GOLANG_MOD_CACHE_WORLD_READABLE
bool "Ensure Go module cache is world-readable"

View file

@ -1,5 +1,5 @@
#
# Copyright (C) 2018, 2020 Jeffery To
# Copyright (C) 2018-2023 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -7,10 +7,8 @@
include $(TOPDIR)/rules.mk
#GO_VERSION_MAJOR_MINOR:=1.20
#GO_VERSION_PATCH:=3
GO_VERSION_MAJOR_MINOR:=1.20
GO_VERSION_PATCH:=999
GO_VERSION_MAJOR_MINOR:=1.21
GO_VERSION_PATCH:=1
PKG_NAME:=golang
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
@ -20,14 +18,9 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \
https://mirrors.ustc.edu.cn/golang/ \
https://mirrors.nju.edu.cn/golang/
#PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
#PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
#PKG_HASH:=e447b498cde50215c4f7619e5124b0fc4e25fb5d16ea47271c47f278e7aa763a
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/golang/go.git
PKG_SOURCE_VERSION:=a5350558e6e2db16bfe09f2ba8104549c6598c46
PKG_SOURCE_DATE:=2023-05-05
PKG_SOURCE_SUBDIR:=go-$(PKG_VERSION)
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
PKG_HASH:=bfa36bf75e9a1e9cbbdb9abcf9d1707e479bd3a07880a8ae3564caee5711cb99
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=BSD-3-Clause
@ -37,7 +30,6 @@ PKG_CPE_ID:=cpe:/a:golang:go
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
#PKG_USE_MIPS16:=0
PKG_BUILD_FLAGS:=no-mips16
PKG_GO_PREFIX:=/usr
@ -70,6 +62,7 @@ HOST_GO_VALID_OS_ARCH:= \
\
aix_ppc64 \
js_wasm \
wasip1_wasm \
\
freebsd_riscv64 \
\
@ -108,7 +101,7 @@ include ../golang-compiler.mk
include ../golang-package.mk
PKG_UNPACK:=$(HOST_TAR) -C "$(PKG_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
#HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
BOOTSTRAP_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_SOURCE)"
BOOTSTRAP_1_17_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_17_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_17_SOURCE)"
@ -242,13 +235,10 @@ HOST_GO_VARS= \
CXX="$(HOSTCXX_NOCACHE)"
define Host/Configure
sed -i 's/1\.21/1.20/g' $(HOST_BUILD_DIR)/src/go.mod
sed -i 's/21/20/g' $(HOST_BUILD_DIR)/src/internal/goversion/goversion.go
$(call GoCompiler/Bootstrap/CheckHost,$(BOOTSTRAP_GO_VALID_OS_ARCH))
$(call GoCompiler/Host/CheckHost,$(HOST_GO_VALID_OS_ARCH))
mkdir -p "$(GO_BUILD_CACHE_DIR)"
echo "go$(PKG_VERSION)" > $(HOST_BUILD_DIR)/VERSION
endef
define Host/Compile
@ -307,7 +297,7 @@ $(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$(
PKG_GO_ZBOOTSTRAP_MODS:= \
s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \
s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \
s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),5)`/; \
s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),7)`/; \
s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \
s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \
s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/;
@ -345,14 +335,12 @@ PKG_GO_INSTALL_ARGS= \
$(if $(filter $(GO_PKG_ENABLE_PIE),1),-buildmode pie)
define Build/Configure
sed -i 's/1\.21/1.20/g' $(HOST_BUILD_DIR)/src/go.mod
sed -i 's/21/20/g' $(HOST_BUILD_DIR)/src/internal/goversion/goversion.go
mkdir -p "$(GO_BUILD_CACHE_DIR)"
echo "go$(PKG_VERSION)" > $(PKG_BUILD_DIR)/VERSION
endef
define Build/Compile
@echo "Building target Go first stage"
$(call GoCompiler/Package/Make, \
GOROOT_BOOTSTRAP="$(HOST_GO_ROOT)" \
GO_GCC_HELPER_CC="$(HOSTCC)" \

View file

@ -1,4 +1,10 @@
#!/bin/sh
#
# Copyright (C) 2018, 2020 Jeffery To
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
me=go-gcc-helper
name="${0##*/}"

View file

@ -1,11 +0,0 @@
--- a/src/net/dial.go 2023-05-06 10:33:54.275030044 +0200
+++ b/src/net/dial.go 2023-05-06 10:34:29.218440686 +0200
@@ -18,7 +18,7 @@
// For the moment, MultiPath TCP is not used by default
// See go.dev/issue/56539
- defaultMPTCPEnabled = false
+ defaultMPTCPEnabled = true
)
// mptcpStatus is a tristate for Multipath TCP, see go.dev/issue/56539

5
golang/golang/test.sh Normal file
View file

@ -0,0 +1,5 @@
#!/bin/sh
[ "$1" = golang ] || exit 0
go version | grep -F " go$PKG_VERSION "

View file

@ -8,17 +8,19 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=iproute2
PKG_VERSION:=6.2.0
PKG_VERSION:=6.4.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
PKG_HASH:=4d72730200ec5b2aabaa1a2f20553c6748292f065d9a154c7d5e22559df9fd62
PKG_HASH:=4c51b8decbc7e4da159ffb066f590cfb93dbf9af7ff86b1647ce42b7c179a272
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=iptables
PKG_LICENSE:=GPL-2.0
PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2
PKG_BUILD_FLAGS:=gc-sections lto
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
@ -171,8 +173,7 @@ define Build/Configure
> $(PKG_BUILD_DIR)/include/SNAPSHOT.h
endef
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections -Wl,--as-needed
TARGET_LDFLAGS += -Wl,--as-needed
TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
MAKE_FLAGS += \

View file

@ -59,7 +59,7 @@ return L.view.extend({
o = s.option(form.ListValue, 'family', _('Restrict to address family'));
o.value('ipv4ipv6', _('IPv4 and IPv6'));
o.value('ipv4', _('IPv4 only'));
o.value('ipv4', _('IPv6 only'));
o.value('ipv6', _('IPv6 only'));
o.default = 'ipv4ipv6';
o.modalonly = true

View file

@ -1,2 +1,2 @@
#!/bin/sh
[ -z "$(pgrep -f omr-bypass)" ] && logger -t "firewall.omr-bypass" "reloal omr-bypass rules" && /etc/init.d/omr-bypass reload_rules
[ -z "$(pgrep -f omr-bypass)" ] && logger -t "firewall.omr-bypass" "reload omr-bypass rules" && /etc/init.d/omr-bypass reload_rules

View file

@ -685,6 +685,59 @@ _intf_rule_v2ray_rules() {
fi
}
_intf_rule_xray_rules() {
#rule_name=$1
#[ "$rule_name" = "ss_rules" ] && rule_name="def"
rule_name="def"
if [ "$($IPTABLES --wait=40 -t nat -L -n | grep xr_${rule_name}_dst)" != "" ] && [ "$($IPTABLESSAVE 2>/dev/null | grep xr_${rule_name}_dst | grep omr_dst_bypass_$intf)" = "" ]; then
$IPTABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
-I xr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN
COMMIT
EOF
fi
if [ "$($IPTABLES --wait=40 -t nat -L -n | grep xr_${rule_name}_local_out)" != "" ] && [ "$($IPTABLESSAVE 2>/dev/null | grep xr_${rule_name}_local_out | grep omr_dst_bypass_$intf)" = "" ]; then
$IPTABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
-I xr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN
COMMIT
EOF
fi
if [ "$($IPTABLES --wait=40 -t nat -L -n | grep xr_${rule_name}_pre_src)" != "" ] && [ "$($IPTABLESSAVE 2</dev/null | grep xr_${rule_name}_pre_src | grep omr_dst_bypass_$intf)" = "" ]; then
$IPTABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
-I xr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN
COMMIT
EOF
fi
if [ "$disableipv6" = "0" ]; then
if [ "$($IP6TABLESSAVE | grep omr-bypass6 | grep omr6_dst_bypass_$intf)" = "" ]; then
$IP6TABLESRESTORE -w --wait=60 --noflush <<-EOF
*mangle
-I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
COMMIT
EOF
fi
if [ "$($IP6TABLES --wait=40 -t nat -L -n | grep xr6_${rule_name}_pre_src)" != "" ] && [ "$($IP6TABLESSAVE 2>/dev/null | grep xr6 | grep omr6_dst_bypass_$intf)" = "" ]; then
$IP6TABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
-I xr6_${rule_name}_dst 2 -m mark --mark 0x6539$count -j RETURN
-I xr6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
-I xr6_${rule_name}_local_out 2 -m mark --mark 0x6539$count -j RETURN
-I xr6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
-I xr6_${rule_name}_pre_src 2 -m mark --mark 0x6539$count -j RETURN
COMMIT
EOF
fi
fi
}
_intf_rule() {
local intf
intf=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
@ -740,8 +793,13 @@ _intf_rule() {
if [ "$(uci -q get openmptcprouter.settings.proxy)" = "shadowsocks" ]; then
config_load shadowsocks-libev
config_foreach _intf_rule_ss_rules ss_rules
elif [ "$(uci -q get openmptcprouter.settings.proxy)" = "shadowsocks-rust" ]; then
config_load shadowsocks-rust
config_foreach _intf_rule_ss_rules ss_rules
elif [ "$(uci -q get openmptcprouter.settings.proxy)" = "v2ray" ]; then
_intf_rule_v2ray_rules
elif [ "$(uci -q get openmptcprouter.settings.proxy)" = "xray" ]; then
_intf_rule_xray_rules
fi
uci -q set omr-bypass.$intf=interface
@ -864,6 +922,45 @@ _v2ray_rules_config() {
fi
}
_xray_rules_config() {
#rule_name=$1
#[ "$rule_name" = "ss_rules" ] && rule_name="def"
rule_name="def"
if [ "$($IPTABLES --wait=40 -t nat -L -n | grep xr_${rule_name}_pre_src)" != "" ] && [ "$($IPTABLES --wait=40 -t nat -L -n | grep omr_dst_bypass_all)" = "" ]; then
$IPTABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539
-I xr_${rule_name}_dst 2 -m mark --mark 0x539 -j RETURN
-I xr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539
-I xr_${rule_name}_local_out 2 -m mark --mark 0x539 -j RETURN
-I xr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539
-I xr_${rule_name}_pre_src 2 -m mark --mark 0x539 -j RETURN
COMMIT
EOF
fi
if [ "$disableipv6" = "0" ]; then
if [ "$($IP6TABLES --wait=40 -t mangle -L -n | grep 'match-set omr6_dst_bypass_all dst MARK set')" = "" ]; then
$IP6TABLESRESTORE -w --wait=60 --noflush <<-EOF
*mangle
-A omr-bypass6 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539
COMMIT
EOF
fi
if [ "$($IP6TABLES --wait=40 -t nat -L -n | grep xr6_${rule_name}_pre_src)" != "" ] && [ "$($IP6TABLES --wait=40 -t nat -L -n | grep omr6_dst_bypass_all)" = "" ]; then
$IP6TABLESRESTORE -w --wait=60 --noflush <<-EOF
*nat
-I xr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539
-I xr6_${rule_name}_dst 1 -m mark --mark 0x6539 -j RETURN
-I xr6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539
-I xr6_${rule_name}_local_out 2 -m mark --mark 0x6539 -j RETURN
-I xr6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539
-I xr6_${rule_name}_pre_src 2 -m mark --mark 0x6539 -j RETURN
COMMIT
EOF
fi
fi
}
boot() {
BOOT=1
start "$@"
@ -970,7 +1067,10 @@ start_service() {
config_load shadowsocks-libev
config_foreach _ss_rules_config
config_load shadowsocks-rust
config_foreach _ss_rules_config
_v2ray_rules_config
_xray_rules_config
$IPTABLESSAVE --counters 2>/dev/null | grep -v omr-bypass-dpi | $IPTABLESRESTORE -w --counters 2>/dev/null
$IPTABLESRESTORE -w --wait=60 --noflush <<-EOF

View file

@ -613,6 +613,7 @@ function wizard_add()
ucic:set("openmptcprouter",server,"master","1")
ucic:set("openmptcprouter",server,"current","1")
ucic:set("openmptcprouter",server,"backup","0")
ucic:set("xray","omrout","s_shadowsocks_email",openmptcprouter_vps_username:gsub("%s+", ""))
else
ucic:set("openmptcprouter",server,"get_config","0")
ucic:set("openmptcprouter",server,"master","0")
@ -669,14 +670,34 @@ function wizard_add()
if default_proxy == "shadowsocks" and serversnb > 0 and serversnb > disablednb then
--ucic:set("shadowsocks-libev","sss0","disabled","0")
ucic:set("v2ray","main","enabled","0")
ucic:set("xray","main","enabled","0")
ucic:foreach("shadowsocks-libev", "server", function(s)
local sectionname = s[".name"]
if sectionname:match("^sss.*") and ucic:get("shadowsocks-libev",sectionname,"server") ~= "" then
ucic:set("shadowsocks-libev",sectionname,"disabled","0")
end
end)
ucic:foreach("shadowsocks-rust", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-rust",sectionname,"disabled","1")
end)
elseif default_proxy == "shadowsocks-rust" and serversnb > 0 and serversnb > disablednb then
--ucic:set("shadowsocks-libev","sss0","disabled","0")
ucic:set("v2ray","main","enabled","0")
ucic:set("xray","main","enabled","0")
ucic:foreach("shadowsocks-rust", "server", function(s)
local sectionname = s[".name"]
if sectionname:match("^sss.*") and ucic:get("shadowsocks-rust",sectionname,"server") ~= "" then
ucic:set("shadowsocks-rust",sectionname,"disabled","0")
end
end)
ucic:foreach("shadowsocks-libev", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-libev",sectionname,"disabled","1")
end)
elseif (default_proxy == "v2ray" or default_proxy == "v2ray-vmess" or default_proxy == "v2ray-trojan" or default_proxy == "v2ray-socks") and serversnb > 0 and serversnb > disablednb then
--ucic:set("shadowsocks-libev","sss0","disabled","1")
ucic:set("xray","main","enabled","0")
ucic:set("v2ray","main","enabled","1")
if default_proxy == "v2ray" then
ucic:set("v2ray","omrout","protocol","vless")
@ -691,18 +712,51 @@ function wizard_add()
local sectionname = s[".name"]
ucic:set("shadowsocks-libev",sectionname,"disabled","1")
end)
else
ucic:foreach("shadowsocks-rust", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-rust",sectionname,"disabled","1")
end)
elseif (default_proxy == "xray" or default_proxy == "xray-vmess" or default_proxy == "xray-trojan" or default_proxy == "xray-shadowsocks" or default_proxy == "xray-socks") and serversnb > 0 and serversnb > disablednb then
--ucic:set("shadowsocks-libev","sss0","disabled","1")
ucic:set("v2ray","main","enabled","0")
ucic:set("xray","main","enabled","1")
if default_proxy == "xray" then
ucic:set("xray","omrout","protocol","vless")
elseif default_proxy == "xray-vmess" then
ucic:set("xray","omrout","protocol","vmess")
elseif default_proxy == "xray-trojan" then
ucic:set("xray","omrout","protocol","trojan")
elseif default_proxy == "xray-socks" then
ucic:set("xray","omrout","protocol","socks")
elseif default_proxy == "xray-shadowsocks" then
ucic:set("xray","omrout","protocol","shadowsocks")
end
ucic:foreach("shadowsocks-libev", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-libev",sectionname,"disabled","1")
end)
ucic:foreach("shadowsocks-rust", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-rust",sectionname,"disabled","1")
end)
else
--ucic:set("shadowsocks-libev","sss0","disabled","1")
ucic:set("v2ray","main","enabled","0")
ucic:set("xray","main","enabled","0")
ucic:foreach("shadowsocks-libev", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-libev",sectionname,"disabled","1")
end)
ucic:foreach("shadowsocks-rust", "server", function(s)
local sectionname = s[".name"]
ucic:set("shadowsocks-rust",sectionname,"disabled","1")
end)
end
ucic:set("openmptcprouter","settings","proxy",default_proxy)
ucic:save("openmptcprouter")
ucic:save("shadowsocks-libev")
ucic:save("v2ray")
ucic:save("xray")
ucic:foreach("shadowsocks-libev","server", function(s)
local sectionname = s[".name"]
@ -744,6 +798,11 @@ function wizard_add()
ucic:set("v2ray","omrout","s_vless_address",server_ip)
ucic:set("v2ray","omrout","s_trojan_address",server_ip)
ucic:set("v2ray","omrout","s_socks_address",server_ip)
ucic:set("xray","omrout","s_vmess_address",server_ip)
ucic:set("xray","omrout","s_vless_address",server_ip)
ucic:set("xray","omrout","s_trojan_address",server_ip)
ucic:set("xray","omrout","s_socks_address",server_ip)
ucic:set("xray","omrout","s_shadowsocks_address",server_ip)
luci.sys.call("uci -q del openvpn.omr.remote")
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
ucic:set("qos","serverin","srchost",server_ip)
@ -784,6 +843,11 @@ function wizard_add()
ucic:set("v2ray","omrout","s_vless_address",server_ip)
ucic:set("v2ray","omrout","s_trojan_address",server_ip)
ucic:set("v2ray","omrout","s_socks_address",server_ip)
ucic:set("xray","omrout","s_vmess_address",server_ip)
ucic:set("xray","omrout","s_vless_address",server_ip)
ucic:set("xray","omrout","s_trojan_address",server_ip)
ucic:set("xray","omrout","s_socks_address",server_ip)
ucic:set("xray","omrout","s_shadowsocks_address",server_ip)
luci.sys.call("uci -q del openvpn.omr.remote")
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
ucic:set("qos","serverin","srchost",server_ip)
@ -816,6 +880,7 @@ function wizard_add()
ucic:save("mlvpn")
ucic:save("ubond")
ucic:save("v2ray")
ucic:save("xray")
--ucic:commit("mlvpn")
ucic:save("dsvpn")
--ucic:commit("dsvpn")
@ -831,12 +896,19 @@ function wizard_add()
ucic:set("openmptcprouter","settings","encryption","none")
ucic:set("shadowsocks-libev","sss0","method","none")
ucic:set("shadowsocks-libev","sss1","method","none")
ucic:set("shadowsocks-rust","sss0","method","none")
ucic:set("shadowsocks-rust","sss1","method","none")
ucic:set("openvpn","omr","cipher","none")
ucic:set("mlvpn","general","cleartext_data","1")
ucic:set("v2ray","omrout","s_vmess_user_security","none")
ucic:set("v2ray","omrout","s_vless_user_security","none")
ucic:set("v2ray","omrout","s_trojan_user_security","none")
ucic:set("v2ray","omrout","s_socks_user_security","none")
ucic:set("xray","omrout","s_vmess_user_security","none")
ucic:set("xray","omrout","s_vless_user_security","none")
ucic:set("xray","omrout","s_trojan_user_security","none")
ucic:set("xray","omrout","s_socks_user_security","none")
ucic:set("xray","omrout","s_shadowsocks_method","none")
elseif encryption == "aes-256-gcm" then
ucic:set("openmptcprouter","settings","encryption","aes-256-gcm")
ucic:set("shadowsocks-libev","sss0","method","aes-256-gcm")
@ -849,6 +921,13 @@ function wizard_add()
ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm")
ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm")
ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm")
ucic:set("shadowsocks-rust","sss0","s_shadowsocks_method","2022-blake3-aes-256-gcm")
ucic:set("shadowsocks-rust","sss1","s_shadowsocks_method","2022-blake3-aes-256-gcm")
elseif encryption == "aes-256-cfb" then
ucic:set("openmptcprouter","settings","encryption","aes-256-cfb")
ucic:set("shadowsocks-libev","sss0","method","aes-256-cfb")
@ -861,6 +940,13 @@ function wizard_add()
ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm")
ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm")
ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm")
ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm")
ucic:set("shadowsocks-rust","sss0","s_shadowsocks_method","2022-blake3-aes-256-gcm")
ucic:set("shadowsocks-rust","sss1","s_shadowsocks_method","2022-blake3-aes-256-gcm")
elseif encryption == "chacha20-ietf-poly1305" then
ucic:set("openmptcprouter","settings","encryption","chacha20")
ucic:set("shadowsocks-libev","sss0","method","chacha20-ietf-poly1305")
@ -873,6 +959,13 @@ function wizard_add()
ucic:set("v2ray","omrout","s_vless_user_security","chacha20-poly1305")
ucic:set("v2ray","omrout","s_trojan_user_security","chacha20-poly1305")
ucic:set("v2ray","omrout","s_socks_user_security","chacha20-poly1305")
ucic:set("xray","omrout","s_vmess_user_security","chacha20-poly1305")
ucic:set("xray","omrout","s_vless_user_security","chacha20-poly1305")
ucic:set("xray","omrout","s_trojan_user_security","chacha20-poly1305")
ucic:set("xray","omrout","s_socks_user_security","chacha20-poly1305")
ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-chacha20-poly1305")
ucic:set("shadowsocks-rust","sss0","s_shadowsocks_method","2022-blake3-chacha20-poly1305")
ucic:set("shadowsocks-rust","sss1","s_shadowsocks_method","2022-blake3-chacha20-poly1305")
else
ucic:set("openmptcprouter","settings","encryption","other")
end
@ -881,6 +974,7 @@ function wizard_add()
ucic:save("glorytun-udp")
ucic:save("shadowsocks-libev")
ucic:save("v2ray")
ucic:save("xray")
-- Set ShadowSocks settings
local shadowsocks_key = luci.http.formvalue("shadowsocks_key")
@ -897,7 +991,7 @@ function wizard_add()
ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev")
if shadowsocks_disable == "1" then
luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null")
end
else
if serversnb == 0 then
@ -908,8 +1002,33 @@ function wizard_add()
ucic:set("shadowsocks-libev","sss1","key","")
ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev")
luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null")
end
-- Set ShadowSocks 2022 settings
local shadowsocks2022_key = luci.http.formvalue("shadowsocks2022_key")
if shadowsocks2022_key ~= "" then
ucic:set("shadowsocks-rust","sss0","password",shadowsocks2022_key)
ucic:set("shadowsocks-rust","sss1","password",shadowsocks2022_key)
ucic:set("xray","omrout","s_shadowsocks_password",shadowsocks2022_key)
ucic:save("shadowsocks-rust")
ucic:commit("shadowsocks-rust")
if shadowsocks_disable == "1" then
luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null")
end
else
if serversnb == 0 then
ucic:set("shadowsocks-rust","sss0","disabled","1")
ucic:set("shadowsocks-rust","sss1","disabled","1")
end
ucic:set("shadowsocks-rust","sss0","key","")
ucic:set("shadowsocks-rust","sss1","key","")
ucic:set("xray","omrout","s_shadowsocks_password","")
ucic:save("shadowsocks-rust")
ucic:commit("shadowsocks-rust")
luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null")
end
local v2ray_user = luci.http.formvalue("v2ray_user")
ucic:set("v2ray","omrout","s_vmess_user_id",v2ray_user)
ucic:set("v2ray","omrout","s_vless_user_id",v2ray_user)
@ -917,6 +1036,14 @@ function wizard_add()
ucic:set("v2ray","omrout","s_socks_user_id",v2ray_user)
ucic:save("v2ray")
ucic:commit("v2ray")
ucic:set("xray","omrout","s_vmess_user_id",v2ray_user)
ucic:set("xray","omrout","s_vless_user_id",v2ray_user)
ucic:set("xray","omrout","s_trojan_user_id",v2ray_user)
ucic:set("xray","omrout","s_socks_user_id",v2ray_user)
ucic:save("xray")
ucic:commit("xray")
ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev")
-- Set Glorytun settings
@ -1046,6 +1173,8 @@ function wizard_add()
ucic:save("v2ray")
ucic:commit("v2ray")
ucic:save("xray")
ucic:commit("xray")
ucic:save("network")
ucic:commit("network")
@ -1086,6 +1215,7 @@ function wizard_add()
luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/xray restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/sqm restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/sqm-autorate restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/sysntpd restart >/dev/null 2>/dev/null")
@ -1214,11 +1344,14 @@ function settings_add()
local shadowsocksudp = luci.http.formvalue("shadowsocksudp") or "0"
ucic:set("openmptcprouter","settings","shadowsocksudp",shadowsocksudp)
-- Enable/disable v2ray udp
-- Enable/disable v2ray/xray udp
local v2rayudp = luci.http.formvalue("v2rayudp") or "0"
ucic:set("v2ray","main_transparent_proxy","redirect_udp",v2rayudp)
ucic:save("v2ray")
ucic:commit("v2ray")
ucic:set("xray","main_transparent_proxy","redirect_udp",v2rayudp)
ucic:save("xray")
ucic:commit("xray")
-- Enable/disable nDPI
local ndpi = luci.http.formvalue("ndpi") or "1"

View file

@ -292,15 +292,23 @@
</div>
</div>
<div class="cbi-value">
<label class="cbi-value-title"><%:When proxy shadowsocks is used, use it for UDP if VPN down%></label>
<label class="cbi-value-title"><%:Shadowsocks UDP%></label>
<div class="cbi-value-field">
<input type="checkbox" name="shadowsocksudp" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("openmptcprouter","settings","shadowsocksudp") == "1" then %>checked<% end %>>
<br />
<div class="cbi-value-description">
<%:When proxy shadowsocks is used, use it for UDP if VPN down%>
</div>
</div>
</div>
<div class="cbi-value">
<label class="cbi-value-title"><%:When proxy V2Ray VLESS or VMESS is used, use it for UDP%></label>
<label class="cbi-value-title"><%:V2Ray/XRay UDP%></label>
<div class="cbi-value-field">
<input type="checkbox" name="v2rayudp" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("v2ray","main_transparent_proxy","redirect_udp") == "1" then %>checked<% end %>>
<br />
<div class="cbi-value-description">
<%:When proxy V2Ray/XRay VLESS, VMESS or Trojan is used, use it for UDP%>
</div>
</div>
</div>
<div class="cbi-value">

View file

@ -163,6 +163,18 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
statusMessage += '<br/>';
}
}
if (mArray.openmptcprouter.shadowsocksrust_enabled == true && mArray.openmptcprouter.service_addr != "")
{
if (mArray.openmptcprouter.shadowsocksrust_service == false)
{
statusMessage += '<%:ShadowSocks Rust is not running%>';
if (mArray.openmptcprouter.shadowsocksrust_service_key == false && mArray.openmptcprouter.shadowsocksrust_service_method !== "none")
{
statusMessage += ' <i>(' + '<%:empty key%>' + ')</i>';
}
statusMessage += '<br/>';
}
}
if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.service_addr != "")
{
if (mArray.openmptcprouter.v2ray_service == false)
@ -171,6 +183,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
statusMessage += '<br/>';
}
}
if (mArray.openmptcprouter.xray_enabled == true && mArray.openmptcprouter.service_addr != "")
{
if (mArray.openmptcprouter.xray_service == false)
{
statusMessage += '<%:XRay is not running%>';
statusMessage += '<br/>';
}
}
if (mArray.openmptcprouter.fsro == true)
{
statusMessage += '<%:Filesystem is readonly%>' + '<br/>';
@ -194,7 +214,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png";
} else if (mArray.openmptcprouter.service_addr != "")
{
if (mArray.openmptcprouter.v2ray_enabled == false && mArray.openmptcprouter.shadowsocks_enabled == false)
if (mArray.openmptcprouter.xray_enabled == false && mArray.openmptcprouter.v2ray_enabled == false && mArray.openmptcprouter.shadowsocks_enabled == false && mArray.openmptcprouter.shadowsocksrust_enabled == false)
{
statusMessage += '<%:Proxy is DISABLED%>' + '<br/>';
}
@ -285,9 +305,15 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
} else if (mArray.openmptcprouter.shadowsocks_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true)
{
statusMessage += '<%:Can\'t get public IP address from ShadowSocks%>' + '<br/>';
} else if (mArray.openmptcprouter.shadowsocksrust_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true)
{
statusMessage += '<%:Can\'t get public IP address from ShadowSocks Rust%>' + '<br/>';
} else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true)
{
statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '<br/>';
} else if (mArray.openmptcprouter.xray_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true)
{
statusMessage += '<%:Can\'t get public IP address from XRay%>' + '<br/>';
} else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true)
{
statusMessage += '<%:No public IP address detected in less than 1 second%>' + '<br/>';

View file

@ -227,7 +227,7 @@
</fieldset>
<fieldset class="cbi-section" id="proxy">
<legend><%:Proxy settings%></legend>
<div class="cbi-section-descr"><%:By default proxy is used for any traffic that is TCP (and UDP for V2Ray).%></div>
<div class="cbi-section-descr"><%:By default proxy is used for any traffic that is TCP (and UDP for V2Ray/XRay).%></div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Default Proxy%></label>
<div class="cbi-value-field">
@ -237,11 +237,17 @@
<% if nixio.fs.access("/etc/init.d/v2ray") then %><option value="v2ray-vmess" <% if uci:get("openmptcprouter","settings","proxy") == "v2ray-vmess" then %>selected="selected"<% end %>>V2Ray VMESS</option><% end %>
<% if nixio.fs.access("/etc/init.d/v2ray") then %><option value="v2ray-trojan" <% if uci:get("openmptcprouter","settings","proxy") == "v2ray-trojan" then %>selected="selected"<% end %>>V2Ray TROJAN</option><% end %>
<% if nixio.fs.access("/etc/init.d/v2ray") then %><option value="v2ray-socks" <% if uci:get("openmptcprouter","settings","proxy") == "v2ray-socks" then %>selected="selected"<% end %>>V2Ray SOCKS</option><% end %>
<% if nixio.fs.access("/etc/init.d/xray") then %><option value="xray" <% if uci:get("openmptcprouter","settings","proxy") == "xray" then %>selected="selected"<% end %>>XRay VLESS</option><% end %>
<% if nixio.fs.access("/etc/init.d/xray") then %><option value="xray-vmess" <% if uci:get("openmptcprouter","settings","proxy") == "xray-vmess" then %>selected="selected"<% end %>>XRay VMESS</option><% end %>
<% if nixio.fs.access("/etc/init.d/xray") then %><option value="xray-trojan" <% if uci:get("openmptcprouter","settings","proxy") == "xray-trojan" then %>selected="selected"<% end %>>XRay Trojan</option><% end %>
<% if nixio.fs.access("/etc/init.d/xray") then %><option value="xray-socks" <% if uci:get("openmptcprouter","settings","proxy") == "xray-socks" then %>selected="selected"<% end %>>XRay Socks</option><% end %>
<% if nixio.fs.access("/etc/init.d/xray") then %><option value="xray-shadowsocks" <% if uci:get("openmptcprouter","settings","proxy") == "xray-shadowsocks" then %>selected="selected"<% end %>>XRay Shadowsocks 2022</option><% end %>
<% if nixio.fs.access("/etc/init.d/shadowsocks-rust") then %><option value="shadowsocks-rust" <% if uci:get("openmptcprouter","settings","proxy") == "shadowsocks-rust" then %>selected="selected"<% end %>>Shadowsocks-Rust 2022</option><% end %>
<option value="none" <% if uci:get("openmptcprouter","settings","proxy") == "none" then %>selected="selected"<% end %>>None</option>
</select>
<br />
<div class="cbi-value-description">
<%:Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and UDP when V2Ray VLESS, VMESS or Trojan is enabled.%>
<%:Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and UDP when V2Ray/XRay VLESS, VMESS or Trojan is enabled.%>
<%:Only ShadowSocks is supported with server multiple IPs for now.%>
</div>
</div>
@ -258,9 +264,21 @@
</div>
</div>
<% end %>
<% if nixio.fs.access("/etc/init.d/v2ray") then %>
<% if nixio.fs.access("/etc/init.d/xray") or nixio.fs.access("/etc/init.d/shadowsocks-rust") then %>
<div class="cbi-value">
<label class="cbi-value-title"><%:V2Ray user id%></label>
<label class="cbi-value-title"><%:ShadowSocks 2022 key%></label>
<div class="cbi-value-field">
<input type="text" name="shadowsocks2022_key" placeholder="<%:ShadowSocks 2022 key%>" class="cbi-input-text" value="<%=uci:get("shadowsocks-rust","sss0","password")%>" />
<br />
<div class="cbi-value-description">
<%:Key is retrieved from server API by default.%> <%:ShadowSocks is used for TCP.%>
</div>
</div>
</div>
<% end %>
<% if nixio.fs.access("/etc/init.d/v2ray") or nixio.fs.access("/etc/init.d/xray") then %>
<div class="cbi-value">
<label class="cbi-value-title"><%:V2Ray/XRay user id%></label>
<div class="cbi-value-field">
<input type="text" name="v2ray_user" placeholder="<%:V2Ray user%>" class="cbi-input-text" value="<%=uci:get("v2ray","omrout","s_vmess_user_id")%>" />
<br />
@ -284,7 +302,7 @@
%>
<option value="none" <% if method == "none" then %>selected="selected"<% end %>><%:None%></option>
<option value="aes-256-gcm" <% if method == "aes-256-gcm" then %>selected="selected"<% end %>>AES-256-GCM</option>
<option value="aes-256-cfb" <% if method == "aes-256-cfb" then %>selected="selected"<% end %>>AES-256-CFB</option>
<!--<option value="aes-256-cfb" <% if method == "aes-256-cfb" then %>selected="selected"<% end %>>AES-256-CFB</option>-->
<option value="chacha20-ietf-poly1305" <% if method == "chacha20" or method == "chacha20-ietf-poly1305" then %>selected="selected"<% end %>>chacha20</option>
<option value="other" <% if method == "other" or (method ~= "chacha20" and method ~= "aes-256-gcm" and method ~= "aes-256-cfb" and method ~= "chacha20-ietf-poly1305" and method ~= "none") then %>selected="selected"<% end %>><%:other%></option>
</select>
@ -297,7 +315,7 @@
<% else %>
<%:There is no Advanced Encryption Standard (AES) instruction set integrated in the processor, you should use chacha20.%>
<% end %>
<%:Encryption method is used for Shadowsocks, V2Ray, Glorytun and OpenVPN.%>
<%:Encryption method is used for Shadowsocks, V2Ray/XRay, Glorytun and OpenVPN.%>
</div>
</div>
</div>

View file

@ -334,6 +334,10 @@ function server_settings(server,server_ip,openmptcprouter_vps_key)
ucic:set("v2ray","omrout","s_vless_address",server_ip)
ucic:set("v2ray","omrout","s_socks_address",server_ip)
ucic:set("v2ray","omrout","s_trojan_address",server_ip)
ucic:set("xray","omrout","s_vmess_address",server_ip)
ucic:set("xray","omrout","s_vless_address",server_ip)
ucic:set("xray","omrout","s_socks_address",server_ip)
ucic:set("xray","omrout","s_trojan_address",server_ip)
ucic:save("qos")
ucic:commit("qos")
ucic:save("mlvpn")
@ -341,7 +345,9 @@ function server_settings(server,server_ip,openmptcprouter_vps_key)
ucic:save("dsvpn")
ucic:commit("dsvpn")
ucic:save("v2ray")
ucic:save("xray")
ucic:commit("v2ray")
ucic:commit("xray")
ucic:save("glorytun")
ucic:commit("glorytun")
ucic:save("shadowsocks-libev")
@ -428,6 +434,7 @@ function restart_all()
sys.exec("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null")
sys.exec("/etc/init.d/vnstat restart >/dev/null 2>/dev/null")
sys.exec("/etc/init.d/v2ray restart >/dev/null 2>/dev/null")
sys.exec("/etc/init.d/xray restart >/dev/null 2>/dev/null")
end
function redirectports(server,redirect_ports)
@ -822,9 +829,9 @@ function interfaces_status()
-- shadowsocksaddr
mArray.openmptcprouter["proxy_addr"] = uci:get("openmptcprouter","omr","detected_ss_ipv4") or ""
if mArray.openmptcprouter["proxy_addr"] == "" and mArray.openmptcprouter["service_addr"] ~= "" then
tracker_ip = uci:get("shadowsocks-libev","tracker_sss0","local_address") or ""
tracker_ip = uci:get("shadowsocks-libev","tracker_sss0","local_address") or "127.0.0.1"
if tracker_ip ~= "" then
local tracker_port = uci:get("shadowsocks-libev","tracker_sss0","local_port")
local tracker_port = uci:get("shadowsocks-libev","tracker_sss0","local_port") or "1111"
if mArray.openmptcprouter["external_check"] ~= false then
mArray.openmptcprouter["proxy_addr"] = ut.trim(sys.exec("curl -s -4 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m " .. timeout .. " " .. check_ipv4_website))
if mArray.openmptcprouter["proxy_addr"] == "" then
@ -930,7 +937,16 @@ function interfaces_status()
mArray.openmptcprouter["v2ray_traffic_tx"] = "0"
mArray.openmptcprouter["v2ray_traffic"] = "0"
end
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"]
if status and vpsinfo.xray ~= nil then
mArray.openmptcprouter["xray_traffic_rx"] = vpsinfo.xray.rx or "0"
mArray.openmptcprouter["xray_traffic_tx"] = vpsinfo.xray.tx or "0"
mArray.openmptcprouter["xray_traffic"] = mArray.openmptcprouter["xray_traffic_tx"] + mArray.openmptcprouter["xray_traffic_rx"]
else
mArray.openmptcprouter["xray_traffic_rx"] = "0"
mArray.openmptcprouter["xray_traffic_tx"] = "0"
mArray.openmptcprouter["xray_traffic"] = "0"
end
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"] + mArray.openmptcprouter["xray_traffic"]
mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"]
else
mArray.openmptcprouter["vps_admin"] = false
@ -1048,6 +1064,11 @@ function interfaces_status()
if string.find(sys.exec("/usr/bin/pgrep ss-redir"), "%d+") then
mArray.openmptcprouter["shadowsocks_service"] = true
end
-- check Shadowsocks Rust is running
mArray.openmptcprouter["shadowsocksrust_service"] = false
if string.find(sys.exec("/usr/bin/pgrep sslocal"), "%d+") then
mArray.openmptcprouter["shadowsocksrust_service"] = true
end
mArray.openmptcprouter["shadowsocks_enabled"] = true
local ss_server = "1"
@ -1061,6 +1082,18 @@ function interfaces_status()
mArray.openmptcprouter["shadowsocks_enabled"] = false
end
mArray.openmptcprouter["shadowsocksrust_enabled"] = true
local ss_server = "1"
ucic:foreach("shadowsocks-rust", "server", function(s)
local ss_server_disabled = uci:get("shadowsocks-rust",s[".name"],"disabled") or "0"
if ss_server_disabled == "0" then
ss_server = "0"
end
end)
if ss_server == "1" then
mArray.openmptcprouter["shadowsocksrust_enabled"] = false
end
-- check V2Ray is running
mArray.openmptcprouter["v2ray_service"] = false
if string.find(sys.exec("/usr/bin/pgrep v2ray"), "%d+") then
@ -1071,6 +1104,16 @@ function interfaces_status()
if v2ray == "1" then
mArray.openmptcprouter["v2ray_enabled"] = true
end
-- check XRay is running
mArray.openmptcprouter["xray_service"] = false
if string.find(sys.exec("/usr/bin/pgrep xray"), "%d+") then
mArray.openmptcprouter["xray_service"] = true
end
mArray.openmptcprouter["xray_enabled"] = false
local xray = uci:get("xray","main","enabled") or "0"
if xray == "1" then
mArray.openmptcprouter["xray_enabled"] = true
end
local ss_key = uci:get("shadowsocks-libev","sss0","key") or ""
mArray.openmptcprouter["shadowsocks_service_method"] = uci:get("shadowsocks-libev","sss0","method")
if ss_key == "" then
@ -1078,6 +1121,13 @@ function interfaces_status()
else
mArray.openmptcprouter["shadowsocks_service_key"] = true
end
local ssr_key = uci:get("shadowsocks-rust","sss0","key") or ""
mArray.openmptcprouter["shadowsocksrust_service_method"] = uci:get("shadowsocks-rust","sss0","method")
if ssr_key == "" then
mArray.openmptcprouter["shadowsocksrust_service_key"] = false
else
mArray.openmptcprouter["shadowsocksrust_service_key"] = true
end
-- Add DHCP infos by parsing dnsmasq config file
mArray.openmptcprouter.dhcpd = {}

View file

@ -0,0 +1,18 @@
#
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2019-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for shadowsocks-rust
LUCI_DEPENDS:=+luci-compat
PKG_LICENSE:=Apache-2.0
PKG_VERSION:=omr-202309
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,294 @@
'use strict';
'require baseclass';
'require uci';
'require form';
'require network';
var names_options_server = [
'server',
'server_port',
'method',
'password',
'plugin',
'plugin_opts',
];
var names_options_client = [
'server',
'local_address',
'local_port',
];
var names_options_common = [
'verbose',
'ipv6_first',
'fast_open',
'no_delay',
'reuse_port',
'mode',
'mtu',
'timeout',
'user',
'mptcp',
];
var modes = [
'tcp_only',
'tcp_and_udp',
'udp_only',
];
var methods = [
'none',
// aead
'aes-128-gcm',
'aes-256-gcm',
'chacha20-ietf-poly1305',
'2022-blake3-aes-128-gcm',
'2022-blake3-aes-256-gcm',
'2022-blake3-chacha8-poly1305',
'2022-blake3-chacha20-poly1305',
];
function ucival_to_bool(val) {
return val === 'true' || val === '1' || val === 'yes' || val === 'on';
}
return L.Class.extend({
values_actions: function(o) {
o.value('bypass');
o.value('forward');
if (o.option !== 'dst_default') {
o.value('checkdst');
}
},
values_redir: function(o, xmode) {
uci.sections('shadowsocks-rust', 'ss_redir', function(sdata) {
var disabled = ucival_to_bool(sdata['disabled']),
sname = sdata['.name'],
mode = sdata['mode'] || 'tcp_only';
if (!disabled && mode.indexOf(xmode) !== -1) {
o.value(sname, sname + ' - ' + mode);
}
});
o.value('', '<unset>');
o.value('all', 'all');
o.default = '';
},
values_serverlist: function(o) {
uci.sections('shadowsocks-rust', 'server', function(sdata) {
var sname = sdata['.name'],
server = sdata['server'],
server_port = sdata['server_port'];
if (server && server_port) {
var disabled = ucival_to_bool(sdata['.disabled']) ? ' - disabled' : '',
desc = '%s - %s:%s%s'.format(sname, server, server_port, disabled);
o.value(sname, desc);
}
});
},
values_ipaddr: function(o, netDevs) {
netDevs.forEach(function(v) {
v.getIPAddrs().forEach(function(a) {
var host = a.split('/')[0];
o.value(host, '%s (%s)'.format(host, v.getShortName()));
});
});
},
options_client: function(s, tab, netDevs) {
var o = s.taboption(tab, form.ListValue, 'server', _('Remote server'));
this.values_serverlist(o);
o = s.taboption(tab, form.Value, 'local_address', _('Local address'));
o.datatype = 'ipaddr';
o.placeholder = '0.0.0.0';
this.values_ipaddr(o, netDevs);
o = s.taboption(tab, form.Value, 'local_port', _('Local port'));
o.datatype = 'port';
},
options_server: function(s, opts) {
var o, optfunc,
tab = opts && opts.tab || null;
if (!tab) {
optfunc = function(/* ... */) {
var o = s.option.apply(s, arguments);
o.editable = true;
return o;
};
} else {
optfunc = function(/* ... */) {
var o = s.taboption.apply(s, L.varargs(arguments, 0, tab));
o.editable = true;
return o;
};
}
o = optfunc(form.Value, 'label', _('Label'));
o = optfunc(form.Value, 'server', _('Server'));
o.datatype = 'host';
o.size = 16;
o = optfunc(form.Value, 'server_port', _('Server port'));
o.datatype = 'port';
o.size = 5;
o = optfunc(form.ListValue, 'method', _('Method'));
methods.forEach(function(m) {
o.value(m);
});
o = optfunc(form.Value, 'password', _('Password (Base64)'));
o.datatype = 'base64';
o.password = true;
o.size = 12;
optfunc(form.Value, 'plugin', _('Plugin')).modalonly = true;
optfunc(form.Value, 'plugin_opts', _('Plugin Options')).modalonly = true;
},
options_common: function(s, tab) {
var o = s.taboption(tab, form.ListValue, 'mode', _('Mode of operation'));
modes.forEach(function(m) {
o.value(m);
});
o.default = 'tcp_and_udp';
o = s.taboption(tab, form.Value, 'mtu', _('MTU'));
o.datatype = 'uinteger';
o = s.taboption(tab, form.Value, 'timeout', _('Timeout (sec)'));
o.datatype = 'uinteger';
s.taboption(tab, form.Value, 'user', _('Run as'));
s.taboption(tab, form.Flag, 'verbose', _('Verbose'));
s.taboption(tab, form.Flag, 'ipv6_first', _('IPv6 First'), _('Prefer IPv6 addresses when resolving names'));
s.taboption(tab, form.Flag, 'fast_open', _('Enable TCP Fast Open'));
s.taboption(tab, form.Flag, 'no_delay', _('Enable TCP_NODELAY'));
s.taboption(tab, form.Flag, 'reuse_port', _('Enable SO_REUSEPORT'));
s.taboption(tab, form.Flag, 'mptcp', _('Enable MPTCP'));
},
ucival_to_bool: function(val) {
return ucival_to_bool(val);
},
cfgvalue_overview: function(sdata) {
var stype = sdata['.type'],
lines = [];
if (stype === 'ss_server') {
this.cfgvalue_overview_(sdata, lines, names_options_server);
this.cfgvalue_overview_(sdata, lines, names_options_common);
this.cfgvalue_overview_(sdata, lines, ['bind_address']);
} else if (stype === 'ss_local' || stype === 'ss_redir' || stype === 'ss_tunnel') {
this.cfgvalue_overview_(sdata, lines, names_options_client);
if (stype === 'ss_tunnel') {
this.cfgvalue_overview_(sdata, lines, ['tunnel_address']);
}
this.cfgvalue_overview_(sdata, lines, names_options_common);
} else {
return [];
}
return lines;
},
cfgvalue_overview_: function(sdata, lines, names) {
names.forEach(function(n) {
var v = sdata[n];
if (v) {
if (n === 'password') {
v = _('<hidden>');
}
var fv = E('var', [v]);
if (sdata['.type'] !== 'ss_server' && n === 'server') {
fv = E('a', {
class: 'label',
href: L.url('admin/services/shadowsocks-rust/servers') + '#edit=' + v,
target: '_blank',
rel: 'noopener'
}, fv);
}
lines.push(n + ': ', fv, E('br'));
}
});
},
option_install_package: function(s, tab) {
var bin = s.sectiontype.replace('_', '-'),
opkg_package = 'shadowsocks-rust-' + bin, o;
if (tab) {
o = s.taboption(tab, form.Button, '_install');
} else {
o = s.option(form.Button, '_install');
}
o.title = _('Package is not installed');
o.inputtitle = _('Install package ' + opkg_package);
o.inputstyle = 'apply';
o.onclick = function() {
window.open(L.url('admin/system/opkg') +
'?query=' + opkg_package, '_blank', 'noopener');
};
},
parse_uri: function(uri) {
var scheme = 'ss://';
if (uri && uri.indexOf(scheme) === 0) {
var atPos = uri.indexOf('@'), hashPos = uri.lastIndexOf('#'), tag;
if (hashPos === -1) {
hashPos = undefined;
} else {
tag = uri.slice(hashPos + 1);
}
if (atPos !== -1) { // SIP002 format https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html
var colonPos = uri.indexOf(':', atPos + 1), slashPos = uri.indexOf('/', colonPos + 1);
if (colonPos === -1) return null;
if (slashPos === -1) slashPos = undefined;
var userinfo = atob(uri.slice(scheme.length, atPos)
.replace(/-/g, '+').replace(/_/g, '/')),
i = userinfo.indexOf(':');
if (i === -1) return null;
var config = {
server: uri.slice(atPos + 1, colonPos),
server_port: uri.slice(colonPos + 1, slashPos ? slashPos : hashPos),
password: userinfo.slice(i + 1),
method: userinfo.slice(0, i)
};
if (slashPos) {
var search = uri.slice(slashPos + 1, hashPos);
if (search[0] === '?') search = search.slice(1);
search.split('&').forEach(function(s) {
var j = s.indexOf('=');
if (j !== -1) {
var k = s.slice(0, j), v = s.slice(j + 1);
if (k === 'plugin') {
v = decodeURIComponent(v);
var k = v.indexOf(';');
if (k !== -1) {
config['plugin'] = v.slice(0, k);
config['plugin_opts'] = v.slice(k + 1);
}
}
}
});
}
return [config, tag];
} else { // Legacy format https://shadowsocks.org/en/config/quick-guide.html
var plain = atob(uri.slice(scheme.length, hashPos)),
firstColonPos = plain.indexOf(':'),
lastColonPos = plain.lastIndexOf(':'),
atPos = plain.lastIndexOf('@', lastColonPos);
if (firstColonPos === -1 ||
lastColonPos === -1 ||
atPos === -1) return null;
var config = {
server: plain.slice(atPos + 1, lastColonPos),
server_port: plain.slice(lastColonPos + 1),
password: plain.slice(firstColonPos + 1, atPos),
method: plain.slice(0, firstColonPos)
};
return [config, tag];
}
}
return null;
}
});

View file

@ -0,0 +1,163 @@
'use strict';
'require form';
'require uci';
'require fs';
'require network';
'require rpc';
'require shadowsocks-rust as ss';
var conf = 'shadowsocks-rust';
var cfgtypes = ['ss_local', 'ss_redir', 'ss_server', 'ss_tunnel'];
var callServiceList = rpc.declare({
object: 'service',
method: 'list',
params: [ 'name' ],
expect: { '': {} }
});
return L.view.extend({
render: function(stats) {
var m, s, o;
m = new form.Map(conf,
_('Local Instances'),
_('Instances of shadowsocks-rust components, e.g. ss-local, \
ss-redir, ss-tunnel, ss-server, etc. To enable an instance it \
is required to enable both the instance itself and the remote \
server it refers to.'));
s = m.section(form.GridSection);
s.addremove = true;
s.cfgsections = function() {
return this.map.data.sections(this.map.config)
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
.map(function(s) { return s['.name']; });
};
s.sectiontitle = function(section_id) {
var s = uci.get(conf, section_id);
return (s ? s['.type'] + '.' : '') + section_id;
};
s.renderSectionAdd = function(extra_class) {
var el = form.GridSection.prototype.renderSectionAdd.apply(this, arguments),
optionEl = [E('option', { value: '_dummy' }, [_('-- instance type --')])];
cfgtypes.forEach(function(t) {
optionEl.push(E('option', { value: t }, [t.replace('_', '-')]));
});
var selectEl = E('select', {
class: 'cbi-input-select',
change: function(ev) {
ev.target.parentElement.nextElementSibling.nextElementSibling
.toggleAttribute('disabled', ev.target.value === '_dummy');
}
}, optionEl);
el.lastElementChild.setAttribute('disabled', '');
el.prepend(E('div', {}, selectEl));
return el;
};
s.handleAdd = function(ev, name) {
var selectEl = ev.target.parentElement.firstElementChild.firstElementChild,
type = selectEl.value;
this.sectiontype = type;
var promise = form.GridSection.prototype.handleAdd.apply(this, arguments);
this.sectiontype = undefined;
return promise;
};
s.addModalOptions = function(s, section_id, ev) {
var sdata = uci.get(conf, section_id),
stype = sdata ? sdata['.type'] : null;
if (stype) {
s.sectiontype = stype;
return Promise.all([
L.resolveDefault(fs.stat('/usr/bin/' + stype.replace('_', '-')), null),
network.getDevices()
]).then(L.bind(function(res) {
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
s.taboption('general', form.Value, 'label', _('Label'));
s.taboption('general', form.Flag, 'disabled', _('Disable'));
if (!res[0]) {
ss.option_install_package(s, 'general');
}
ss.options_common(s, 'advanced');
if (stype === 'ss_server') {
ss.options_server(s, { tab: 'general' });
o = s.taboption('general', form.Value, 'bind_address',
_('Bind address'),
_('The address ss-server will initiate connection from'));
o.datatype = 'ipaddr';
o.placeholder = '0.0.0.0';
ss.values_ipaddr(o, res[1]);
} else {
ss.options_client(s, 'general', res[1]);
if (stype === 'ss_tunnel') {
o = s.taboption('general', form.Value, 'tunnel_address',
_('Tunnel address'),
_('The address ss-tunnel will forward traffic to'));
o.datatype = 'hostport';
}
}
}, this));
}
};
o = s.option(form.DummyValue, 'overview', _('Overview'));
o.modalonly = false;
o.editable = true;
o.rawhtml = true;
o.renderWidget = function(section_id, option_index, cfgvalue) {
var sdata = uci.get(conf, section_id);
if (sdata) {
return form.DummyValue.prototype.renderWidget.call(this, section_id, option_index, ss.cfgvalue_overview(sdata));
}
return null;
};
o = s.option(form.DummyValue, 'running', _('Running'));
o.modalonly = false;
o.editable = true;
o.default = '';
o = s.option(form.Button, 'disabled', _('Enable/Disable'));
o.modalonly = false;
o.editable = true;
o.inputtitle = function(section_id) {
var s = uci.get(conf, section_id);
if (ss.ucival_to_bool(s['disabled'])) {
this.inputstyle = 'reset';
return _('Disabled');
}
this.inputstyle = 'save';
return _('Enabled');
}
o.onclick = function(ev) {
var inputEl = ev.target.parentElement.nextElementSibling;
inputEl.value = ss.ucival_to_bool(inputEl.value) ? '0' : '1';
return this.map.save();
}
return m.render().finally(function() {
L.Poll.add(function() {
return L.resolveDefault(callServiceList(conf), {})
.then(function(res) {
var instances = null;
try {
instances = res[conf]['instances'];
} catch (e) {}
if (!instances) return;
uci.sections(conf)
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
.forEach(function(s) {
var el = document.getElementById('cbi-shadowsocks-rust-' + s['.name'] + '-running');
if (el) {
var name = s['.type'] + '.' + s['.name'],
running = instances.hasOwnProperty(name)? instances[name].running : false;
el.innerText = running ? 'yes' : 'no';
}
});
});
});
});
},
});

View file

@ -0,0 +1,141 @@
'use strict';
'require view';
'require uci';
'require fs';
'require form';
'require tools.widgets as widgets';
'require shadowsocks-rust as ss';
var conf = 'shadowsocks-rust';
var cfgtypes = ['ss_rules'];
function src_dst_option(s /*, ... */) {
var o = s.taboption.apply(s, L.varargs(arguments, 1));
o.datatype = 'or(ipaddr,cidr)';
}
return L.view.extend({
load: function() {
return Promise.all([
L.resolveDefault(fs.stat('/usr/lib/iptables/libxt_recent.so'), {}),
L.resolveDefault(fs.stat('/usr/bin/ss-rules'), null),
uci.load(conf).then(function() {
if (!uci.get_first(conf, 'ss_rules')) {
uci.set(conf, uci.add(conf, 'ss_rules', 'ss_rules'), 'disabled', '1');
}
})
]);
},
render: function(stats) {
var m, s, o;
m = new form.Map(conf, _('Redir Rules'),
_('On this page you can configure how traffics are to be \
forwarded to ss-redir instances. \
If enabled, packets will first have their src ip addresses checked \
against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, \
<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> \
will give the default action to be taken. \
If the prior check results in action <em>checkdst</em>, packets will continue \
to have their dst addresses checked.'));
s = m.section(form.GridSection);
s.addremove = true;
s.addbtntitle = _('Add a new rule...');
s.cfgsections = function() {
return this.map.data.sections(this.map.config)
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
.map(function(s) { return s['.name']; });
};
s.tab('general', _('General Settings'));
s.tab('src', _('Source Settings'));
s.tab('dst', _('Destination Settings'));
s.sectiontype = 'ss_rules';
s.addModalOptions = function(s, section_id, ev) {
s.taboption('general', form.Flag, 'disabled', _('Disable'));
s.taboption('general', form.Value, 'label', _('Label'));
//o = s.taboption('general', form.ListValue, 'server', _('server'));
//ss.values_serverlist(o, '');
o = s.taboption('general', form.ListValue, 'redir_tcp',
_('ss-redir for TCP'));
ss.values_redir(o, 'tcp');
o = s.taboption('general', form.ListValue, 'redir_udp',
_('ss-redir for UDP'));
ss.values_redir(o, 'udp');
o = s.taboption('general', form.ListValue, 'local_default',
_('Local-out default'),
_('Default action for locally generated TCP packets'));
ss.values_actions(o);
o = s.taboption('general', widgets.DeviceSelect, 'ifnames',
_('Ingress interfaces'),
_('Only apply rules on packets from these network interfaces'));
o.multiple = true;
o.noaliases = true;
o.noinactive = true;
s.taboption('general', form.Value, 'ipt_args',
_('Extra arguments'),
_('Passes additional arguments to iptables. Use with care!'));
src_dst_option(s, 'src', form.DynamicList, 'src_ips_bypass',
_('Src ip/net bypass'),
_('Bypass ss-redir for packets with src address in this list'));
src_dst_option(s, 'src', form.DynamicList, 'src_ips_forward',
_('Src ip/net forward'),
_('Forward through ss-redir for packets with src address in this list'));
src_dst_option(s, 'src', form.DynamicList, 'src_ips_checkdst',
_('Src ip/net checkdst'),
_('Continue to have dst address checked for packets with src address in this list'));
o = s.taboption('src', form.ListValue, 'src_default',
_('Src default'),
_('Default action for packets whose src address do not match any of the src ip/net list'));
ss.values_actions(o);
src_dst_option(s, 'dst', form.DynamicList, 'dst_ips_bypass',
_('Dst ip/net bypass'),
_('Bypass ss-redir for packets with dst address in this list'));
src_dst_option(s, 'dst', form.DynamicList, 'dst_ips_forward',
_('Dst ip/net forward'),
_('Forward through ss-redir for packets with dst address in this list'));
var dir = '/etc/shadowsocks-rust';
o = s.taboption('dst', form.FileUpload, 'dst_ips_bypass_file',
_('Dst ip/net bypass file'),
_('File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>'));
o.root_directory = dir;
o = s.taboption('dst', form.FileUpload, 'dst_ips_forward_file',
_('Dst ip/net forward file'),
_('File containing ip/net for the purposes as with <em>Dst ip/net forward</em>'));
o.root_directory = dir;
o = s.taboption('dst', form.ListValue, 'dst_default',
_('Dst default'),
_('Default action for packets whose dst address do not match any of the dst ip list'));
ss.values_actions(o);
o = s.taboption('dst', form.Flag, 'dst_forward_recentrst');
o.title = _('Forward recentrst');
o.description = _('Forward those packets whose dst have recently sent to us multiple tcp-rst');
};
o = s.option(form.Button, 'disabled', _('Enable/Disable'));
o.modalonly = false;
o.editable = true;
o.inputtitle = function(section_id) {
var s = uci.get(conf, section_id);
if (ss.ucival_to_bool(s['disabled'])) {
this.inputstyle = 'reset';
return _('Disabled');
}
this.inputstyle = 'save';
return _('Enabled');
};
o.onclick = function(ev) {
var inputEl = ev.target.parentElement.nextElementSibling;
inputEl.value = ss.ucival_to_bool(inputEl.value) ? '0' : '1';
return this.map.save();
};
return m.render();
},
});

View file

@ -0,0 +1,82 @@
'use strict';
'require form';
'require uci';
'require ui';
'require shadowsocks-rust as ss';
var conf = 'shadowsocks-rust';
return L.view.extend({
render: function() {
var m, s, o;
m = new form.Map(conf, _('Remote Servers'),
_('Definition of remote shadowsocks servers. \
Disable any of them will also disable instances referring to it.'));
s = m.section(form.GridSection, 'server');
s.addremove = true;
s.handleLinkImport = function() {
var textarea = new ui.Textarea();
ui.showModal(_('Import Links'), [
textarea.render(),
E('div', { class: 'right' }, [
E('button', {
class: 'btn',
click: ui.hideModal
}, [ _('Cancel') ]),
' ',
E('button', {
class: 'btn cbi-button-action',
click: ui.createHandlerFn(this, function() {
textarea.getValue().split('\n').forEach(function(s) {
var config = ss.parse_uri(s);
if (config) {
var tag = config[1];
if (tag && !tag.match(/^[a-zA-Z0-9_]+$/)) tag = null;
var sid = uci.add(conf, 'server', tag);
config = config[0];
Object.keys(config).forEach(function(k) {
uci.set(conf, sid, k, config[k]);
});
}
});
return uci.save()
.then(L.bind(this.map.load, this.map))
.then(L.bind(this.map.reset, this.map))
.then(L.ui.hideModal)
.catch(function() {});
})
}, [ _('Import') ])
])
]);
};
s.renderSectionAdd = function(extra_class) {
var el = form.GridSection.prototype.renderSectionAdd.apply(this, arguments);
el.appendChild(E('button', {
'class': 'cbi-button cbi-button-add',
'title': _('Import Links'),
'click': ui.createHandlerFn(this, 'handleLinkImport')
}, [ _('Import Links') ]));
return el;
};
o = s.option(form.Flag, 'disabled', _('Disable'));
o.editable = true;
ss.options_server(s);
return m.render();
},
addFooter: function() {
var p = '#edit=';
if (location.hash.indexOf(p) === 0) {
var section_id = location.hash.substring(p.length);
var editBtn = document.querySelector('#cbi-shadowsocks-rust-' + section_id + ' button.cbi-button-edit');
if (editBtn)
editBtn.click();
}
//return this.super('addFooter', arguments);
return null;
}
});

View file

@ -0,0 +1,22 @@
-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com>
-- Licensed to the public under the Apache License 2.0.
--
module("luci.controller.shadowsocks-rust", package.seeall)
function index()
entry({"admin", "services", "shadowsocks-rust"},
alias("admin", "services", "shadowsocks-rust", "instances"),
_("Shadowsocks-rust"), 59)
entry({"admin", "services", "shadowsocks-rust", "instances"},
view("shadowsocks-rust/instances"),
_("Local Instances"), 10).leaf = true
entry({"admin", "services", "shadowsocks-rust", "servers"},
view("shadowsocks-rust/servers"),
_("Remote Servers"), 20).leaf = true
entry({"admin", "services", "shadowsocks-rust", "rules"},
view("shadowsocks-rust/rules"),
_("Redir Rules"), 30).leaf = true
end

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: bg\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,336 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-10-25 18:01+0000\n"
"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/ca/>\n"
"Language: ca\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.9.1-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Activat"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Visió de conjunt"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Contrasenya"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Name"
#~ msgstr "Nom"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: cs\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,341 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-11-05 01:57+0000\n"
"Last-Translator: Paul Spooren <mail@aparcar.org>\n"
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/de/>\n"
"Language: de\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Deaktivieren"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Deaktiviert"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Aktivieren/Deaktivieren"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Aktiviert"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Zusätzliche Argumente"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Allgemeine Einstellungen"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Übersicht"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht "
"benutzen!"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Passwort"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Server"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Hinzufügen"
#~ msgid "Name"
#~ msgstr "Name"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: el\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: en\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,373 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2019-11-13 23:06+0000\n"
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr "-- tipo de instancia --"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr "<oculto>"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Configuración avanzada"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr "Dirección de enlace"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr "Omitir ss-redir para paquetes con dirección dst en esta lista"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr "Omitir ss-redir para paquetes con dirección src en esta lista"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
"Continuar con la verificación de la dirección dst para paquetes con "
"dirección src en esta lista"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr "Acción predeterminada para paquetes TCP generados localmente"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
"Acción predeterminada para paquetes cuya dirección dst no coincide con "
"ninguna de la lista dst ip"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
"Acción predeterminada para paquetes cuya dirección src no coincide con "
"ninguna de la lista src ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
"Definición de servidores shadowsocks remotos. Deshabilitar cualquiera de "
"ellos también deshabilitará las instancias que lo refieran."
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr "Configuración de destino"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Desactivar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Desactivado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr "Dst predeterminado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr "Omitir Dst ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr "Omitir archivo Dst ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr "Reenviar Dst ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr "Reenviar archivo Dst ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr "Activar SO_REUSEPORT"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr "Activar TCP Fast Open"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr "Activar TCP_NODELAY"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Activar/Desactivar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Activado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Argumentos extra"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
"Archivo que contiene ip/net para los fines como con <em>Omitir Dst ip/net</"
"em>"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
"Archivo que contiene ip / net para los fines como con <em>Reenviar Dst ip/"
"net</em>"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr "Reenviar recentrst"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
"Reenviar aquellos paquetes cuyos archivos dst nos hayan enviado "
"recientemente múltiples tcp-rst"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
"Reenviar a través de ss-redir para paquetes con dirección dst en esta lista"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
"Reenviar a través de ss-redir para paquetes con dirección src en esta lista"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Configuración general"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr "IPv6 primero"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr "Interfaces de ingreso"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr "Instalar paquete"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr "Instalar el paquete iptables-mod-conntrack-extra"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
"Instancias de componentes de shadowsocks-rust, ej. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. Para habilitar una instancia, se requiere habilitar "
"tanto la instancia como el servidor remoto al que hace referencia."
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr "Clave (base64)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr "Instancias locales"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr "Dirección local"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr "Puerto local"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr "Salida local predeterminada"
# Maximum Transmission Unit
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr "Método"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr "Modo de operación"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
"En esta página puede configurar cómo se reenviará el tráfico a las "
"instancias de ss-redir. Si están habilitados, los paquetes tendrán primero "
"sus direcciones src ip verificadas con <em>Omitir Src ip / net</em>, "
"<em>Reenviar Src ip / net</em>, <em>Src ip / net checkdst</em > y si ninguno "
"coincide con <em>Src predeterminado</em> dará la acción predeterminada que "
"se debe realizar. Si la verificación anterior resulta en la acción "
"<em>checkdst</em>, los paquetes continuarán teniendo sus direcciones dst "
"marcadas."
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr "Solo aplicar reglas en paquetes desde estas interfaces de red"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Vista general"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr "Paquete no instalado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Pasa argumentos adicionales a iptables. ¡Utilícelo con cuidado!"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Contraseña"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr "Plugin"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr "Opciones de plugin"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr "Preferir direcciones IPv6 al resolver nombres"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr "Reglas de redireccionamiento"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr "Servidores remotos"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr "Servidor remoto"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr "Correr como"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr "Corriendo"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Servidor"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "Puerto del servidor"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr "Shadowsocks-rust"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr "Configuración de fuente"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr "Src predeterminado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr "Omitir Src ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr "Src ip/net checkdst"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr "Reenviar Src ip/net"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr "La dirección ss-server iniciará la conexión desde"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr "La dirección ss-tunnel reenviará el tráfico a"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr "Tiempo de espera (seg)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr "Direccion del tunel"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr "Verbosidad"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr "ss-redir para TCP"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr "ss-redir para UDP"
#~ msgid "Add"
#~ msgstr "Añadir"
#~ msgid "Install package %q"
#~ msgstr "Instalar paquete %q"
#~ msgid "Name"
#~ msgstr "Nombre"

View file

@ -0,0 +1,346 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-10-24 13:55+0000\n"
"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/fr/>\n"
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.9.1-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr "<masqué>"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Paramètres avancés"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
#, fuzzy
msgid "Bind address"
msgstr "Adresse de liaison"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr "Action par défaut pour les paquets TCP générés localement"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr "Paramètres de destination"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Désactiver"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Désactivé"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr "Activer SO_REUSEPORT"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr "Activer TCP_NODELAY"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Activer/Désactiver"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Activé"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Arguments supplémentaires"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Paramètres généraux"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr "IPv6 en priorité"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr "Interfaces d'entrée"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr "Clé (base64)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr "Instances locales"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr "Adresse locale"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr "Port local"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr "Méthode"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr "Mode de fonctionnement"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
"Appliquer les règles uniquement sur les paquets de ces interfaces réseau"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Vue d'ensemble"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr "Le paquet n'est pas installé"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Passe des arguments supplémentaires aux tables d'adresses IP. A utiliser "
"avec précaution !"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Mot de passe"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr "Plugin"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr "Options de plugin"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr "Préférer les adresses IPv6 lors de la résolution des noms"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr "Règles de redirection"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr "Serveurs distants"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr "Serveur distant"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr "Exécuter comme"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr "En cours d'exécution"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Serveur"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "Port serveur"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr "Délai d'attente (s)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr "Adresse du tunnel"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr "Verbeux"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Ajouter"
#~ msgid "Install package %q"
#~ msgstr "Installer le paquet %q"
#~ msgid "Name"
#~ msgstr "Nom"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: he\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: hi\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: hu\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: it\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: ja\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: ko\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: ms\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,333 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-10-30 03:22+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/nb_NO/>\n"
"Language: nb_NO\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.9.1\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Påskrudd"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,335 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-11-17 11:07+0000\n"
"Last-Translator: Marcin Net <marcin.net@linux.pl>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/pl/>\n"
"Language: pl\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Ustawienia zaawansowane"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Wyłącz"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Wyłączone"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Włącz/Wyłącz"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Włączone"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Dodatkowe argumenty"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Ustawienia główne"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Przegląd"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Hasło"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Serwer"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "Port serwera"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,339 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-11-02 16:07+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/pt/>\n"
"Language: pt\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Definições Avançadas"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Desativar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Desativado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Ativar/Desativar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Ativado"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Argumentos adicionais"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Configurações Gerais"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Visão Geral"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Palavra-passe"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Servidor"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "Porta do servidor"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Adicionar"
#~ msgid "Name"
#~ msgstr "Nome"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: pt_BR\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: ro\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,337 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-10-19 18:26+0000\n"
"Last-Translator: Anton Kikin <a.a.kikin@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/ru/>\n"
"Language: ru\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.9.1-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Дополнительные настройки"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Добавить"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: sk\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,339 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-10-17 20:24+0000\n"
"Last-Translator: Mattias Münster <mattiasmun@gmail.com>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/sv/>\n"
"Language: sv\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.9.1-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Avancerade inställningar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr "Bindningsadress"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "Inaktivera"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "Inaktiverad"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Aktivera/Inaktivera"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Aktiverad"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Extra argument"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Generella inställningar"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Översikt"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Lösenord"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "Server"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "Server-port"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Lägg till"
#~ msgid "Name"
#~ msgstr "Namn"

View file

@ -0,0 +1,359 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:218
msgid "<hidden>"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:44
msgid "Add a new rule..."
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "Bind address"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:84
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:27
msgid "Cancel"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:70
msgid "Default action for locally generated TCP packets"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:114
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:93
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:52
msgid "Destination Settings"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:78
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:56
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:64
msgid "Disable"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:129
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:129
msgid "Disabled"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:113
msgid "Dst default"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:97
msgid "Dst ip/net bypass"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:105
msgid "Dst ip/net bypass file"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:100
msgid "Dst ip/net forward"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:109
msgid "Dst ip/net forward file"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:188
msgid "Enable MPTCP"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:187
msgid "Enable SO_REUSEPORT"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:185
msgid "Enable TCP Fast Open"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:186
msgid "Enable TCP_NODELAY"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:122
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:122
msgid "Enable/Disable"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:132
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:132
msgid "Enabled"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid "Extra arguments"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:106
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:110
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:101
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:50
msgid "General Settings"
msgstr ""
#: luci-app-shadowsocks-rust/root/usr/share/rpcd/acl.d/luci-app-shadowsocks-rust.json:3
msgid "Grant service list access to LuCI app shadowsocks-rust"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:184
msgid "IPv6 First"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:50
msgid "Import"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:21
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:58
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:60
msgid "Import Links"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Ingress interfaces"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:242
msgid "Install package"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Key (base64)"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:57
msgid "Label"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
#: luci-app-shadowsocks-rust/root/usr/share/luci/menu.d/luci-app-shadowsocks-rust.json:14
msgid "Local Instances"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local address"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:121
msgid "Local port"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Local-out default"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "MTU"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:152
msgid "Method"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:172
msgid "Mode of operation"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:33
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:74
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:105
msgid "Overview"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:241
msgid "Package is not installed"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:80
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:157
msgid "Password"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:167
msgid "Plugin"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:169
msgid "Plugin Options"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:184
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:32
#: luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
#: luci-app-shadowsocks-rust/root/usr/share/luci/menu.d/luci-app-shadowsocks-rust.json:32
msgid "Redir Rules"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
#: luci-app-shadowsocks-rust/root/usr/share/luci/menu.d/luci-app-shadowsocks-rust.json:23
msgid "Remote Servers"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:115
msgid "Remote server"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Run as"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:117
msgid "Running"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:144
msgid "Server"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:148
msgid "Server port"
msgstr ""
#: luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
#: luci-app-shadowsocks-rust/root/usr/share/luci/menu.d/luci-app-shadowsocks-rust.json:3
msgid "Shadowsocks-rust"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "Source Settings"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:92
msgid "Src default"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:83
msgid "Src ip/net bypass"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Src ip/net checkdst"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Src ip/net forward"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:88
msgid "The address ss-server will initiate connection from"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:97
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Timeout (sec)"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "Tunnel address"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:183
msgid "Verbose"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "ss-redir for TCP"
msgstr ""
#: luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:65
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: tr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,341 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-11-05 01:57+0000\n"
"Last-Translator: Yurii Petrashko <yuripet@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsshadowsocks-rust/uk/>\n"
"Language: uk\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "Додаткові параметри"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "Увімкнути/Вимкнути"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "Увімкнено"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "Додаткові аргументи"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "Загальні параметри"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "Огляд"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Передача додаткових аргументів для IPTables. Використовуйте з обережністю!"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "Пароль"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""
#~ msgid "Add"
#~ msgstr "Додати"
#~ msgid "Name"
#~ msgstr "Ім'я"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: vi\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,352 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2019-11-08 21:05+0000\n"
"Last-Translator: Meano Lee <meanocat@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"openwrt/luciapplicationsshadowsocks-rust/zh_Hans/>\n"
"Language: zh-cn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.10-dev\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr "-- 实例类型 --"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr "<已隐藏>"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr "高级设置"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr "绑定地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr "对于目的地址在列表中的报文绕过ss-redir"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr "对于源地址在列表中的报文绕过ss-redir"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr "对于源地址在列表中的报文,继续检查其目的地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr "对于设备本身产生的TCP报文的默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr "对于目的地址不在列表中的报文的默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr "对于源地址不在列表中的报文的默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
"在此页面设定访问远端shadowsocks服务器的参数。请注意禁用远端服务器会同时停止"
"与之关联的shadowsocks-rust组件"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr "目的地址设定"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr "禁用"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr "已禁用"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr "目的未匹配时默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr "绕过"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr "绕过(文件)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr "转发"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr "转发(文件)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr "启用SO_REUSEPORT"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr "启用TCP Fast Open"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr "启用TCP_NODELAY"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr "启用/禁用"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr "已启用"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr "额外参数"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr "文件列出需要绕过ss-redir转发的地址和网段"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr "文件列出需要使用ss-redir转发的地址和网段"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr "转发被连接重置的地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr "若近期多次收到某地址的连接重置报文,则将其加入到转发列表中"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr "对于目的地址在列表中的报文通过ss-redir转发"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr "对于源地址在列表中的报文通过ss-redir转发"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr "基本设置"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr "IPv6优先"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr "入口网卡"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr "安装软件包"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr "安装iptables-mod-conntrack-extra"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
"此页面展示本地运行的shadowsocks-rust各组件实例如ss-local、ss-redir、ss-"
"tunnel、ss-server等。请注意实际启用一个实例要求实例本身及所关联的远端服务器"
"都是启用状态。"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr "密钥base64"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr "本地实例"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr "监听地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr "监听端口"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr "本地报文默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr "MTU"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr "加密方法"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr "工作模式"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
"在此页面您可以配置指定报文是否通过ss-redir转发。启用后规则会先将报文的源"
"地址与相应的地址集进行匹配,依次决定是否“绕过(<em>bypass</em>)”、“转发"
"<em>forward</em>)”,或“继续匹配目的地址(<em>checkdst</em>)”;若未在集合"
"中找到匹配,则执行指定的默认动作。继续匹配目的地址时同理。"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr "仅对来自指定网卡的报文应用规则"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr "概览"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr "依赖包未安装"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "给iptables的额外参数。请小心使用"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr "密码"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr "启用插件"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr "插件选项"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr "名字解析时优先取用IPv6地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr "转发规则"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr "远端服务器"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr "服务器"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr "运行时用户"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr "运行中"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr "监听地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr "监听端口"
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr "源地址设定"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr "源未匹配默认行为"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr "绕过"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr "继续匹配目的地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr "转发"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr "ss-server建立连接时使用的源地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr "ss-tunnel所建立隧道的对端地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr "超时时间(秒)"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr "隧道对端地址"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr "记录详细日志"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr "用于TCP转发的ss-redir"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr "用于UDP转发的ss-redir"
#~ msgid "Add"
#~ msgstr "添加"
#~ msgid "Install package %q"
#~ msgstr "安装%q"
#~ msgid "Name"
#~ msgstr "名称"

View file

@ -0,0 +1,327 @@
msgid ""
msgstr ""
"Language: zh_Hant\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:43
msgid "-- instance type --"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:211
msgid "<hidden>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:76
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:86
msgid "Bind address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:87
msgid "Bypass ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:73
msgid "Bypass ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:79
msgid ""
"Continue to have dst address checked for packets with src address in this "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:59
msgid "Default action for locally generated TCP packets"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:103
msgid ""
"Default action for packets whose dst address do not match any of the dst ip "
"list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:82
msgid ""
"Default action for packets whose src address do not match any of the src ip/"
"net list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:14
msgid ""
"Definition of remote shadowsocks servers. Disable any of them will also "
"disable instances referring to it."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:43
msgid "Destination Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:77
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:45
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:20
msgid "Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:128
msgid "Disabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:102
msgid "Dst default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:86
msgid "Dst ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:94
msgid "Dst ip/net bypass file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:89
msgid "Dst ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:98
msgid "Dst ip/net forward file"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:181
msgid "Enable SO_REUSEPORT"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:179
msgid "Enable TCP Fast Open"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:180
msgid "Enable TCP_NODELAY"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:121
msgid "Enable/Disable"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:131
msgid "Enabled"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:68
msgid "Extra arguments"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:95
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:99
msgid ""
"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:118
msgid "Forward recentrst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:119
msgid ""
"Forward those packets whose dst have recently sent to us multiple tcp-rst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:90
msgid "Forward through ss-redir for packets with dst address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:76
msgid "Forward through ss-redir for packets with src address in this list"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:75
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:41
msgid "General Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "IPv6 First"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:62
msgid "Ingress interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:235
msgid "Install package"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:111
msgid "Install package iptables-mod-conntrack-extra"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:25
msgid ""
"Instances of shadowsocks-rust components, e.g. ss-local, ss-redir, ss-"
"tunnel, ss-server, etc. To enable an instance it is required to enable both "
"the instance itself and the remote server it refers to."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:155
msgid "Key (base64)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:24
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:13
msgid "Local Instances"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:113
msgid "Local address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:117
msgid "Local port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:58
msgid "Local-out default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:171
msgid "MTU"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:146
msgid "Method"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:166
msgid "Mode of operation"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:31
msgid ""
"On this page you can configure how traffics are to be forwarded to ss-redir "
"instances. If enabled, packets will first have their src ip addresses "
"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
"give the default action to be taken. If the prior check results in action "
"<em>checkdst</em>, packets will continue to have their dst addresses checked."
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:63
msgid "Only apply rules on packets from these network interfaces"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:104
msgid "Overview"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:234
msgid "Package is not installed"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:69
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:151
msgid "Password"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:161
msgid "Plugin"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:163
msgid "Plugin Options"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:178
msgid "Prefer IPv6 addresses when resolving names"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:30
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:21
msgid "Redir Rules"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/servers.js:13
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:17
msgid "Remote Servers"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:111
msgid "Remote server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:175
msgid "Run as"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:116
msgid "Running"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:138
msgid "Server"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:142
msgid "Server port"
msgstr ""
#: applications/luci-app-shadowsocks-rust/luasrc/controller/shadowsocks-rust.lua:9
msgid "Shadowsocks-rust"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:42
msgid "Source Settings"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:81
msgid "Src default"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:72
msgid "Src ip/net bypass"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:78
msgid "Src ip/net checkdst"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:75
msgid "Src ip/net forward"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:87
msgid "The address ss-server will initiate connection from"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:96
msgid "The address ss-tunnel will forward traffic to"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:173
msgid "Timeout (sec)"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/instances.js:95
msgid "Tunnel address"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js:177
msgid "Verbose"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:51
msgid "ss-redir for TCP"
msgstr ""
#: applications/luci-app-shadowsocks-rust/htdocs/luci-static/resources/view/shadowsocks-rust/rules.js:54
msgid "ss-redir for UDP"
msgstr ""

View file

@ -0,0 +1,13 @@
#!/bin/sh
uci -q batch <<-EOF >/dev/null
delete ucitrack.@shadowsocks-rust[-1]
add ucitrack shadowsocks-rust
set ucitrack.@shadowsocks-rust[-1].init=shadowsocks-rust
commit ucitrack
EOF
rm -f /tmp/luci-indexcache
mkdir -p /etc/shadowsocks-rust
/etc/init.d/rpcd reload
exit 0

View file

@ -0,0 +1,39 @@
{
"admin/services/shadowsocks-rust": {
"title": "Shadowsocks-rust",
"order": 59,
"action": {
"type": "firstchild"
},
"depends": {
"acl": [ "luci-app-shadowsocks-rust" ]
}
},
"admin/services/shadowsocks-rust/instances": {
"title": "Local Instances",
"order": 10,
"action": {
"type": "view",
"path": "shadowsocks-rust/instances"
}
},
"admin/services/shadowsocks-rust/servers": {
"title": "Remote Servers",
"order": 20,
"action": {
"type": "view",
"path": "shadowsocks-rust/servers"
}
},
"admin/services/shadowsocks-rust/rules": {
"title": "Redir Rules",
"order": 30,
"action": {
"type": "view",
"path": "shadowsocks-rust/rules"
}
}
}

View file

@ -0,0 +1,17 @@
{
"luci-app-shadowsocks-rust": {
"description": "Grant service list access to LuCI app shadowsocks-rust",
"read": {
"ubus": {
"service": [ "list" ]
},
"uci": [ "shadowsocks-rust" ]
},
"write": {
"file": {
"/etc/shadowsocks-rust/*": [ "write" ]
},
"uci": [ "shadowsocks-rust" ]
}
}
}

View file

@ -2,7 +2,7 @@ config mlvpn 'general'
option enable '0'
option password ''
option timeout '30'
option reorder_buffer_size '128'
option reorder_buffer_size '512'
option loss_tolerence '50'
option mode 'client'
option host '128.128.128.128'

View file

@ -4,7 +4,7 @@ if [ "$(uci -q get network.globals.mptcp_path_manager)" = "" ]; then
set network.globals.multipath='enable'
set network.globals.mptcp_path_manager='fullmesh'
set network.globals.mptcp_scheduler='blest'
set network.globals.congestion='bbr'
set network.globals.congestion='bbr2'
set network.globals.mptcp_checksum=0
set network.globals.mptcp_debug=0
set network.globals.mptcp_syn_retries=4
@ -19,7 +19,7 @@ if [ "$(uci -q get network.globals.mptcp_path_manager)" = "" ]; then
EOF
fi
# BBRv2 is replaced by BBRv3
if [ "$(uci -q get network.globals.congestion)" = "bbr2" ]; then
if [ "$(uci -q get network.globals.congestion)" = "bbr2" ] && [ -z "$(uname -a | grep 5.4)" ]; then
uci -q batch <<-EOF >/dev/null
set network.globals.congestion='bbr'
commit network

View file

@ -629,7 +629,7 @@ del_server_route() {
remove_route() {
local serverip="$1"
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
[ -n "$serverip" ] && _log "Delete default route to $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
[ -n "$serverip" ] && _log "Delete default route to $serverip dev $OMR_TRACKER_DEVICE"
local metric
if [ -z "$OMR_TRACKER_INTERFACE" ]; then
metric=0

View file

@ -81,11 +81,15 @@ if [ "$(pgrep uhttpd)" = "" ] && [ -f /etc/init.d/uhttpd ]; then
sleep 5
fi
#if [ "$(pgrep ModemManager)" = "" ] && [ -f /etc/init.d/modemmanager ] && [ -n "$(uci -q show network | grep modemmanager)" ] && [ "$(uci -q get openmptcprouter.settings.modemmanager)" != "0" ]; then
# _log "Can't find ModemManager, restart it..."
# /etc/init.d/modemmanager restart 2>&1 >/dev/null
# sleep 5
#fi
if [ -z "$(pgrep ModemManager)" ] && [ -f /etc/init.d/modemmanager ] && [ -n "$(uci -q show network | grep modemmanager)" ]; then
_log "Can't find ModemManager, restart it..."
/etc/init.d/modemmanager restart 2>&1 >/dev/null
sleep 5
elif [ -n "$(pgrep ModemManager)" ] && [ -f /etc/init.d/modemmanager ] && [ -z "$(uci -q show network | grep modemmanager)" ]; then
_log "ModemManager not used, stop it..."
/etc/init.d/modemmanager stop 2>&1 >/dev/null
sleep 5
fi
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then
_log "Can't find omr-tracker-v2ray, restart omr-tracker..."

View file

@ -65,7 +65,7 @@ proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
server=${OMR_TRACKER_SERVER:-sss0}
type=${OMR_TRACKER_SS_TYPE:-libev}
nodns=0
last=0
@ -103,10 +103,16 @@ while true; do
script_alert_up="$(uci -q get omr-tracker.proxy.script_alert_up)"
[ -n "$script_alert_up" ] && eval $script_alert_up
}
if [ -z "$($IPTABLESSAVE 2>/dev/null | grep :ssr)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then
_log "Reload Shadowsocks rules"
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
_get_ip
if [ -z "$($IPTABLESSAVE 2>/dev/null | grep :ssr)" ]; then
if [ "$type" = "libev" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then
_log "Reload Shadowsocks rules"
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
_get_ip
elif [ "$type" = "rust" ] && [ "$(uci -q get shadowsocks-rust.ss_rules.disabled)" != "1" ]; then
_log "Reload Shadowsocks Rust rules"
/etc/init.d/shadowsocks-rust rules_up 2> /dev/null
_get_ip
fi
fi
[ "$(uci -q get openmptcprouter.omr.detected_public_ipv4)" = "" ] || ([ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.detected_public_ipv6)" = "" ]) && _get_ip
last=0
@ -119,11 +125,19 @@ while true; do
OMR_TRACKER_STATUS_MSG="Shadowsocks ${server} is down (can't contact via http ${nocontact})"
uci -q set openmptcprouter.omr.ss_${server}="down"
uci -q commit openmptcprouter.omr
[ "$(uci show openmptcprouter.omr | grep ss_ | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null
if [ "$(uci show openmptcprouter.omr | grep ss_ | grep up)" = "" ]; then
[ "$type" = "libev" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null
[ "$type" = "rust" ] && /etc/init.d/shadowsocks-rust rules_down 2> /dev/null
fi
_get_ip
server_ping=false
serverip="$(uci -q get shadowsocks-libev.${server}.server)"
disabled="$(uci -q get shadowsocks-libev.${server}.disabled)"
if [ "$type" = "libev" ]; then
serverip="$(uci -q get shadowsocks-libev.${server}.server)"
disabled="$(uci -q get shadowsocks-libev.${server}.disabled)"
elif [ "$type" = "rust" ]; then
serverip="$(uci -q get shadowsocks-rust.${server}.server)"
disabled="$(uci -q get shadowsocks-rust.${server}.disabled)"
fi
_ping_server $serverip
if [ "$server_ping" = false ]; then
_log "Server $server ($serverip) seems down, no answer to ping"
@ -146,10 +160,17 @@ while true; do
script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)"
[ -n "$script_alert_down" ] && eval $script_alert_down
if [ "$disabled" != "1" ] && [ "$(pgrep ss-redir)" = "" ] && [ "$(uci -q get shadowsocks-libev.${server}.key)" != "" ]; then
_log "Can't find shadowsocks, restart it..."
/etc/init.d/shadowsocks-libev restart
sleep 5
if [ "$disabled" != "1" ]; then
if [ "$type" = "libev" ] && [ "$(pgrep ss-redir)" = "" ] && [ "$(uci -q get shadowsocks-libev.${server}.key)" != "" ]; then
_log "Can't find shadowsocks, restart it..."
/etc/init.d/shadowsocks-libev restart
sleep 5
fi
if [ "$type" = "rust" ] && [ "$(pgrep ss-redir)" = "" ] && [ "$(uci -q get shadowsocks-libev.${server}.key)" != "" ]; then
_log "Can't find shadowsocks rust, restart it..."
/etc/init.d/shadowsocks-rust restart
sleep 5
fi
fi
sleep $wait_test
fi

View file

@ -100,7 +100,7 @@ while true; do
script_alert_up="$(uci -q get omr-tracker.proxy.script_alert_up)"
[ -n "$script_alert_up" ] && eval $script_alert_up
}
if [ -z "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep v2r)" ]; then
if [ -z "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ^v2r)" ]; then
_log "Reload V2Ray rules"
/etc/init.d/v2ray rules_up 2> /dev/null
_get_ip
@ -111,7 +111,7 @@ while true; do
last=$((last + 1 ))
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
[ "${last}" -ge "${retry}" ] && {
if [ -n "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep v2r)" ]; then
if [ -n "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ^v2r)" ]; then
_log "V2Ray is down (can't contact via http ${nocontact})"
OMR_TRACKER_STATUS_MSG="V2Ray is down (can't contact via http ${nocontact})"
uci -q set openmptcprouter.omr.v2ray="down"

View file

@ -0,0 +1,150 @@
#!/bin/sh
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
name=$0
basename="$(basename $0)"
if [ -f /usr/sbin/iptables-legacy ]; then
IPTABLES="/usr/sbin/iptables-legacy"
else
IPTABLES="/usr/sbin/iptables"
fi
_log() {
logger -p daemon.info -t "${basename}" "$@"
}
_ping_server() {
local host=$1
ret=$(ping \
-w "$OMR_TRACKER_TIMEOUT" \
-c 1 \
-q \
"${host}"
) && echo "$ret" | grep -sq " 0% packet loss" && {
server_ping=true
}
}
_get_ip() {
uci -q set openmptcprouter.omr=router
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)"
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}"
[ -n "${public_ipv4}" ] && {
uci -q set upnpd.config.external_ip="${public_ipv4}"
uci -q commit upnpd
}
if [ "$(uci -q get openmptcprouter.omr.xray)" != "down" ]; then
uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)"
else
uci -q del openmptcprouter.omr.detected_ss_ipv4
fi
if [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ]; then
uci -q set openmptcprouter.omr.detected_public_ipv6="$(curl -s -6 -m 3 $check_ipv6_website)"
else
uci -q del openmptcprouter.omr.detected_public_ipv6
# uci -q set openmptcprouter.omr.detected_ss_ipv6=$(curl -s -6 --socks5 ":::1111" --max-time 3 http://ip.openmptcprouter.com)
fi
fi
uci -q commit openmptcprouter
}
timeout=${OMR_TRACKER_TIMEOUT:-5}
interval=${OMR_TRACKER_INTERVAL:-10}
retry=${OMR_TRACKER_TRIES:-4}
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
nodns=0
last=0
nocontact=""
uci -q set openmptcprouter.omr=router
uci -q delete openmptcprouter.omr.xray
_get_ip
while true; do
host="${hosts%% *}"
[ "$host" = "$hosts" ] || {
hosts="${hosts#* } $host"
}
if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then
nocontact=""
[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.xray)" = "" ] && {
_log "xray is up (can contact via http ${host})"
OMR_TRACKER_STATUS_MSG="xray is up (can contact via http ${host})"
uci -q set openmptcprouter.omr.xray="up"
uci -q commit openmptcprouter.omr
/etc/init.d/openmptcprouter-vps set_vps_firewall
mail_alert="$(uci -q get omr-tracker.proxy.mail_alert)"
#[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then
mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)"
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/xray Proxy/g" -e "s/%DEVICE%/Shadowsocks Proxy/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)"
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/xray Proxy/g" -e "s/%DEVICE%/Shadowsocks Proxy/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
else
echo -e "Subject: $OMR_SYSNAME: xray Proxy is UP." | sendmail $(uci -q get mail.default.to)
fi
}
script_alert_up="$(uci -q get omr-tracker.proxy.script_alert_up)"
[ -n "$script_alert_up" ] && eval $script_alert_up
}
if [ -z "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ^xr)" ]; then
_log "Reload xray rules"
/etc/init.d/xray rules_up 2> /dev/null
_get_ip
fi
[ "$(uci -q get openmptcprouter.omr.detected_public_ipv4)" = "" ] || ([ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.detected_public_ipv6)" = "" ]) && _get_ip
last=0
else
last=$((last + 1 ))
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
[ "${last}" -ge "${retry}" ] && {
if [ -n "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ^xr)" ]; then
_log "xray is down (can't contact via http ${nocontact})"
OMR_TRACKER_STATUS_MSG="xray is down (can't contact via http ${nocontact})"
uci -q set openmptcprouter.omr.xray="down"
uci -q commit openmptcprouter.omr
/etc/init.d/openmptcprouter-vps set_vps_firewall
/etc/init.d/xray rules_down 2> /dev/null
_get_ip
server_ping=false
server="$(uci -q get xray.omrout.s_vless_address)"
_ping_server $server
if [ "$server_ping" = false ]; then
_log "Server ($server) seems down, no answer to ping"
OMR_TRACKER_STATUS_MSG="${OMR_TRACKER_STATUS_MSG} - Server ($server) seems down, no answer to ping"
fi
mail_alert="$(uci -q get omr-tracker.proxy.mail_alert)"
#[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then
mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)"
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/xray Proxy/g" -e "s/%DEVICE%/xray Proxy/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/xray Proxy/g" -e "s/%DEVICE%/xray Proxy/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
else
echo -e "Subject: $OMR_SYSNAME: xray Proxy is down\n\nConnection failure of xray proxy detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to)
fi
}
script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)"
[ -n "$script_alert_down" ] && eval $script_alert_down
sleep $wait_test
fi
}
fi
sleep "${interval}"
done

View file

@ -187,6 +187,38 @@ _initialize_shadowsocks_tracker() {
# }
}
_initialize_shadowsocks_rust_tracker() {
local redir_tcp server tracker_server
server=$1
[ -n "$(echo $server | grep sss)" ] || return
[ -z "$server" ] && return
#redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp)
#config_get tracker_server ss_rules server
config_get ss_rust_disabled $server disabled 0
[ "$ss_rust_disabled" = "0" ] && ss_rust_enable="1"
[ -z "$(uci -q get shadowsocks-rust.tracker_${server})" ] && [ "$ss_rust_disabled" != "1" ] && {
logger -t "omr-tracker" "Create ShadowSock tracker ss_local..."
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.tracker_${server}=ss_local
set shadowsocks-rust.tracker_${server}.server=$server
set shadowsocks-rust.tracker_${server}.local_address="127.0.0.1"
set shadowsocks-rust.tracker_${server}.local_port=1111
set shadowsocks-rust.tracker_${server}.mode=tcp_and_udp
set shadowsocks-rust.tracker_${server}.timeout=600
set shadowsocks-rust.tracker_${server}.fast_open=0
set shadowsocks-rust.tracker_${server}.syslog=0
set shadowsocks-rust.tracker_${server}.reuse_port=1
set shadowsocks-rust.tracker_${server}.mptcp=1
set shadowsocks-rust.tracker_${server}.verbose=0
commit shadowsocks-rust
EOF
logger -t "omr-tracker" "Restart ShadowSocks"
/etc/init.d/shadowsocks-rust restart
}
}
_launch_shadowsocks_tracker() {
local hosts timeout tries interval local_port enabled server wait_test
@ -201,7 +233,7 @@ _launch_shadowsocks_tracker() {
[ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return
[ -z "$server" ] && return
[ "$(uci -q get shadowsocks-libev.$server.server)" = "192.168.1.3" ] || [ "$(uci -q get shadowsocks-libev.$server.server)" = "" ] && return
[ "$server" = "192.168.1.3" ] || [ "$server" = "" ] && return
procd_open_instance
# shellcheck disable=SC2086
@ -211,8 +243,43 @@ _launch_shadowsocks_tracker() {
procd_append_param env "OMR_TRACKER_TRIES=$tries"
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port"
procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test"
procd_append_param env "OMR_TRACKER_WAIT_TEST=$type"
procd_append_param env "OMR_TRACKER_SERVER=$server"
procd_append_param env "OMR_TRACKER_SS_TYPE=libev"
procd_set_param limits nofile="51200 51200"
procd_set_param respawn 0 10 0
procd_set_param stderr 1
procd_close_instance
sleep 1
}
_launch_shadowsocks_rust_tracker() {
local hosts timeout tries interval local_port enabled server wait_test
[ "$(echo $1 | grep tracker)" != "" ] || return
_validate_section "proxy" "proxy"
config_get local_port "$1" local_port
local disabled
config_get disabled "$1" disabled 0
config_get server "$1" server
[ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return
[ -z "$server" ] && return
[ "$server" = "192.168.1.3" ] || [ "$server" = "" ] && return
procd_open_instance
# shellcheck disable=SC2086
procd_set_param command /bin/omr-tracker-ss "$1"
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
procd_append_param env "OMR_TRACKER_TRIES=$tries"
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port"
procd_append_param env "OMR_TRACKER_WAIT_TEST=$type"
procd_append_param env "OMR_TRACKER_SERVER=$server"
procd_append_param env "OMR_TRACKER_SS_TYPE=rust"
procd_set_param limits nofile="51200 51200"
procd_set_param respawn 0 10 0
procd_set_param stderr 1
@ -242,6 +309,28 @@ _launch_v2ray_tracker() {
sleep 1
}
_launch_xray_tracker() {
local hosts timeout tries interval local_port enabled server wait_test
_validate_section "proxy" "proxy"
[ "$enabled" = "0" ] || [ -z "$hosts" ] && return
procd_open_instance
# shellcheck disable=SC2086
procd_set_param command /bin/omr-tracker-xray "$1"
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
procd_append_param env "OMR_TRACKER_TRIES=$tries"
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:1111"
procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test"
procd_set_param limits nofile="51200 51200"
procd_set_param respawn 0 10 0
procd_set_param stderr 1
procd_close_instance
sleep 1
}
_multi_server() {
config_get backup $1 backup
[ "$backup" = "1" ] && multiserver=true
@ -254,10 +343,14 @@ _gre_tunnel() {
start_service() {
local ss_enable=0
local ss_rust_enable=0
logger -t "omr-tracker" "Launching..."
config_load shadowsocks-libev
config_foreach _initialize_shadowsocks_tracker server
config_load shadowsocks-rust
config_foreach _initialize_shadowsocks_rust_tracker server
config_load network
config_foreach _launch_tracker interface
@ -267,11 +360,21 @@ start_service() {
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
# /etc/init.d/shadowsocks-libev rules_down
fi
if [ "$ss_rust_enable" = "1" ]; then
config_load shadowsocks-rust
config_foreach _launch_shadowsocks_rust_tracker ss_local
fi
config_load v2ray
config_get v2rayenabled main enabled
if [ "$v2rayenabled" = "1" ]; then
_launch_v2ray_tracker
fi
config_load xray
config_get xrayenabled main enabled
if [ "$xrayenabled" = "1" ]; then
_launch_xray_tracker
fi
multiserver=false
config_load openmptcprouter
@ -285,7 +388,7 @@ start_service() {
}
service_triggers() {
procd_add_reload_trigger omr-tracker network shadowsocks-libev v2ray
procd_add_reload_trigger omr-tracker network shadowsocks-libev v2ray xray
}
reload_service() {

View file

@ -73,17 +73,20 @@ MY_DEPENDS := \
(TARGET_x86||TARGET_x86_64):kmod-iwlwifi (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl1000 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl100 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl105 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl135 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl2000 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl2030 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl3160 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl3168 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl5000 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl5150 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl6000g2 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl6000g2a (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl6000g2b (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl6050 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl7260 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl7265 (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl7265d (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl8260c (TARGET_x86||TARGET_x86_64):iwlwifi-firmware-iwl8265 \
(TARGET_x86||TARGET_x86_64):kmod-e1000 (TARGET_x86||TARGET_x86_64):kmod-e1000e (TARGET_x86||TARGET_x86_64):kmod-igb (TARGET_x86||TARGET_x86_64):kmod-ne2k-pci (TARGET_x86||TARGET_x86_64):kmod-r8169 (TARGET_x86||TARGET_x86_64):kmod-8139too (TARGET_x86||TARGET_x86_64):kmod-bnx2 \
TARGET_mvebu:kmod-mwlwifi TARGET_mvebu:mwlwifi-firmware-88w8864 TARGET_mvebu:mwlwifi-firmware-88w8897 TARGET_mvebu:mwlwifi-firmware-88w8964 TARGET_mvebu:mwlwifi-firmware-88w8997 \
!TARGET_mvebu:kmod-usb-serial !TARGET_mvebu:kmod-usb-serial-option !TARGET_mvebu:kmod-usb-serial-wwan !TARGET_mvebu:usb-modeswitch !TARGET_mvebu:uqmi \
!(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-serial !(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-serial-option !(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-serial-wwan !(TARGET_mvebu||TARGET_ipq40xx):usb-modeswitch !TARGET_mvebu:uqmi \
!TARGET_mvebu:umbim !TARGET_mvebu:kmod-mii !TARGET_mvebu:kmod-usb-net !TARGET_mvebu:kmod-usb-wdm !TARGET_mvebu:kmod-usb-net-qmi-wwan !TARGET_mvebu:kmod-usb-net-cdc-mbim !TARGET_mvebu:umbim \
!TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd !TARGET_mvebu:libusbmuxd \
kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su !LINUX_6_1:kmod-rtl8812au-ct \
!TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 TARGET_r4s:kmod-r8168 (TARGET_x86||TARGET_x86_64):kmod-usb-net-rtl8152 \
!TARGET_mvebu:luci-app-mlvpn !TARGET_mvebu:mlvpn 464xlat kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \
!(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-net-huawei-cdc-ncm !(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-net-rndis !(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-net-cdc-ether !(TARGET_mvebu||TARGET_ipq40xx):kmod-usb-net-ipheth !(TARGET_mvebu||TARGET_ipq40xx):usbmuxd !(TARGET_mvebu||TARGET_ipq40xx):libusbmuxd \
!TARGET_ipq40xx:kmod-rt2800-usb !TARGET_ipq40xx:kmod-rtl8xxxu !TARGET_ipq40xx:kmod-rtl8192cu !TARGET_ipq40xx:kmod-net-rtl8192su !LINUX_6_1:kmod-rtl8812au-ct \
!TARGET_mvebu:luci-proto-qmi wpad-basic !TARGET_ipq40xx:kmod-mt7601u !TARGET_ipq40xx:kmod-rtl8187 TARGET_r4s:kmod-r8168 (TARGET_x86||TARGET_x86_64):kmod-usb-net-rtl8152 \
!TARGET_mvebu:luci-app-mlvpn !TARGET_mvebu:mlvpn 464xlat kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang iptables-mod-ipopt igmpproxy ss iptraf-ng \
luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-openssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf (TARGET_x86||TARGET_x86_64):kmod-igbvf \
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding luci-app-sysupgrade \
luci-theme-openwrt-2020 luci-proto-wireguard luci-app-wireguard kmod-crypto-lib-blake2s (TARGET_x86||TARGET_x86_64):kmod-r8125 \
(LINUX_5_15||LINUX_6_1):mptcpd (TARGET_x86||TARGET_x86_64):kmod-igc !TARGET_mvebu:kmod-mmc-spi kmod-macsec usbutils v2ray-core syslogd \
(TARGET_x86||TARGET_x86_64):kmod-mlx4-core
(TARGET_x86||TARGET_x86_64):kmod-mlx4-core \
!(TARGET_ips40xx||TARGET_ramips):iptables-mod-ndpi !(TARGET_ips40xx||TARGET_ramips):kmod-ipt-ndpi libip4tc libip6tc \
xray-core shadowsocks-rust-sslocal shadowsocks-rust-ssservice shadowsocks-rust-config luci-app-shadowsocks-rust
# (TARGET_x86_64||aarch64):kmod-tcp-bbr2
# !TARGET_mvebu:kmod-usb-net-smsc75xx
# libnetfilter-conntrack ebtables ebtables-utils ip-full nstat \

View file

@ -1,4 +1,5 @@
#!/bin/sh
. /usr/lib/unbound/iptools.sh
SERVER=$1
INTERFACE=$2
[ "$3" = "upload" ] && UPLOAD=$3
@ -6,12 +7,31 @@ INTERFACE=$2
[ "$4" = "upload" ] && UPLOAD=$4
[ "$4" = "fasttest" ] && FASTTEST=$4
[ -z "$SERVER" ] && SERVER="vps"
KEY=$(uci -q get openmptcprouter.$SERVER.token)
#KEY=$(uci -q get openmptcprouter.$SERVER.token)
HOST=$(uci -q get openmptcprouter.$SERVER.ip | awk '{print $1}')
PORT=$(uci -q get openmptcprouter.$SERVER.port)
USERNAME=$(uci -q get openmptcprouter.$SERVER.username)
PASSWORD=$(uci -q get openmptcprouter.$SERVER.password)
MP=false
if [ -n "$KEY" ] && [ -n "$HOST" ] && [ -n "$PORT" ]; then
if [ -n "$HOST" ] && [ -n "$PORT" ] && [ -n "$USERNAME" ] && [ -n "$PASSWORD" ]; then
trap : HUP INT TERM
[ -z "$FASTTEST" ] && echo "Get API token on $SERVER"
resolve="$(resolveip ${HOST})"
valid_ip6=$(valid_subnet6 ${HOST})
if [ "$resolve" != "${HOST}" ] || [ "$valid_ip6" != "ok" ]; then
auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='${USERNAME}'&password='${PASSWORD} https://${HOST}:${PORT}/token`
else
auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='${USERNAME}'&password='${PASSWORD} https://[${HOST}]:${PORT}/token`
fi
[ -z "$auth" ] && {
[ -z "$FASTTEST" ] && echo "No answer to API request..."
exit 1
}
KEY="$(echo '$auth' | jsonfilter -q -e '@.access_token')"
[ -n "$KEY" ] && {
[ -z "$FASTTEST" ] && echo "No token..."
exit 1
}
[ -z "$FASTTEST" ] && echo "Disable SQM bandwidth limit on $INTERFACE"
[ -z "$FASTTEST" ] && echo "Download test via server ${SERVER}:"
if [ -n "$INTERFACE" ]; then

View file

@ -293,6 +293,44 @@ _set_ss_server_vps() {
fi
}
_set_ssgo_server_vps() {
local disabled port key method
config_load shadowsocks-rust
config_get disabled sss0 disabled
[ "$disabled" = "1" ] && return
config_get port sss0 server_port
#config_get server $1 server
config_get key sss0 key
key="$(echo $key | sed 's/+/-/g; s/\//_/g;')"
[ -z "$key" ] && return
config_get method sss0 method
local current_port current_key current_method
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
current_port="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-go.port')"
current_key="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-go.key')"
current_method="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-go.method')"
current_fast_open="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-go.fast_open')"
current_mptcp="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-go.mptcp')"
ebpf="false"
fast_open="false"
no_delay="false"
mptcp="false"
obfs="false"
obfs_plugin="v2ray"
obfs_type="http"
config_load shadowsocks-rust
config_foreach _get_ss_redir ss_redir
config_foreach _get_ss_server server
if [ "$current_mptcp" != "$mptcp" ] || [ "$current_port" != "$port" ] || [ "$current_method" != "$method" ] || [ "$current_fast_open" != "$fast_open" ]; then
local settings
settings='{"port": '$port',"method":"'$method'","fast_open":'$fast_open',"reuse_port":true,"mptcp":'$mptcp'}'
result=$(_set_json "shadowsocks-go" "$settings")
fi
}
_set_v2ray_server_vps() {
enabled=$(uci -q get v2ray.main.enabled)
[ "$enabled" != "1" ] && return
@ -309,6 +347,22 @@ _set_v2ray_server_vps() {
fi
}
_set_xray_server_vps() {
enabled=$(uci -q get xray.main.enabled)
[ "$enabled" != "1" ] && return
userid=$(uci -q get xray.omrout.s_vless_user_id)
[ -z "$userid" ] && return
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
current_userid="$(echo "$vps_config" | jsonfilter -q -e '@.xray.config.key')"
if [ "$current_userid" != "$userid" ]; then
local settings
settings='{"userid": "'$userid'"}'
echo $(_set_json "xray" "$settings")
fi
}
_get_vps_config() {
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
@ -450,6 +504,17 @@ _get_vps_config() {
/etc/init.d/shadowsocks-libev restart
fi
fi
if [ "$(uci -q get shadowsocks-rust.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-rust.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
config_foreach _set_ssrust_server server "server" $vpsip
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.server="$vpsip"
commit shadowsocks-rust
EOF
if [ "$(uci -q get shadowsocks-rust.sss0.disabled)" = "0" ]; then
logger -t "OMR-VPS" "Restart shadowsocks Rust..."
/etc/init.d/shadowsocks-rust restart
fi
fi
if [ "$(uci -q get v2ray.omrout.s_vmess_address)" != "127.0.0.1" ] && [ "$(uci -q get v2ray.omrout.s_vmess_address)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
uci -q batch <<-EOF >/dev/null
set v2ray.omrout.s_vmess_address="$vpsip"
@ -461,6 +526,17 @@ _get_vps_config() {
/etc/init.d/v2ray restart
fi
fi
if [ "$(uci -q get xray.omrout.s_vmess_address)" != "127.0.0.1" ] && [ "$(uci -q get xray.omrout.s_vmess_address)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
uci -q batch <<-EOF >/dev/null
set xray.omrout.s_vmess_address="$vpsip"
set xray.omrout.s_vless_address="$vpsip"
commit xray
EOF
if [ "$(uci -q get xray.main.enabled)" = "1" ]; then
logger -t "OMR-VPS" "Restart XRay..."
/etc/init.d/xray restart
fi
fi
if [ "$(uci -q get openvpn.omr.remote)" != "127.0.0.1" ] && [ "$(uci -q get openvpn.omr.remote)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
uci -q batch <<-EOF >/dev/null
set openvpn.omr.remote="$vpsip"
@ -942,12 +1018,14 @@ _vps_firewall_redirect_port() {
#uci -q delete firewall.$1
#return
fi
xray="$v2ray"
[ "$(uci -q get v2ray.main.enabled)" = "0" ] && [ "$(uci -q get openmptcprouter.omr.v2ray)" != "down" ] && v2ray="0"
[ "$(uci -q get xray.main.enabled)" = "0" ] && [ "$(uci -q get openmptcprouter.omr.xray)" != "down" ] && xray="0"
[ "$proto" = "all" ] && proto="tcp udp"
[ "$proto" = "" ] && proto="tcp udp"
[ "$src" = "vpn" ] && [ -n "$proto" ] && [ -n "$src_dport" ] && [ "$enabled" != "0" ] && [ "$name" != "Allow-DHCP-Request-VPN" ] && {
for protoi in $proto; do
if [ "$v2ray" = "0" ]; then
if [ "$v2ray" = "0" ] && [ "$xray" = "0" ]; then
checkfw=""
if [ "$family" = "ipv4" ]; then
if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then
@ -1045,7 +1123,8 @@ _vps_firewall_redirect_port() {
checkfw=""
if [ "$family" = "ipv4" ]; then
if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then
checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi --- V2Ray to ${dest_ip}:${dest_port}")
[ "$v2ray" == "1" ] && checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi --- V2Ray to ${dest_ip}:${dest_port}")
[ "$xray" == "1" ] && checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi --- XRay to ${dest_ip}:${dest_port}")
else
comment=""
[ -n "$src_dip" ] && {
@ -1065,45 +1144,58 @@ _vps_firewall_redirect_port() {
}
}
[ -n "$src_ip" ] && comment=" from $src_ip"
checkfw=$(echo "$vpsfwlist" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$v2ray" == "1" ] && checkfw=$(echo "$vpsfwlist" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$xray" == "1" ] && checkfw=$(echo "$vpsfwlist" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}")
fi
else
if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then
checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$v2ray" == "1" ] && checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$xray" == "1" ] && checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port ${protoi} --- XRay to ${dest_ip}:${dest_port}")
else
comment=""
[ -n "$src_dip" ] && comment=" to $src_dip"
[ -n "$src_ip" ] && comment=" from $src_ip"
checkfw=$(echo "$vpsfw6list" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$v2ray" == "1" ] && checkfw=$(echo "$vpsfw6list" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}")
[ "$xray" == "1" ] && checkfw=$(echo "$vpsfw6list" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}")
fi
fi
if [ "$checkfw" = "" ]; then
settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'${protoi}'","fwtype" : "ACCEPT","ipproto" : "'$family'","comment" : "V2Ray to '${dest_ip}':'${dest_port}'"}'
[ "$v2ray" == "1" ] && settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'${protoi}'","fwtype" : "ACCEPT","ipproto" : "'$family'","comment" : "V2Ray to '${dest_ip}':'${dest_port}'"}'
[ "$xray" == "1" ] && settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'${protoi}'","fwtype" : "ACCEPT","ipproto" : "'$family'","comment" : "XRay to '${dest_ip}':'${dest_port}'"}'
result=$(_set_json "shorewallopen" "$settings")
[ -z "$dest_port" ] && dest_port="$src_dport"
settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","destip" : "'$dest_ip'","destport" : "'$dest_port'","proto" : "'${protoi}'"}'
result=$(_set_json "v2rayredirect" "$settings")
[ "$v2ray" == "1" ] && result=$(_set_json "v2rayredirect" "$settings")
[ "$xray" == "1" ] && result=$(_set_json "xrayredirect" "$settings")
fi
if [ "$family" = "ipv4" ]; then
if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then
vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1"] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- XRay to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- XRay to ${dest_ip}:${dest_port}$")
else
comment=""
[ -n "$src_dip" ] && comment=" to $src_dip"
[ -n "$src_ip" ] && comment=" from $src_ip"
vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}$")
fi
else
if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then
vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- XRay to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- XRay to ${dest_ip}:${dest_port}$")
else
[ -n "$src_dip" ] && comment=" to $src_dip"
[ -n "$src_ip" ] && comment=" from $src_ip"
vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}$")
[ "$v2ray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$")
[ "$xray" == "1" ] && [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- XRay to ${dest_ip}:${dest_port}$")
fi
fi
fi
@ -1136,6 +1228,7 @@ _vps_firewall_close_port() {
destport=$(echo $comment | awk '{print $3}' | awk -F: '{print $2}')
settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","destip" : "'$destip'","destport": "'$destport'"}'
result=$(_set_json "v2rayunredirect" "$settings")
result=$(_set_json "xrayunredirect" "$settings")
}
}
done
@ -1162,6 +1255,7 @@ _vps_firewall_close_port() {
[ "$type" = "ACCEPT" ] && {
settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","comment" : "'$comment'"}'
result=$(_set_json "v2rayunredirect" "$settings")
result=$(_set_json "xrayunredirect" "$settings")
}
}
done
@ -1276,6 +1370,30 @@ _set_ss_server() {
fi
}
_set_ssrust_redir() {
local option=$2
local value=$3
if [ "$value" = "true" ]; then
value=1
elif [ "$value" = "false" ]; then
value=0
fi
uci -q set shadowsocks-rust.$1.$option=$value
}
_set_ssrust_server() {
local option=$2
local value=$3
if [ "$value" = "true" ]; then
value=1
elif [ "$value" = "false" ]; then
value=0
fi
if [ "$(echo $1 | grep omr)" != "" ] || [ "$(echo $1 | grep sss)" ]; then
uci -q set shadowsocks-rust.$1.$option=$value
fi
}
_set_config_from_vps() {
local shadowsocks_disabled vpn glorytun_state redirect shorewall_redirect mlvpn_key openvpn_key dsvpn_key
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
@ -1331,28 +1449,66 @@ _set_config_from_vps() {
EOF
if [ "$current_proxy" = "shadowsocks" ]; then
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.disabled=1
commit shadowsocks-rust
set shadowsocks-libev.sss0.disabled=0
commit shadowsocks-libev
set v2ray.main.enabled=0
commit v2ray
set xray.main.enabled=0
commit xray
set openmptcprouter.settings.shadowsocks_disable=0
commit openmptcprouter
EOF
elif [ "$current_proxy" = "shadowsocks-rust" ]; then
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.disabled=0
commit shadowsocks-rust
set shadowsocks-libev.sss0.disabled=1
commit shadowsocks-libev
set v2ray.main.enabled=0
commit v2ray
set xray.main.enabled=0
commit xray
set openmptcprouter.settings.shadowsocks_disable=0
commit openmptcprouter
EOF
elif [ "$current_proxy" = "v2ray" ]; then
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.disabled=1
commit shadowsocks-rust
set shadowsocks-libev.sss0.disabled=1
commit shadowsocks-libev
set v2ray.main.enabled=1
commit v2ray
set xray.main.enabled=0
commit xray
set openmptcprouter.settings.shadowsocks_disable=1
commit openmptcprouter
EOF
elif [ "$current_proxy" = "xray" ]; then
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.disabled=1
commit shadowsocks-rust
set shadowsocks-libev.sss0.disabled=1
commit shadowsocks-libev
set v2ray.main.enabled=0
commit v2ray
set xray.main.enabled=1
commit xray
set openmptcprouter.settings.shadowsocks_disable=1
commit openmptcprouter
EOF
elif [ "$current_proxy" = "none" ]; then
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.disabled=1
commit shadowsocks-rust
set shadowsocks-libev.sss0.disabled=1
commit shadowsocks-libev
set v2ray.main.enabled=0
commit v2ray
set xray.main.enabled=0
commit xray
set openmptcprouter.settings.shadowsocks_disable=1
commit openmptcprouter
EOF
@ -1419,6 +1575,34 @@ _set_config_from_vps() {
fi
fi
# Shadowsocks Rust settings
#shadowsocks_disabled="$(uci -q get openmptcprouter.settings.shadowsocks_disable)"
#[ -z "$shadowsocks_disabled" ] && shadowsocks_disabled=0
ssgo_sskey="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks_go.config.password')"
if [ -n "$ssgo_sskey" ] && [ "$ssgo_sskey" != "$(uci -q get shadowsocks-rust.sss0.password)" ]; then
ss_method="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks_go.config.protocol')"
ss_port="65280"
#ss_fast_open="$(echo "$vps_config" | jsonfilter -q -e '@.shadowsocks-rust.fast_open')"
config_load shadowsocks-rust
#config_foreach _set_ss_redir ss_redir "fast_open" $ss_fast_open
#config_foreach _set_ss_redir ss_local "fast_open" $ss_fast_open
uci -q batch <<-EOF >/dev/null
set shadowsocks-rust.sss0.password=$ssgo_sskey
set shadowsocks-rust.sss0.server_port=$ss_port
set shadowsocks-rust.sss0.method=$ss_method
EOF
config_foreach _set_ss_server server "key" $ssgo_sskey
config_foreach _set_ss_server server "method" $ss_method
if [ "$(uci -q get shadowsocks-rust.sss0.server)" != "127.0.0.1" ]; then
config_foreach _set_ss_server server "server" $vpsip
fi
uci -q commit shadowsocks-rust
if [ "$(uci -q get shadowsocks-rust.sss0.disabled)" != "1" ]; then
logger -t "OMR-VPS" "Shadowsocks Rust restart..."
/etc/init.d/shadowsocks-rust restart >/dev/null 2>&1
fi
fi
# V2Ray settings
v2ray_key="$(echo "$vps_config" | jsonfilter -q -e '@.v2ray.config.key')"
#v2ray_port="$(echo "$vps_config" | jsonfilter -q -e '@.v2ray.config.port')"
@ -1445,6 +1629,37 @@ _set_config_from_vps() {
/etc/init.d/v2ray restart >/dev/null 2>&1
fi
# XRay settings
xray_key="$(echo "$vps_config" | jsonfilter -q -e '@.xray.config.key')"
xray_sskey="$(echo "$vps_config" | jsonfilter -q -e '@.xray.config.sskey')"
#v2ray_port="$(echo "$vps_config" | jsonfilter -q -e '@.v2ray.config.port')"
xray_port="65248"
if ([ -n "$xray_key" ] && [ "$xray_key" != "$(uci -q get xray.omrout.s_vmess_user_id)" ]) || ([ -n "$xray_port" ] && [ "$xray_port" != "$(uci -q get xray.omrout.s_vmess.port)" ]); then
uci -q batch <<-EOF >/dev/null
set xray.omrout.s_shadowsocks_port="$((xray_port+4))"
set xray.omrout.s_shadowsocks_password="$xray_sskey"
set xray.omrout.s_socks_user_id="$xray_key"
set xray.omrout.s_socks_port="$((xray_port+3))"
set xray.omrout.s_trojan_user_id="$xray_key"
set xray.omrout.s_trojan_port="$((xray_port+1))"
set xray.omrout.s_vmess_user_id="$xray_key"
set xray.omrout.s_vmess_port="$((xray_port+2))"
set xray.omrout.s_vless_user_id="$xray_key"
set xray.omrout.s_vless_port="$xray_port"
EOF
uci -q set xray.omrout.s_shadowsocks_password=$ss_key
if [ "$(uci -q get xray.omrout.s_vmess_address)" != "127.0.0.1" ]; then
uci -q set xray.omrout.s_vmess_address="$vpsip"
uci -q set xray.omrout.s_vless_address="$vpsip"
uci -q set xray.omrout.s_trojan_address="$vpsip"
uci -q set xray.omrout.s_socks_address="$vpsip"
uci -q set xray.omrout.s_shadowsocks_address="$vpsip"
fi
uci -q commit v2ray
logger -t "OMR-VPS" "Xray restart..."
/etc/init.d/xray restart >/dev/null 2>&1
fi
# Glorytun settings
glorytun_key="$(echo "$vps_config" | jsonfilter -q -e '@.glorytun.key')"
glorytun_port="$(echo "$vps_config" | jsonfilter -q -e '@.glorytun.port')"
@ -1951,9 +2166,12 @@ _config_service() {
EOF
config_foreach _set_ss_server server "method" "aes-256-gcm"
uci -q commit shadowsocks-libev
config_foreach _set_ssrust_server server "method" "2022-blake3-aes-256-gcm"
uci -q commit shadowsocks-rust
[ "$method" != "aes-256-gcm" ] && {
logger -t "OMR-VPS" "Shadowsocks restart"
/etc/init.d/shadowsocks-libev restart
/etc/init.d/shadowsocks-rust restart
}
fi
}
@ -1967,7 +2185,9 @@ _config_service() {
#config_load shadowsocks-libev
#config_foreach _set_ss_server_vps server
_set_ss_server_vps
_set_ssgo_server_vps
_set_v2ray_server_vps
_set_xray_server_vps
[ -z "$(_set_glorytun_vps)" ] && error=1
[ -z "$(_set_openvpn_vps)" ] && error=1
[ -z "$(_set_mlvpn_vps)" ] && error=1
@ -2063,7 +2283,7 @@ start_service() {
service_triggers() {
#procd_add_reload_trigger openmptcprouter network shadowsocks-libev v2ray glorytun glorytun-udp mlvpn openvpn dsvpn
procd_add_reload_trigger shadowsocks-libev v2ray glorytun glorytun-udp mlvpn dsvpn
procd_add_reload_trigger shadowsocks-libev shadowsocks-rust v2ray xray glorytun glorytun-udp mlvpn dsvpn
procd_add_config_trigger "config.change" "firewall" /etc/init.d/openmptcprouter-vps set_vps_firewall
#procd_add_config_trigger "config.change" "network" /etc/init.d/openmptcprouter-vps set_gre_tunnel
#procd_add_reload_trigger openmptcprouter shadowsocks-libev network upnpd

104
rust/Makefile Normal file
View file

@ -0,0 +1,104 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
include $(TOPDIR)/rules.mk
include ./rust-values.mk
PKG_NAME:=rust
PKG_VERSION:=1.71.1
PKG_RELEASE:=1
PKG_SOURCE:=rustc-$(PKG_VERSION)-src.tar.gz
PKG_SOURCE_URL:=https://static.rust-lang.org/dist/
PKG_HASH:=6fa90d50d1d529a75f6cc349784de57d7ec0ba2419b09bde7d335c25bd4e472e
HOST_BUILD_DIR:=$(BUILD_DIR)/host/rust-$(RUSTC_TARGET_ARCH)/rustc-$(PKG_VERSION)-src
PKG_MAINTAINER:=Luca Barbato <lu_zero@luminem.org>
PKG_LICENSE:=Apache-2.0 MIT
PKG_LICENSE_FILES:=LICENSE-APACHE LICENSE-MIT
HOST_BUILD_DEPENDS:=python3/host
PKG_HOST_ONLY:=1
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/rust
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Rust
TITLE:=Rust Programming Language Compiler
URL:=https://www.rust-lang.org/
DEPENDS:=$(RUST_ARCH_DEPENDS)
endef
define Package/rust/description
Rust is a multi-paradigm, general-purpose programming language designed for performance
and safety, especially safe concurrency. Rust is syntactically similar to C++, but can
guarantee memory safety by using a borrow checker to validate references.
endef
# Rust-lang has an uninstall script
RUST_UNINSTALL:=$(CARGO_HOME)/lib/rustlib/uninstall.sh
# Target Flags
TARGET_CONFIGURE_ARGS = \
--set=target.$(RUSTC_TARGET_ARCH).ar=$(TARGET_AR) \
--set=target.$(RUSTC_TARGET_ARCH).cc=$(TARGET_CC_NOCACHE) \
--set=target.$(RUSTC_TARGET_ARCH).cxx=$(TARGET_CXX_NOCACHE) \
--set=target.$(RUSTC_TARGET_ARCH).linker=$(TARGET_CC_NOCACHE) \
--set=target.$(RUSTC_TARGET_ARCH).ranlib=$(TARGET_RANLIB) \
$(if $(CONFIG_USE_MUSL),--set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_DIR))
# CARGO_HOME is an environmental
HOST_CONFIGURE_OPTS += CARGO_HOME="$(CARGO_HOME)"
# Rust Configuration Arguments
HOST_CONFIGURE_ARGS = \
--build=$(RUSTC_HOST_ARCH) \
--target=$(RUSTC_TARGET_ARCH),$(RUSTC_HOST_ARCH) \
--host=$(RUSTC_HOST_ARCH) \
--prefix=$(CARGO_HOME) \
--bindir=$(CARGO_HOME)/bin \
--libdir=$(CARGO_HOME)/lib \
--sysconfdir=$(CARGO_HOME)/etc \
--datadir=$(CARGO_HOME)/share \
--mandir=$(CARGO_HOME)/man \
--dist-compression-formats=xz \
--enable-missing-tools \
--disable-sanitizers \
--release-channel=stable \
--enable-cargo-native-static \
--set=llvm.download-ci-llvm=true \
$(TARGET_CONFIGURE_ARGS)
define Host/Uninstall
# Call the Uninstall script
[ -f $(RUST_UNINSTALL) ] && \
$(BASH) $(RUST_UNINSTALL) || echo No Uninstall
endef
define Host/Compile
( \
cd $(HOST_BUILD_DIR) ; \
$(PYTHON) x.py --config ./config.toml dist build-manifest cargo llvm-tools \
rustc rust-std rust-src ; \
)
endef
define Host/Install
( \
cd $(HOST_BUILD_DIR)/build/dist ; \
find -iname "*.xz" -exec tar -xJf {} \; ; \
find ./* -type f -name install.sh -execdir sh {} --prefix=$(CARGO_HOME) --disable-ldconfig \; ; \
\
sed -e 's|@RUSTC_TARGET_ARCH@|$(RUSTC_TARGET_ARCH)|g' \
-e 's|@TARGET_CC_NOCACHE@|$(TARGET_CC_NOCACHE)|g' \
-e 's|@RUSTC_LDFLAGS@|$(RUSTC_LDFLAGS)|g' \
$(CURDIR)/files/cargo-config > $(CARGO_HOME)/config ; \
)
endef
$(eval $(call HostBuild))
$(eval $(call BuildPackage,rust))

8
rust/files/cargo-config Normal file
View file

@ -0,0 +1,8 @@
[target.@RUSTC_TARGET_ARCH@]
linker = "@TARGET_CC_NOCACHE@"
rustflags = ["-Ctarget-feature=-crt-static", "-Clink-args=@RUSTC_LDFLAGS@"]
[profile.stripped]
inherits = "release"
opt-level = "s"
strip = true

View file

@ -0,0 +1,48 @@
From d3000458501d339ea2043006924d431ead18769e Mon Sep 17 00:00:00 2001
From: Luca Barbato <lu_zero@gentoo.org>
Date: Sun, 4 Jun 2023 19:32:28 +0000
Subject: [PATCH] Update xz2 and use it static
---
Cargo.lock | 8 ++++----
src/bootstrap/Cargo.lock | 8 ++++----
src/bootstrap/Cargo.toml | 2 +-
3 files changed, 9 insertions(+), 9 deletions(-)
--- a/src/bootstrap/Cargo.lock
+++ b/src/bootstrap/Cargo.lock
@@ -443,9 +443,9 @@ dependencies = [
[[package]]
name = "lzma-sys"
-version = "0.1.17"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdb4b7c3eddad11d3af9e86c487607d2d2442d185d848575365c4856ba96d619"
+checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
dependencies = [
"cc",
"libc",
@@ -912,9 +912,9 @@ dependencies = [
[[package]]
name = "xz2"
-version = "0.1.6"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c179869f34fc7c01830d3ce7ea2086bc3a07e0d35289b667d0a8bf910258926c"
+checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
dependencies = [
"lzma-sys",
]
--- a/src/bootstrap/Cargo.toml
+++ b/src/bootstrap/Cargo.toml
@@ -50,7 +50,7 @@ toml = "0.5"
ignore = "0.4.10"
opener = "0.5"
once_cell = "1.7.2"
-xz2 = "0.1"
+xz2 = { version = "0.1", features = ["static"] }
walkdir = "2"
# Dependencies needed by the build-metrics feature

View file

@ -0,0 +1,35 @@
From 032857e7e403f654129c45dc7e6718a9ad49e377 Mon Sep 17 00:00:00 2001
From: Nikolay Arhipov <n@arhipov.net>
Date: Tue, 6 Jun 2023 16:09:05 +0300
Subject: [PATCH] Bumped libc version
---
Cargo.lock | 4 ++--
library/std/Cargo.toml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1988,9 +1988,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0e
[[package]]
name = "libc"
-version = "0.2.143"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edc207893e85c5d6be840e969b496b53d94cec8be2d501b214f50daa97fa8024"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
dependencies = [
"rustc-std-workspace-core",
]
--- a/library/std/Cargo.toml
+++ b/library/std/Cargo.toml
@@ -15,7 +15,7 @@ cfg-if = { version = "1.0", features = [
panic_unwind = { path = "../panic_unwind", optional = true }
panic_abort = { path = "../panic_abort" }
core = { path = "../core" }
-libc = { version = "0.2.143", default-features = false, features = ['rustc-dep-of-std'] }
+libc = { version = "0.2.146", default-features = false, features = ['rustc-dep-of-std'] }
compiler_builtins = { version = "0.1.92" }
profiler_builtins = { path = "../profiler_builtins", optional = true }
unwind = { path = "../unwind" }

45
rust/rust-host-build.mk Normal file
View file

@ -0,0 +1,45 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
ifeq ($(origin RUST_INCLUDE_DIR),undefined)
RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
endif
include $(RUST_INCLUDE_DIR)/rust-values.mk
# $(1) path to the package (optional)
# $(2) additional arguments to cargo (optional)
define Host/Compile/Cargo
( \
cd $(HOST_BUILD_DIR) ; \
export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \
CARGO_HOME=$(CARGO_HOME) \
CC=$(HOSTCC_NOCACHE) \
cargo install -v \
--profile stripped \
$(if $(RUST_PKG_FEATURES),--features "$(RUST_PKG_FEATURES)") \
--root $(HOST_INSTALL_DIR) \
--path "$(if $(strip $(1)),$(strip $(1)),.)" $(2) ; \
)
endef
define Host/Uninstall/Cargo
( \
cd $(HOST_BUILD_DIR) ; \
export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \
CARGO_HOME=$(CARGO_HOME) \
CC=$(HOSTCC_NOCACHE) \
cargo uninstall -v \
--root $(HOST_INSTALL_DIR) || true ; \
)
endef
define RustBinHostBuild
define Host/Install
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin
$(INSTALL_BIN) $(HOST_INSTALL_DIR)/bin/* $(STAGING_DIR_HOSTPKG)/bin/
endef
endef
Host/Compile=$(call Host/Compile/Cargo)
Host/Uninstall=$(call Host/Uninstall/Cargo)

51
rust/rust-package.mk Normal file
View file

@ -0,0 +1,51 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
# Variables (all optional) to be set in package Makefiles:
#
# RUST_PKG_FEATURES - list of options, default empty
#
# Space or comma separated list of features to activate
#
# e.g. RUST_PKG_FEATURES:=enable-foo,with-bar
ifeq ($(origin RUST_INCLUDE_DIR),undefined)
RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
endif
include $(RUST_INCLUDE_DIR)/rust-values.mk
# Support only a subset for now.
RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mipsel||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64)
# $(1) path to the package (optional)
# $(2) additional arguments to cargo (optional)
define Build/Compile/Cargo
( \
cd $(PKG_BUILD_DIR) ; \
export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \
CARGO_HOME=$(CARGO_HOME) \
TARGET_CFLAGS="$(TARGET_CFLAGS) $(RUST_CFLAGS)" \
TARGET_CC=$(TARGET_CC_NOCACHE) \
CC=$(HOSTCC_NOCACHE) \
$(CARGO_VARS) \
cargo install -v \
--profile stripped \
--target $(RUSTC_TARGET_ARCH) \
$(if $(strip $(RUST_PKG_FEATURES)),--features "$(strip $(RUST_PKG_FEATURES))") \
--root $(PKG_INSTALL_DIR) \
--path "$(if $(strip $(1)),$(strip $(1)),.)" \
$(2) ; \
)
endef
define RustBinPackage
ifndef Package/$(1)/install
define Package/$(1)/install
$$(INSTALL_DIR) $$(1)/usr/bin/
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/bin/* $$(1)/usr/bin/
endef
endif
endef
Build/Compile=$(call Build/Compile/Cargo)

59
rust/rust-values.mk Normal file
View file

@ -0,0 +1,59 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
# Rust Environmental Vars
CONFIG_HOST_SUFFIX:=$(word 4, $(subst -, ,$(GNU_HOST_NAME)))
RUSTC_HOST_ARCH:=$(HOST_ARCH)-unknown-linux-$(CONFIG_HOST_SUFFIX)
CARGO_HOME:=$(STAGING_DIR)/host/cargo
CARGO_VARS:=
ifeq ($(CONFIG_USE_MUSL),y)
# Force linking of the SSP library for musl
ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR
ifeq ($(strip $(PKG_SSP)),1)
RUSTC_LDFLAGS += -lssp_nonshared
endif
endif
ifdef CONFIG_PKG_CC_STACKPROTECTOR_STRONG
ifeq ($(strip $(PKG_SSP)),1)
TARGET_CFLAGS += -lssp_nonshared
endif
endif
endif
ifeq ($(HOST_OS),Darwin)
ifeq ($(HOST_ARCH),arm64)
RUSTC_HOST_ARCH:=aarch64-apple-darwin
endif
endif
# mips64 openwrt has a specific targed in rustc
ifeq ($(ARCH),mips64)
RUSTC_TARGET_ARCH:=$(REAL_GNU_TARGET_NAME)
else
RUSTC_TARGET_ARCH:=$(subst openwrt,unknown,$(REAL_GNU_TARGET_NAME))
endif
RUSTC_TARGET_ARCH:=$(subst muslgnueabi,musleabi,$(RUSTC_TARGET_ARCH))
ifeq ($(ARCH),i386)
RUSTC_TARGET_ARCH:=$(subst i486,i586,$(RUSTC_TARGET_ARCH))
else ifeq ($(ARCH),riscv64)
RUSTC_TARGET_ARCH:=$(subst riscv64,riscv64gc,$(RUSTC_TARGET_ARCH))
endif
# ARM Logic
ifeq ($(ARCH),arm)
ifeq ($(CONFIG_arm_v7),y)
RUSTC_TARGET_ARCH:=$(subst arm,armv7,$(RUSTC_TARGET_ARCH))
endif
ifeq ($(CONFIG_HAS_FPU),y)
RUSTC_TARGET_ARCH:=$(subst musleabi,musleabihf,$(RUSTC_TARGET_ARCH))
endif
endif
ifeq ($(ARCH),aarch64)
RUST_CFLAGS:=-mno-outline-atomics
endif

78
shadowsocks-rust/Makefile Normal file
View file

@ -0,0 +1,78 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2017-2020 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2021-2023 ImmortalWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=shadowsocks-rust
PKG_VERSION:=1.16.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/shadowsocks/shadowsocks-rust/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=da4c6256247207b2579721046292bab1a2ac62301878c73ff778c168caa8a990
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_DEPENDS:=rust/host
RUST_PKG_FEATURES:=local-redir
include $(INCLUDE_DIR)/package.mk
#include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk
include $(TOPDIR)/feeds/openmptcprouter/rust/rust-package.mk
define Package/shadowsocks-rust/Default
define Package/shadowsocks-rust-$(1)
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=shadowsocks-rust $(1)
URL:=https://github.com/shadowsocks/shadowsocks-rust
DEPENDS:=$$(RUST_ARCH_DEPENDS)
endef
define Package/shadowsocks-rust-$(1)/install
$$(INSTALL_DIR) $$(1)/usr/bin
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/bin/$(1) $$(1)/usr/bin/
endef
endef
define Package/shadowsocks-rust-config
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=shadowsocks-rust config
URL:=https://github.com/shadowsocks/shadowsocks-rust
DEPENDS:=$$(RUST_ARCH_DEPENDS)
endef
define Package/shadowsocks-rust-config/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/ssr-rules $(1)/usr/bin
$(INSTALL_BIN) ./files/ssr-rules6 $(1)/usr/bin
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_DATA) ./files/firewall.ssr-rules $(1)/etc
$(INSTALL_BIN) ./files/ssr-rules.defaults $(1)/etc/uci-defaults
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./files/shadowsocks-rust.config $(1)/etc/config/shadowsocks-rust
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/shadowsocks-rust.init $(1)/etc/init.d/shadowsocks-rust
endef
SHADOWSOCKS_COMPONENTS:=sslocal ssmanager ssserver ssurl ssservice
define shadowsocks-rust/templates
$(foreach component,$(SHADOWSOCKS_COMPONENTS),
$(call Package/shadowsocks-rust/Default,$(component))
)
endef
$(eval $(call shadowsocks-rust/templates))
$(eval $(call BuildPackage,shadowsocks-rust-config))
$(foreach component,$(SHADOWSOCKS_COMPONENTS), \
$(eval $(call BuildPackage,shadowsocks-rust-$(component))) \
)

View file

@ -0,0 +1,2 @@
#!/bin/sh
/etc/init.d/shadowsocks-rust rules_up

View file

@ -0,0 +1,51 @@
config ss_redir hi1
option server 'sss0'
option local_address '::'
option local_port '1100'
option mode 'tcp_and_udp'
option timeout '1000'
option fast_open 0
option verbose 0
option syslog 1
option reuse_port 1
option mptcp 1
option ipv6_first 1
option no_delay 1
config ss_redir hi2
option server 'sss0'
option local_address '0.0.0.0'
option local_port '1100'
option mode 'tcp_and_udp'
option timeout '1000'
option fast_open 1
option verbose 0
option syslog 1
option reuse_port 1
option mptcp 1
option ipv6_first 1
option no_delay 1
option disabled 1
config ss_rules 'ss_rules'
option disabled 0
option redir_tcp 'hi1'
option src_default 'forward'
option dst_default 'forward'
option local_default 'forward'
option server 'sss0'
config server 'sss0'
option disabled 1
option server '192.168.1.3'
option server_port '65280'
option key ''
option method '2022-blake3-aes-256-gcm'
option obfs 0
config ss_tunnel 'dns'
option disabled 1
option mode 'tcp_and_udp'
option server 'sss0'
option local_port '5353'
option tunnel_address '8.8.8.8:53'

View file

@ -0,0 +1,494 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2017-2019 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2019-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
USE_PROCD=1
EXTRA_COMMANDS="rules_up rules_down rules_exist"
START=91
ss_confdir=/var/etc/shadowsocks-rust
ss_bindir=/usr/bin
ss_mkjson_server_conf() {
local cfgserver
config_get cfgserver "$cfg" server
[ -n "$cfgserver" ] || return 1
eval "$(validate_server_section "$cfg" ss_validate_mklocal)"
validate_server_section "$cfgserver" || return 1
[ "$disabled" = 0 ] || return 1
ss_mkjson_server_conf_ "$cfgserver"
}
ss_mkjson_server_conf_() {
[ -n "$server_port" ] || return 1
[ -z "$method" ] || json_add_string method "$method"
[ -z "$server" ] || json_add_string server "$server"
json_add_int server_port "$server_port"
[ -z "$password" ] || {
#password="$(echo $password | sed 's/+/-/g; s/\//_/g;')"
json_add_string password "$password"
}
[ -z "$password" ] && return 1
[ -z "$plugin" ] || json_add_string plugin "$plugin"
[ -z "$plugin_opts" ] || json_add_string plugin_opts "$plugin_opts"
if [ "$obfs" = 1 ]; then
if [ "$obfs_plugin" = "obfs" ]; then
obfs_options="obfs=$obfs_type"
[ -z "$obfs_host" ] || obfs_options="$obfs_options;obfs-host=$obfs_host"
[ -z "$obfs_uri" ] || obfs_options="$obfs_options;obfs-uri=$obfs_uri"
[ "$fast_open" = 1 ] && obfs_options="$obfs_options;fast-open"
[ "$mptcp" = 1 ] && obfs_options="$obfs_options;mptcp"
[ -z "$timeout" ] || obfs_options="$obfs_options;t=$timeout"
json_add_string plugin "/usr/bin/obfs-local"
json_add_string plugin_opts "$obfs_options"
fi
if [ "$obfs_plugin" = "v2ray" ]; then
obfs_options="loglevel=default"
[ "$obfs_type" = "tls" ] && obfs_options="tls"
[ -z "$obfs_host" ] || obfs_options="$obfs_options;host=$obfs_host"
[ -z "$obfs_uri" ] || obfs_options="$obfs_options;path=$obfs_uri"
[ "$fast_open" = 1 ] && obfs_options="$obfs_options;fast-open"
json_add_string plugin "/usr/bin/v2ray-plugin"
json_add_string plugin_opts "$obfs_options"
fi
fi
}
ss_mkjson_ss_local_conf() {
ss_mkjson_server_conf
}
ss_mkjson_ss_redir_conf() {
ss_mkjson_server_conf
}
ss_mkjson_ss_server_conf() {
ss_mkjson_server_conf_
}
ss_mkjson_ss_tunnel_conf() {
ss_mkjson_server_conf || return 1
[ -n "$tunnel_address" ] || return 1
json_add_string tunnel_address "$tunnel_address"
}
ss_xxx() {
local cfg="$1"
local cfgtype="$2"
local bin="$ss_bindir/sslocal"
local confjson="$ss_confdir/$cfgtype.$cfg.json"
[ -x "$bin" ] || return
eval "$("validate_${cfgtype}_section" "$cfg" ss_validate_mklocal)"
"validate_${cfgtype}_section" "$cfg" || return
[ "$disabled" = 0 ] || return
json_init
ss_mkjson_${cfgtype}_conf || return
json_add_boolean use_syslog 1
json_add_boolean ipv6_first "$ipv6_first"
json_add_boolean fast_open "$fast_open"
json_add_boolean reuse_port "$reuse_port"
json_add_boolean no_delay "$no_delay"
json_add_boolean mptcp "$mptcp"
[ "$cfgtype" != "ss_local" ] && json_add_string protocol "${cfgtype/ss_/}"
[ -z "$local_address" ] || json_add_string local_address "$local_address"
[ -z "$local_port" ] || json_add_int local_port "$local_port"
[ -z "$mode" ] || json_add_string mode "$mode"
[ -z "$mtu" ] || json_add_int mtu "$mtu"
[ -z "$timeout" ] || json_add_int timeout "$timeout"
[ -z "$user" ] || json_add_string user "$user"
json_dump -i >"$confjson"
procd_open_instance "$cfgtype.$cfg"
procd_set_param command "$bin" -c "$confjson"
[ "$verbose" = 0 ] || procd_append_param command -v
[ -z "$bind_address" ] || procd_append_param command -b "$bind_address"
procd_set_param file "$confjson"
procd_set_param limits nofile="512000 512000"
procd_set_param respawn
procd_close_instance
ss_rules_cb
}
ss_rules_restart() {
local cfg="$1"
local cfgtype="$2"
eval "$("validate_${cfgtype}_section" "$cfg" ss_validate_mklocal)"
"validate_${cfgtype}_section" "$cfg" || return 1
ss_rules_cb
}
ss_rules_cb() {
local cfgserver server
if [ "$cfgtype" = ss_redir ]; then
config_get cfgserver "$cfg" server
config_get server "$cfgserver" server
ss_redir_servers="$ss_redir_servers $server"
if [ "$mode" = "tcp_only" -o "$mode" = "tcp_and_udp" ]; then
eval "ss_rules_redir_tcp_$cfg=$local_port"
eval "ss_rules6_redir_tcp_$cfg=$local_port"
fi
if [ "$mode" = "udp_only" -o "$mode" = "tcp_and_udp" ]; then
eval "ss_rules_redir_udp_$cfg=$local_port"
eval "ss_rules6_redir_udp_$cfg=$local_port"
fi
fi
}
ss_redir_ports() {
port=$(uci -q get shadowsocks-rust.$1.local_port)
server=$(uci -q get shadowsocks-rust.$1.server)
disabled=$(uci -q get shadowsocks-rust.$1.disabled)
if [ "$disabled" != "1" ] && ([ "$server" = "$2" ] || [ "$2" = "" ]); then
if [ "$port" -lt "$min_ss_redir_ports" ]; then
min_ss_redir_ports=$port
fi
if [ "$port" -gt "$max_ss_redir_ports" ]; then
max_ss_redir_ports=$port
fi
fi
}
ss_rules() {
local cfg="$1"
local bin="$ss_bindir/ssr-rules"
local bin6="$ss_bindir/ssr-rules6"
local cfgtype
local cfgrulesserver
local local_port_tcp local_port_udp
local local_port_tcp6 local_port_udp6
local args
local rule_name
if [ "$cfg" = "ss_rules" ]; then
rule_name="def"
else
rule_name="$(echo $cfg | sed 's/_rule//' | cut -c -7)"
fi
[ -x "$bin" ] || return 1
#"$bin" -f
[ -x "$bin6" ] || return 1
#"$bin6" -f
config_get cfgtype "$cfg" TYPE
[ "$cfgtype" = ss_rules ] || return 1
config_get cfgrulesserver "$cfg" server
eval "$(validate_ss_rules_section "$cfg" ss_validate_mklocal)"
validate_ss_rules_section "$cfg" || return 1
[ "$disabled" != "1" ] || return 0
[ "$(uci -q get shadowsocks-rust.${cfgrulesserver}.disabled)" != "1" ] || return 0
if [ "$ss_rules_redir_tcp_$redir_tcp" = "all" ]; then
min_ss_redir_ports="65535"
max_ss_redir_ports="0"
config_load shadowsocks-rust
config_foreach ss_redir_ports ss_redir $cfgrulesserver
if [ "$min_ss_redir_ports" != "$max_ss_redir_ports" ]; then
all_ss_redir_ports=$min_ss_redir_ports-$max_ss_redir_ports
else
all_ss_redir_ports=$min_ss_redir_ports
fi
local_port_tcp="$all_ss_redir_ports"
if [ "$ss_rules_redir_udp_$redir_udp" = "all" ] || [ "$ss_rules_redir_udp_$redir_udp" = "hi1" ]; then
local_port_udp="$min_ss_redir_ports"
fi
#eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
local_port_tcp6="$all_ss_redir_ports"
if [ "$ss_rules_redir_udp_$redir_udp" = "all" ] || [ "$ss_rules_redir_udp_$redir_udp" = "hi1" ]; then
local_port_udp6="$min_ss_redir_ports"
fi
#eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp"
else
eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp"
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
eval local_port_tcp6="\$ss_rules6_redir_tcp_$redir_tcp"
eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp"
fi
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
ss_redir_servers4="$(echo "$ss_redir_servers" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
ss_redir_servers6="$(echo "$ss_redir_servers" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
[ -z "$ss_redir_servers4" ] && [ -z "$ss_redir_servers6" ] && {
ss_redir_servers4="$ss_redir_servers"
ss_redir_servers6="$ss_redir_servers"
}
#ss_redir_servers="$(echo "$ss_redir_servers" | tr ' ' '\n' | sort -u)"
dst_ips_bypass4="$(echo "$dst_ips_bypass" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
dst_ips_forward4="$(echo "$dst_ips_forward" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
src_ips_bypass4="$(echo "$src_ips_bypass" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
src_ips_forward4="$(echo "$src_ips_forward" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
src_ips_checkdst4="$(echo "$src_ips_checkdst" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
dst_ips_bypass6="$(echo "$dst_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
dst_ips_forward6="$(echo "$dst_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
[ -z "$dst_ips_bypass4" ] && [ -z "$dst_ips_bypass6" ] && {
dst_ips_bypass4="$dst_ips_bypass"
dst_ips_bypass6="$dst_ips_bypass"
}
[ -z "$dst_ips_forward4" ] && [ -z "$dst_ips_forward6" ] && {
dst_ips_forward4="$dst_ips_forward"
dst_ips_forward6="$dst_ips_forward"
}
[ -z "$src_ips_bypass4" ] && [ -z "$src_ips_bypass6" ] && {
src_ips_bypass4="$src_ips_bypass"
src_ips_bypass6="$src_ips_bypass"
}
[ -z "$src_ips_forward4" ] && [ -z "$src_ips_forward6" ] && {
src_ips_forward4="$src_ips_forward"
src_ips_forward6="$src_ips_forward"
}
[ -z "$src_ips_checkdst4" ] && [ -z "$src_ips_checkdst6" ] && {
src_ips_checkdst4="$src_ips_checkdst"
src_ips_checkdst6="$src_ips_checkdst"
}
[ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
ss_rules_call
ss_rules_call6
}
ss_rules_call() {
"$bin" "$@" \
-s "$ss_redir_servers4" \
${local_port_tcp:+-l "$local_port_tcp"} \
${local_port_udp:+-L "$local_port_udp"} \
${src_default:+--src-default "$src_default"} \
${dst_default:+--dst-default "$dst_default"} \
${local_default:+--local-default "$local_default"} \
${dst_ips_bypass_file:+--dst-bypass-file "$dst_ips_bypass_file"} \
${dst_ips_forward_file:+--dst-forward-file "$dst_ips_forward_file"} \
${dst_ips_bypass4:+--dst-bypass "$dst_ips_bypass4"} \
${dst_ips_forward4:+--dst-forward "$dst_ips_forward4"} \
${src_ips_bypass4:+--src-bypass "$src_ips_bypass4"} \
${src_ips_forward4:+--src-forward "$src_ips_forward4"} \
${src_ips_checkdst4:+--src-checkdst "$src_ips_checkdst4"} \
${ifnames:+--ifnames "$ifnames"} \
${ipt_args:+--ipt-extra "$ipt_args"} \
${cfg:+--rule-name "$rule_name"} \
$args \
|| "$bin" "$@" -f
}
ss_rules_call6() {
"$bin6" "$@" \
-s "$ss_redir_servers6" \
${local_port_tcp:+-l "$local_port_tcp6"} \
${local_port_udp:+-L "$local_port_udp6"} \
${src_default:+--src-default "$src_default"} \
${dst_default:+--dst-default "$dst_default"} \
${local_default:+--local-default "$local_default"} \
${dst_ips_bypass_file:+--dst-bypass-file "$dst_ips_bypass_file"} \
${dst_ips_forward_file:+--dst-forward-file "$dst_ips_forward_file"} \
${dst_ips_bypass6:+--dst-bypass "$dst_ips_bypass6"} \
${dst_ips_forward6:+--dst-forward "$dst_ips_forward6"} \
${src_ips_bypass6:+--src-bypass "$src_ips_bypass6"} \
${src_ips_forward6:+--src-forward "$src_ips_forward6"} \
${src_ips_checkdst6:+--src-checkdst "$src_ips_checkdst6"} \
${ifnames:+--ifnames "$ifnames"} \
${ipt_args:+--ipt-extra "$ipt_args"} \
${cfg:+--rule-name "$rule_name"} \
$args \
|| "$bin6" "$@" -f
}
start_service() {
local cfgtype
mkdir -p "$ss_confdir"
config_load shadowsocks-rust
for cfgtype in ss_local ss_redir ss_server ss_tunnel; do
config_foreach ss_xxx "$cfgtype" "$cfgtype"
done
# Add rule to match traffic marked by firewall for bypass
ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1
rules_up
[ -f /etc/firewall.gre-tunnel ] && sh /etc/firewall.gre-tunnel > /dev/null 2>&1
}
stop_service() {
rules_down
rm -rf "$ss_confdir"
}
reload_service() {
restart "$@"
}
rules_exist() {
[ -n "$(iptables-save 2>/dev/null | grep 'A ssr')" ] && return 0
return 1
}
server_state() {
config_get disabled "$1" disabled "0"
[ "$disabled" = "0" ] && enabled="1"
config_get password "$1" password
[ -n "$password" ] && passkey=$password
}
rules_up() {
rules_exist && {
[ -f /bin/blocklanfw ] && /bin/blocklanfw 2>&1 >/dev/null
return 0
}
[ "$(uci -q get shadowsocks-rust.ss_rules.disabled)" = "1" ] && return 0
enabled="0"
passkey=""
config_load shadowsocks-rust
config_foreach server_state server
[ "$enabled" = "0" ] && return
[ -z "$passkey" ] && return
logger -t "Shadowsocks-rust" "Rules UP"
for cfgtype in ss_redir; do
config_foreach ss_rules_restart "$cfgtype" "$cfgtype"
done
config_foreach ss_rules ss_rules
[ -z "$(iptables-save 2>/dev/null | grep :ssr)" ] && logger -t "Shadowsocks-rust" "Rules not applied"
[ -f /etc/init.d/omr-bypass ] && [ -z "$(pgrep -f omr-bypass)" ] && {
logger -t "Shadowsocks-rust" "Reload omr-bypass rules"
/etc/init.d/omr-bypass reload_rules
}
[ -f /bin/blocklanfw ] && /bin/blocklanfw 2>&1 >/dev/null
}
rules_down() {
rules_exist || return 0
logger -t "Shadowsocks-rust" "Rules DOWN"
local bin="$ss_bindir/ssr-rules"
[ -x "$bin" ] && {
"$bin" -f >/dev/null 2>&1
}
local bin6="$ss_bindir/ssr-rules6"
[ -x "$bin6" ] && {
"$bin6" -f >/dev/null 2>&1
}
}
service_triggers() {
procd_add_reload_interface_trigger wan*
procd_add_reload_trigger shadowsocks-rust
procd_open_validate
validate_server_section
validate_ss_local_section
validate_ss_redir_section
validate_ss_rules_section
validate_ss_server_section
validate_ss_tunnel_section
procd_close_validate
}
ss_validate_mklocal() {
local tuple opts
shift 2
for tuple in "$@"; do
opts="${tuple%%:*} $opts"
done
[ -z "$opts" ] || echo "local $opts"
}
ss_validate() {
uci_validate_section shadowsocks-rust "$@"
}
validate_common_server_options_() {
local cfgtype="$1"; shift
local cfg="$1"; shift
local func="$1"; shift
local stream_methods='"none", "plain", "chacha20-ietf-poly1305"'
local aead_methods='"aes-128-gcm", "aes-256-gcm","2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "chacha20-ietf-poly1305", "2022-blake3-chacha20-poly1305","2022-blake3-chacha8-poly1305"'
"${func:-ss_validate}" "$cfgtype" "$cfg" "$@" \
'disabled:bool:0' \
'server:host' \
'server_port:port' \
'password:string' \
"method:or($stream_methods, $aead_methods)" \
'plugin:string' \
'plugin_opts:string' \
'obfs:bool:0' \
'obfs_plugin:or("v2ray","obfs"):v2ray' \
'obfs_type:or("http","tls"):http'
}
validate_common_client_options_() {
validate_common_options_ "$@" \
'server:uci("shadowsocks-rust", "@server")' \
'local_address:host:0.0.0.0' \
'local_port:port'
}
validate_common_options_() {
local cfgtype="$1"; shift
local cfg="$1"; shift
local func="$1"; shift
"${func:-ss_validate}" "$cfgtype" "$cfg" "$@" \
'disabled:bool:0' \
'fast_open:bool:0' \
'ipv6_first:bool:0' \
'no_delay:bool:0' \
'mptcp:bool:0' \
'reuse_port:bool:0' \
'verbose:bool:0' \
'mode:or("tcp_only", "udp_only", "tcp_and_udp"):tcp_only' \
'mtu:uinteger' \
'timeout:uinteger' \
'user:string'
}
validate_server_section() {
validate_common_server_options_ server "$1" "$2"
}
validate_ss_local_section() {
validate_common_client_options_ ss_local "$1" "$2"
}
validate_ss_redir_section() {
validate_common_client_options_ ss_redir "$1" "$2"
}
validate_ss_rules_section() {
"${2:-ss_validate}" ss_rules "$1" \
'disabled:bool:0' \
'redir_tcp:or(uci("shadowsocks-rust", "@ss_redir"),"all")' \
'redir_udp:or(uci("shadowsocks-rust", "@ss_redir"),"all")' \
'src_ips_bypass:or(ipaddr,cidr)' \
'src_ips_forward:or(ipaddr,cidr)' \
'src_ips_checkdst:or(ipaddr,cidr)' \
'dst_ips_bypass_file:file' \
'dst_ips_bypass:or(ipaddr,cidr)' \
'dst_ips_forward_file:file' \
'dst_ips_forward:or(ipaddr,cidr)' \
'src_default:or("bypass", "forward", "checkdst"):checkdst' \
'dst_default:or("bypass", "forward"):bypass' \
'local_default:or("bypass", "forward", "checkdst"):bypass' \
'dst_forward_recentrst:bool:0' \
'ifnames:maxlength(15)' \
'ipt_args:string'
}
validate_ss_server_section() {
validate_common_server_options_ ss_server "$1" \
validate_common_options_ \
"$2" \
'bind_address:ipaddr'
}
validate_ss_tunnel_section() {
validate_common_client_options_ ss_tunnel "$1" \
"$2" \
'tunnel_address:regex(".+\:[0-9]+")'
}

301
shadowsocks-rust/files/ssr-rules Executable file
View file

@ -0,0 +1,301 @@
#!/bin/sh -e
#
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
if [ -f /usr/sbin/iptables-legacy ]; then
IPTABLES="/usr/sbin/iptables-legacy"
IPTABLESRESTORE="/usr/sbin/iptables-legacy-restore"
IPTABLESSAVE="/usr/sbin/iptables-legacy-save"
else
IPTABLES="/usr/sbin/iptables"
IPTABLESRESTORE="/usr/sbin/iptables-restore"
IPTABLESSAVE="/usr/sbin/iptables-save"
fi
ss_rules_usage() {
cat >&2 <<EOF
Usage: ss-rules [options]
-h, --help Show this help message then exit
-f, --flush Flush rules, ipset then exit
-l <port> Local port number of ss-redir with TCP mode
-L <port> Local port number of ss-redir with UDP mode
-s <ips> List of ip addresses of remote shadowsocks server
--ifnames Only apply rules on packets from these ifnames
--src-bypass <ips|cidr>
--src-forward <ips|cidr>
--src-checkdst <ips|cidr>
--src-default <bypass|forward|checkdst>
Packets will have their src ip checked in order against
bypass, forward, checkdst list and will bypass, forward
through, or continue to have their dst ip checked
respectively on the first match. Otherwise, --src-default
decide the default action
--dst-bypass <ips|cidr>
--dst-forward <ips|cidr>
--dst-bypass-file <file>
--dst-forward-file <file>
--dst-default <bypass|forward>
Same as with their --src-xx equivalent
--dst-forward-recentrst
Forward those packets whose destinations have recently
sent to us multiple tcp-rst packets
--local-default <bypass|forward|checkdst>
Default action for local out TCP traffic
The following ipsets will be created by ss-rules. They are also intended to be
populated by other programs like dnsmasq with ipset support
ss_rules_src_bypass
ss_rules_src_forward
ss_rules_src_checkdst
ss_rules_dst_bypass
ss_rules_dst_bypass_all
ss_rules_dst_forward
EOF
}
o_dst_bypass_="
0.0.0.0/8
10.0.0.0/8
100.64.0.0/10
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.0.0.0/24
192.0.2.0/24
192.31.196.0/24
192.52.193.0/24
192.88.99.0/24
192.168.0.0/16
192.175.48.0/24
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
224.0.0.0/4
240.0.0.0/4
255.255.255.255
"
o_src_default=bypass
o_dst_default=bypass
o_local_default=bypass
__errmsg() {
echo "ss-rules: $*" >&2
}
ss_rules_parse_args() {
while [ "$#" -gt 0 ]; do
case "$1" in
-h|--help) ss_rules_usage; exit 0;;
-f|--flush) ss_rules_flush; exit 0;;
-l) o_redir_tcp_port="$2"; shift 2;;
-L) o_redir_udp_port="$2"; shift 2;;
-s) o_remote_servers="$2"; shift 2;;
--ifnames) o_ifnames="$2"; shift 2;;
--ipt-extra) o_ipt_extra="$2"; shift 2;;
--src-default) o_src_default="$2"; shift 2;;
--dst-default) o_dst_default="$2"; shift 2;;
--local-default) o_local_default="$2"; shift 2;;
--src-bypass) o_src_bypass="$2"; shift 2;;
--src-forward) o_src_forward="$2"; shift 2;;
--src-checkdst) o_src_checkdst="$2"; shift 2;;
--dst-bypass) o_dst_bypass="$2"; shift 2;;
--dst-bypass_all) o_dst_bypass_all="$2"; shift 2;;
--dst-forward) o_dst_forward="$2"; shift 2;;
--dst-forward-recentrst) o_dst_forward_recentrst=1; shift 1;;
--dst-bypass-file) o_dst_bypass_file="$2"; shift 2;;
--dst-forward-file) o_dst_forward_file="$2"; shift 2;;
--rule-name) rule="$2"; shift 2;;
*) __errmsg "unknown option $1"; return 1;;
esac
done
if [ -z "$o_redir_tcp_port" -a -z "$o_redir_udp_port" ]; then
__errmsg "Requires at least -l or -L option"
return 1
fi
if [ -n "$o_dst_forward_recentrst" ] && ! $IPTABLES -w -m recent -h >/dev/null; then
__errmsg "Please install iptables-mod-conntrack-extra with opkg"
return 1
fi
o_remote_servers="$(for s in $o_remote_servers; do resolveip -4 "$s"; done)"
}
ss_rules_flush() {
local setname
$IPTABLESSAVE --counters 2>/dev/null | grep -v ssr_ | $IPTABLESRESTORE --counters
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
ip route flush table 100 || true
for setname in $(ipset -n list | grep "ssr_${rule}"); do
ipset destroy "$setname" 2>/dev/null || true
done
}
ss_rules_ipset_init() {
ipset --exist restore <<-EOF
create ssr_${rule}_src_bypass hash:net hashsize 64
create ssr_${rule}_src_forward hash:net hashsize 64
create ssr_${rule}_src_checkdst hash:net hashsize 64
create ss_rules_dst_bypass_all hash:net hashsize 64
create ssr_${rule}_dst_bypass hash:net hashsize 64
create ssr_${rule}_dst_bypass_ hash:net hashsize 64
create ssr_${rule}_dst_forward hash:net hashsize 64
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
$(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
$(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
$(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
$(ss_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass")
$(ss_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward")
$(ss_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst")
$(ss_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
EOF
}
ss_rules_ipset_mkadd() {
local setname="$1"; shift
local i
for i in $*; do
echo "add $setname $i"
done
}
ss_rules_iptchains_init() {
ss_rules_iptchains_init_mark
ss_rules_iptchains_init_tcp
ss_rules_iptchains_init_udp
}
ss_rules_iptchains_init_mark() {
if [ "$($IPTABLES -w -t mangle -L PREROUTING | grep ss_rules_dst_bypass_all)" = "" ]; then
$IPTABLESRESTORE --noflush <<-EOF
*mangle
-A PREROUTING -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
COMMIT
EOF
fi
}
ss_rules_iptchains_init_tcp() {
local local_target
[ -n "$o_redir_tcp_port" ] || return 0
ss_rules_iptchains_init_ nat tcp
case "$o_local_default" in
checkdst) local_target=ssr_${rule}_dst ;;
forward) local_target=ssr_${rule}_forward ;;
bypass|*) return 0;;
esac
if [ "$($IPTABLESSAVE 2>/dev/null | grep ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then
$IPTABLESRESTORE --noflush <<-EOF
*nat
:ssr_${rule}_local_out -
-I OUTPUT 1 -p tcp -j ssr_${rule}_local_out
-A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
-A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN
-A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
COMMIT
EOF
fi
}
ss_rules_iptchains_init_udp() {
[ -n "$o_redir_udp_port" ] || return 0
ss_rules_iptchains_init_ mangle udp
}
ss_rules_iptchains_init_() {
local table="$1"
local proto="$2"
local forward_rules
local src_default_target dst_default_target
local recentrst_mangle_rules recentrst_addset_rules
case "$proto" in
tcp)
forward_rules="-A ssr_${rule}_forward -p tcp -j REDIRECT --to-ports $o_redir_tcp_port"
if [ -n "$o_dst_forward_recentrst" ]; then
recentrst_mangle_rules="
*mangle
-I PREROUTING 1 -p tcp -m tcp --tcp-flags RST RST -m recent --name ss_rules_recentrst --set --rsource
COMMIT
"
recentrst_addset_rules="
-A ssr_${rule}_dst -m recent --name ss_rules_recentrst --rcheck --rdest --seconds 3 --hitcount 3 -j SET --add-set ss_rules_dst_forward_recentrst_ dst --exist
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_forward_recentrst_ dst -j ssr_${rule}_forward
"
fi
;;
udp)
ip rule add fwmark 1 lookup 100 || true
ip route add local default dev lo table 100 || true
forward_rules="-A ssr_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;;
esac
case "$o_src_default" in
forward) src_default_target=ssr_${rule}_forward ;;
checkdst) src_default_target=ssr_${rule}_dst ;;
bypass|*) src_default_target=RETURN ;;
esac
case "$o_dst_default" in
forward) dst_default_target=ssr_${rule}_forward ;;
bypass|*) dst_default_target=RETURN ;;
esac
sed -e '/^\s*$/d' -e 's/^\s\+//' <<-EOF | $IPTABLESRESTORE --noflush
*$table
:ssr_${rule}_pre_src -
:ssr_${rule}_src -
:ssr_${rule}_dst -
:ssr_${rule}_forward -
$(ss_rules_iptchains_mkprerules "$proto")
-A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j ssr_${rule}_forward
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j ssr_${rule}_dst
-A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
-A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j ssr_${rule}_forward
$recentrst_addset_rules
-A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
$forward_rules
COMMIT
$recentrst_mangle_rules
EOF
}
ss_rules_iptchains_mkprerules() {
local proto="$1"
if [ -z "$o_ifnames" ]; then
echo "-A PREROUTING -p $proto -j ssr_${rule}_pre_src"
else
echo $o_ifnames \
| tr ' ' '\n' \
| sed "s/.*/-I PREROUTING 1 -i \\0 -p $proto -j ssr_${rule}_pre_src/"
fi
}
ss_rules_parse_args "$@"
#ss_rules_flush
ss_rules_ipset_init
ss_rules_iptchains_init

View file

@ -0,0 +1,12 @@
#!/bin/sh
s=firewall.ssr_rules
uci get "$s" >/dev/null || {
uci batch <<-EOF
set $s=include
set $s.path=/etc/firewall.ssr-rules
set $s.reload=1
commit firewall
EOF
}
exit 0

285
shadowsocks-rust/files/ssr-rules6 Executable file
View file

@ -0,0 +1,285 @@
#!/bin/sh -e
#
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
if [ -f /usr/sbin/iptables-legacy ]; then
IP6TABLES="/usr/sbin/ip6tables-legacy"
IP6TABLESRESTORE="/usr/sbin/ip6tables-legacy-restore"
IP6TABLESSAVE="/usr/sbin/ip6tables-legacy-save"
else
IP6TABLES="/usr/sbin/ip6tables"
IP6TABLESRESTORE="/usr/sbin/ip6tables-restore"
IP6TABLESSAVE="/usr/sbin/ip6tables-save"
fi
ss_rules6_usage() {
cat >&2 <<EOF
Usage: ss-rules [options]
-h, --help Show this help message then exit
-f, --flush Flush rules, ipset then exit
-l <port> Local port number of ss-redir with TCP mode
-L <port> Local port number of ss-redir with UDP mode
-s <ips> List of ip addresses of remote shadowsocks server
--ifnames Only apply rules on packets from these ifnames
--src-bypass <ips|cidr>
--src-forward <ips|cidr>
--src-checkdst <ips|cidr>
--src-default <bypass|forward|checkdst>
Packets will have their src ip checked in order against
bypass, forward, checkdst list and will bypass, forward
through, or continue to have their dst ip checked
respectively on the first match. Otherwise, --src-default
decide the default action
--dst-bypass <ips|cidr>
--dst-forward <ips|cidr>
--dst-bypass-file <file>
--dst-forward-file <file>
--dst-default <bypass|forward>
Same as with their --src-xx equivalent
--dst-forward-recentrst
Forward those packets whose destinations have recently
sent to us multiple tcp-rst packets
--local-default <bypass|forward|checkdst>
Default action for local out TCP traffic
The following ipsets will be created by ss-rules. They are also intended to be
populated by other programs like dnsmasq with ipset support
ss_rules6_src_bypass
ss_rules6_src_forward
ss_rules6_src_checkdst
ss_rules6_dst_bypass
ss_rules6_dst_forward
EOF
}
o_dst_bypass_="
fe80::/10
fd00::/8
::1
"
o_src_default=bypass
o_dst_default=bypass
o_local_default=bypass
__errmsg() {
echo "ss-rules6: $*" >&2
}
ss_rules6_parse_args() {
while [ "$#" -gt 0 ]; do
case "$1" in
-h|--help) ss_rules6_usage; exit 0;;
-f|--flush) ss_rules6_flush; exit 0;;
-l) o_redir_tcp_port="$2"; shift 2;;
-L) o_redir_udp_port="$2"; shift 2;;
-s) o_remote_servers="$2"; shift 2;;
--ifnames) o_ifnames="$2"; shift 2;;
--ipt-extra) o_ipt_extra="$2"; shift 2;;
--src-default) o_src_default="$2"; shift 2;;
--dst-default) o_dst_default="$2"; shift 2;;
--local-default) o_local_default="$2"; shift 2;;
--src-bypass) o_src_bypass="$2"; shift 2;;
--src-forward) o_src_forward="$2"; shift 2;;
--src-checkdst) o_src_checkdst="$2"; shift 2;;
--dst-bypass) o_dst_bypass="$2"; shift 2;;
--dst-bypass_all) o_dst_bypass_all="$2"; shift 2;;
--dst-forward) o_dst_forward="$2"; shift 2;;
--dst-forward-recentrst) o_dst_forward_recentrst=1; shift 1;;
--dst-bypass-file) o_dst_bypass_file="$2"; shift 2;;
--dst-forward-file) o_dst_forward_file="$2"; shift 2;;
--rule-name) rule="$2"; shift 2;;
*) __errmsg "unknown option $1"; return 1;;
esac
done
if [ -z "$o_redir_tcp_port" -a -z "$o_redir_udp_port" ]; then
__errmsg "Requires at least -l or -L option"
return 1
fi
if [ -n "$o_dst_forward_recentrst" ] && ! $IP6TABLES -w -m recent -h >/dev/null; then
__errmsg "Please install ip6tables-mod-conntrack-extra with opkg"
return 1
fi
o_remote_servers="$(for s in $o_remote_servers; do resolveip -6 "$s"; done)"
}
ss_rules6_flush() {
local setname
$IP6TABLESSAVE --counters 2>/dev/null | grep -v ssr6_ | $IP6TABLESRESTORE --counters
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
ip -f inet6 route flush table 100 || true
for setname in $(ipset -n list | grep "ssr6_${rule}"); do
ipset destroy "$setname" 2>/dev/null || true
done
}
ss_rules6_ipset_init() {
ipset --exist restore <<-EOF
create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64
create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64
create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
$(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass")
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward")
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst")
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
EOF
}
ss_rules6_ipset_mkadd() {
local setname="$1"; shift
local i
for i in $*; do
echo "add $setname $i"
done
}
ss_rules6_iptchains_init() {
ss_rules6_iptchains_init_mark
ss_rules6_iptchains_init_tcp
ss_rules6_iptchains_init_udp
}
ss_rules6_iptchains_init_mark() {
if [ "$($IP6TABLES -w -t mangle -L PREROUTING | grep ss_rules6_dst_bypass_all)" = "" ]; then
$IP6TABLESRESTORE --noflush <<-EOF
*mangle
-A PREROUTING -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
COMMIT
EOF
fi
}
ss_rules6_iptchains_init_tcp() {
local local_target
[ -n "$o_redir_tcp_port" ] || return 0
ss_rules6_iptchains_init_ nat tcp
case "$o_local_default" in
checkdst) local_target=ssr6_${rule}_dst ;;
forward) local_target=ssr6_${rule}_forward ;;
bypass|*) return 0;;
esac
$IP6TABLESRESTORE --noflush <<-EOF
*nat
:ssr6_${rule}_local_out -
-I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out
-A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
-A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
-A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
-A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN
-A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
COMMIT
EOF
}
ss_rules6_iptchains_init_udp() {
[ -n "$o_redir_udp_port" ] || return 0
ss_rules6_iptchains_init_ mangle udp
}
ss_rules6_iptchains_init_() {
local table="$1"
local proto="$2"
local forward_rules
local src_default_target dst_default_target
local recentrst_mangle_rules recentrst_addset_rules
case "$proto" in
tcp)
forward_rules="-A ssr6_${rule}_forward -p tcp -j REDIRECT --to-ports $o_redir_tcp_port"
if [ -n "$o_dst_forward_recentrst" ]; then
recentrst_mangle_rules="
*mangle
-I PREROUTING 1 -p tcp -m tcp --tcp-flags RST RST -m recent --name ss_rules6_recentrst --set --rsource
COMMIT
"
recentrst_addset_rules="
-A ssr6_${rule}_dst -m recent --name ss_rules6_recentrst --rcheck --rdest --seconds 3 --hitcount 3 -j SET --add-set ss_rules6_dst_forward_recrst_ dst --exist
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_forward_recrst_ dst -j ssr6_${rule}_forward
"
fi
;;
udp)
ip -f inet6 rule add fwmark 1 lookup 100 || true
ip -f inet6 route add local default dev lo table 100 || true
forward_rules="-A ssr6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;;
esac
case "$o_src_default" in
forward) src_default_target=ssr6_${rule}_forward ;;
checkdst) src_default_target=ssr6_${rule}_dst ;;
bypass|*) src_default_target=RETURN ;;
esac
case "$o_dst_default" in
forward) dst_default_target=ssr6_${rule}_forward ;;
bypass|*) dst_default_target=RETURN ;;
esac
sed -e '/^\s*$/d' -e 's/^\s\+//' <<-EOF | $IP6TABLESRESTORE --noflush
*$table
:ssr6_${rule}_pre_src -
:ssr6_${rule}_src -
:ssr6_${rule}_dst -
:ssr6_${rule}_forward -
$(ss_rules6_iptchains_mkprerules "$proto")
-A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
-A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
-A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
-A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
-A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j ssr6_${rule}_forward
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j ssr6_${rule}_dst
-A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
-A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j ssr6_${rule}_forward
$recentrst_addset_rules
-A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
$forward_rules
COMMIT
$recentrst_mangle_rules
EOF
}
ss_rules6_iptchains_mkprerules() {
local proto="$1"
if [ -z "$o_ifnames" ]; then
echo "-A PREROUTING -p $proto -j ssr6_${rule}_pre_src"
else
echo $o_ifnames \
| tr ' ' '\n' \
| sed "s/.*/-I PREROUTING 1 -i \\0 -p $proto -j ssr6_${rule}_pre_src/"
fi
}
ss_rules6_parse_args "$@"
ss_rules6_flush
ss_rules6_ipset_init
ss_rules6_iptchains_init

View file

@ -13,7 +13,7 @@ PKG_RELEASE:=1
#PKG_HASH:=599fcd264537e39178b6008a11af68816dfd1609e19a9cf8adc8b2a4240ee370
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/v2fly/v2ray-core.git
PKG_SOURCE_VERSION:=d58649764e3afa52234ada9a28b7ae79577a23a9
PKG_SOURCE_VERSION:=8de2f27043b00612986d96f37975cd4aa98b49c3
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE

View file

@ -328,6 +328,7 @@ inbound_section_validate() {
'ss_quic_key:string' \
'ss_quic_header_type:or("none", "srtp", "utp", "wechat-video", "dtls", "wireguard")' \
'ss_sockopt_tcp_fast_open:or("0", "1")' \
'ss_sockopt_mptcp:or("0", "1")' \
'ss_sockopt_tproxy:or("redirect", "tproxy", "off")' \
'tag:string' \
'sniffing_enabled:bool:0' \
@ -426,6 +427,7 @@ outbound_section_validate() {
'ss_quic_header_type:or("none", "srtp", "utp", "wechat-video", "dtls", "wireguard")' \
'ss_sockopt_mark:uinteger' \
'ss_sockopt_tcp_fast_open:or("0", "1")' \
'ss_sockopt_mptcp:or("0", "1")' \
'stream_settings:string' \
'proxy_settings_tag:string' \
'mux_enabled:bool:0' \
@ -1371,12 +1373,13 @@ add_inbound_setting() {
# else
test -n "$ss_sockopt_tcp_fast_open" && \
json_add_boolean "tcpFastOpen" "$ss_sockopt_tcp_fast_open"
if version_over_5_4; then
test -n "$ss_sockopt_mptcp" && \
json_add_boolean "mptcp" "$ss_sockopt_mptcp"
fi
test -n "$ss_sockopt_tproxy" && \
json_add_string "tproxy" "$ss_sockopt_tproxy"
# fi
if version_over_5_4; then
json_add_boolean "mptcp" "1"
fi
json_close_object # sockopt
@ -1843,6 +1846,10 @@ add_outbound_setting() {
test -n "$ss_sockopt_tcp_fast_open" && \
json_add_boolean "tcpFastOpen" "$ss_sockopt_tcp_fast_open"
if version_over_5_4; then
test -n "$ss_sockopt_mptcp" && \
json_add_boolean "mptcp" "$ss_sockopt_mptcp"
fi
json_close_object # sockopt

View file

@ -75,6 +75,7 @@ if [ -z "$(uci -q get v2ray.main)" ]; then
add_list v2ray.omr.s_dokodemo_door_network='udp'
set v2ray.omr.ss_sockopt_tproxy='redirect'
set v2ray.omr.ss_sockopt_tcp_fast_open='1'
set v2ray.omr.ss_sockopt_mptcp='1'
set v2ray.omr.s_dokodemo_door_follow_redirect='1'
set v2ray.omr6=inbound
set v2ray.omr6.tag='omrtunnel6'
@ -196,5 +197,10 @@ if [ "$(uci -q get v2ray.omrout.s_socks_port)" = "" ]; then
commit v2ray
EOF
fi
if [ "$(uci -q get v2ray.omrout.ss_sockopt_mptcp)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set v2ray.omr.ss_sockopt_mptcp='1'
EOF
fi
exit 0

View file

@ -4,50 +4,6 @@ Date: Sat, 29 Jul 2023 14:56:58 +0800
Subject: [PATCH] support mptcp
---
diff --git a/go.mod b/go.mod
index e3881e5aa..73599d927 100644
--- a/go.mod
+++ b/go.mod
@@ -16,7 +16,7 @@ require (
github.com/mustafaturan/bus v1.0.2
github.com/pelletier/go-toml v1.9.5
github.com/pires/go-proxyproto v0.7.0
- github.com/quic-go/quic-go v0.36.2
+ github.com/quic-go/quic-go v0.37.0
github.com/refraction-networking/utls v1.3.3
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb
github.com/stretchr/testify v1.8.4
@@ -65,8 +65,7 @@ require (
github.com/pion/sctp v1.8.7 // indirect
github.com/pion/transport/v2 v2.2.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/quic-go/qtls-go1-19 v0.3.2 // indirect
- github.com/quic-go/qtls-go1-20 v0.2.2 // indirect
+ github.com/quic-go/qtls-go1-20 v0.3.0 // indirect
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect
github.com/secure-io/siv-go v0.0.0-20180922214919-5ff40651e2c4 // indirect
github.com/xtaci/smux v1.5.24 // indirect
diff --git a/go.sum b/go.sum
index 0ce21101c..63298b0c1 100644
--- a/go.sum
+++ b/go.sum
@@ -260,12 +260,10 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U=
-github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI=
-github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E=
-github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM=
-github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA=
-github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ=
+github.com/quic-go/qtls-go1-20 v0.3.0 h1:NrCXmDl8BddZwO67vlvEpBTwT89bJfKYygxv4HQvuDk=
+github.com/quic-go/qtls-go1-20 v0.3.0/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/quic-go/quic-go v0.37.0 h1:wf/Ym2yeWi98oQn4ahiBSqdnaXVxNQGj2oBQFgiVChc=
+github.com/quic-go/quic-go v0.37.0/go.mod h1:XtCUOCALTTWbPyd0IxFfHf6h0sEMubRFvEYHl3QxKw8=
github.com/refraction-networking/utls v1.3.3 h1:f/TBLX7KBciRyFH3bwupp+CE4fzoYKCirhdRcC490sw=
github.com/refraction-networking/utls v1.3.3/go.mod h1:DlecWW1LMlMJu+9qpzzQqdHDT/C2LAe03EdpLUz/RL8=
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg=
diff --git a/transport/internet/system_dialer.go b/transport/internet/system_dialer.go
index 314664a78..96bb0eca1 100644
--- a/transport/internet/system_dialer.go

68
xray-core/Makefile Normal file
View file

@ -0,0 +1,68 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=xray-core
PKG_VERSION:=1.8.5
PKG_RELEASE:=1
PKG_LICENSE:=MPLv2
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Yannick Chabanois <contact@openmptcprouter.com>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/XTLS/Xray-core.git
PKG_SOURCE_VERSION:=585d5ba7c8b64f6da60837546a70bbcfd2350c64
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=github.com/XTLS/Xray-core
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/openmptcprouter/golang/golang-package.mk
define Package/$(PKG_NAME)
SECTION:=Custom
CATEGORY:=Extra packages
TITLE:=Xray-core
DEPENDS:=$(GO_ARCH_DEPENDS)
PROVIDES:=xray-core
endef
define Package/$(PKG_NAME)/description
Xray-core bare bones binary (compiled without cgo)
endef
define Package/$(PKG_NAME)/config
menu "Xray Configuration"
depends on PACKAGE_$(PKG_NAME)
config PACKAGE_XRAY_ENABLE_GOPROXY_IO
bool "Use goproxy.io to speed up module fetching (recommended for some network situations)"
default n
endmenu
endef
USE_GOPROXY:=
ifdef CONFIG_PACKAGE_XRAY_ENABLE_GOPROXY_IO
USE_GOPROXY:=GOPROXY=https://goproxy.io,direct
endif
MAKE_PATH:=$(GO_PKG_WORK_DIR_NAME)/build/src/$(GO_PKG)
MAKE_VARS += $(GO_PKG_VARS)
#define Build/Patch
# $(CP) $(PKG_BUILD_DIR)/../Xray-core-$(PKG_VERSION)/* $(PKG_BUILD_DIR)
# $(Build/Patch/Default)
#endef
define Build/Compile
cd $(PKG_BUILD_DIR); $(GO_PKG_VARS) $(USE_GOPROXY) CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o $(PKG_INSTALL_DIR)/bin/xray ./main;
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/xray $(1)/usr/bin/xray
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View file

@ -0,0 +1,2 @@
#!/bin/sh
/etc/init.d/xray rules_up

2282
xray-core/files/etc/init.d/xray Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,202 @@
#!/bin/sh
if [ -z "$(uci -q get xray.main)" ]; then
touch /etc/config/xray
uci batch <<-EOF
set xray.main=xray
set xray.main.xray_file='/usr/bin/xray'
set xray.main.mem_percentage='0'
set xray.main.loglevel='error'
set xray.main.access_log='/dev/null'
set xray.main.error_log='/dev/null'
set xray.main.enabled='0'
set xray.main.outbounds='omrout'
set xray.main.inbounds='omr'
add_list xray.main.inbounds='omrtest'
set xray.main_dns=dns
set xray.main_dns.hosts='example.com|127.0.0.1'
set xray.main_dns.enabled='0'
set xray.main_policy=policy
set xray.main_policy.enabled='1'
set xray.main_policy.levels='policy_level_0'
set xray.policy_level_0=policy_level
set xray.policy_level_0.level='0'
set xray.policy_level_0.handshake='4'
set xray.policy_level_0.conn_idle='1200'
set xray.policy_level_0.uplink_only='0'
set xray.policy_level_0.downlink_only='0'
set xray.policy_level_0.buffer_size='512'
set xray.main_transparent_proxy=transparent_proxy
set xray.main_transparent_proxy.proxy_mode='default'
set xray.main_transparent_proxy.apnic_delegated_mirror='apnic'
set xray.main_transparent_proxy.gfwlist_mirror='github'
set xray.main_transparent_proxy.redirect_udp='0'
set xray.main_transparent_proxy.redirect_port='1897'
set xray.omrout=outbound
set xray.omrout.tag='omrout_tunnel'
set xray.omrout.protocol='vless'
set xray.omrout.s_vmess_address=''
set xray.omrout.s_vmess_port='65230'
set xray.omrout.s_vmess_user_id=''
set xray.omrout.s_vmess_user_security='none'
set xray.omrout.s_vmess_user_alter_id='0'
set xray.omrout.s_vless_address=''
set xray.omrout.s_vless_port='65228'
set xray.omrout.s_vless_user_id=''
set xray.omrout.s_vless_user_security='none'
set xray.omrout.s_vless_user_encryption='none'
set xray.omrout.s_vless_user_alter_id='0'
set xray.omrout.s_trojan_address=''
set xray.omrout.s_trojan_port='65229'
set xray.omrout.s_trojan_user_id=''
set xray.omrout.s_trojan_user_security='none'
set xray.omrout.s_trojan_user_encryption='none'
set xray.omrout.s_trojan_user_alter_id='0'
set xray.omrout.s_socks_address=''
set xray.omrout.s_socks_port='65231'
set xray.omrout.s_socks_user_id=''
set xray.omrout.s_socks_user_security='none'
set xray.omrout.s_socks_user_encryption='none'
set xray.omrout.s_socks_user_alter_id='0'
set xray.omrout.ss_network='tcp'
set xray.omrout.ss_security='tls'
set xray.omrout.ss_tls_allow_insecure='1'
set xray.omrout.ss_tls_disable_system_root='1'
set xray.omrout.ss_tls_cert_usage='verify'
set xray.omrout.ss_tls_cert_file='/etc/luci-uploads/client.crt'
set xray.omrout.ss_tls_key_file='/etc/luci-uploads/client.key'
set xray.omrout.s_shadowsocks_port='65252'
set xray.omrout.mux_concurrency='8'
set xray.omr=inbound
set xray.omr.tag='omrtunnel'
set xray.omr.listen='0.0.0.0'
set xray.omr.port='1897'
set xray.omr.protocol='dokodemo-door'
set xray.omr.s_dokodemo_door_network='tcp'
add_list xray.omr.s_dokodemo_door_network='udp'
set xray.omr.ss_sockopt_tproxy='redirect'
set xray.omr.ss_sockopt_tcp_fast_open='1'
set xray.omr.ss_sockopt_mptcp='1'
set xray.omr.s_dokodemo_door_follow_redirect='1'
set xray.omr6=inbound
set xray.omr6.tag='omrtunnel6'
set xray.omr6.listen='::'
set xray.omr6.port='1898'
set xray.omr6.protocol='dokodemo-door'
set xray.omr6.s_dokodemo_door_network='tcp'
add_list xray.omr6.s_dokodemo_door_network='udp'
set xray.omr6.ss_sockopt_tproxy='tproxy'
set xray.omr6.ss_sockopt_tcp_fast_open='1'
set xray.omr6.s_dokodemo_door_follow_redirect='1'
set xray.omrtest=inbound
set xray.omrtest.port='1111'
set xray.omrtest.protocol='socks'
set xray.omrtest.listen='127.0.0.1'
set xray.omrtest.s_socks_auth='noauth'
set xray.omrtest.s_socks_udp='1'
set xray.omrtest.s_socks_ip='127.0.0.1'
set xray.omrtest.s_socks_userlevel='0'
commit xray
EOF
fi
uci -q batch <<-EOF >/dev/null
set xray.omr.listen='0.0.0.0'
commit xray
EOF
if [ "$(uci -q get firewall.xray)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set firewall.xray=include
set firewall.xray.path=/etc/firewall.xray-rules
set firewall.xray.reload=0
commit firewall
EOF
fi
if [ "$(uci -q get firewall.xray.path)" != "/etc/firewall.xray-rules" ]; then
uci -q batch <<-EOF >/dev/null
set firewall.xray.path=/etc/firewall.xray-rules
commit firewall
EOF
fi
if [ "$(uci -q get xray.main_reverse.bridges | grep omrbridge)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set xray.main_reverse=reverse
set xray.main_reverse.enabled=1
set xray.main_reverse.bridges='omrbridge|omr.lan'
commit xray
EOF
fi
if [ "$(uci -q get xray.omrrouting)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set xray.omrexit=outbound
set xray.omrexit.protocol='freedom'
set xray.omrexit.tag='out'
add_list xray.main.outbounds=omrexit
set xray.omrrouting=routing_rule
set xray.omrrouting.type='field'
set xray.omrrouting.inbound_tag='omrbridge'
set xray.omrrouting.outbound_tag='omrout_tunnel'
set xray.omrrouting.domain='full:omr.lan'
set xray.omrroutingo=routing_rule
set xray.omrroutingo.type='field'
set xray.omrroutingo.inbound_tag='omrbridge'
set xray.omrroutingo.outbound_tag='out'
set xray.main_routing=routing
set xray.main_routing.enabled=1
set xray.main_routing.rules='omrrouting'
add_list xray.main_routing.rules='omrroutingo'
commit xray
EOF
fi
if [ "$(uci -q get xray.main.error_log)" != "/dev/null" ]; then
uci -q batch <<-EOF >/dev/null
set xray.main.error_log='/dev/null'
commit xray
EOF
fi
#if [ "$(uci -q get xray.main.mem_percentage)" = "0" ]; then
# uci -q batch <<-EOF >/dev/null
# set xray.main.mem_percentage='80'
# commit xray
# EOF
#fi
if [ "$(uci -q get xray.policy_level_0.conn_idle)" = "2400" ]; then
uci -q batch <<-EOF >/dev/null
set xray.policy_level_0.conn_idle='1200'
commit xray
EOF
fi
if [ "$(uci -q get xray.omrout.s_vmess_port)" = "65228" ]; then
uci -q batch <<-EOF >/dev/null
set xray.omrout.s_vmess_port='65230'
commit xray
EOF
fi
if [ "$(uci -q get xray.omrout.s_trojan_port)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set xray.omrout.s_trojan_address=''
set xray.omrout.s_trojan_port='65229'
set xray.omrout.s_trojan_user_id=''
set xray.omrout.s_trojan_user_security='none'
set xray.omrout.s_trojan_user_encryption='none'
set xray.omrout.s_trojan_user_alter_id='0'
commit xray
EOF
fi
if [ "$(uci -q get xray.omrout.s_socks_port)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set xray.omrout.s_socks_address=''
set xray.omrout.s_socks_port='65231'
set xray.omrout.s_socks_user_id=''
set xray.omrout.s_socks_user_security='none'
set xray.omrout.s_socks_user_encryption='none'
set xray.omrout.s_socks_user_alter_id='0'
commit xray
EOF
fi
exit 0

View file

@ -0,0 +1,319 @@
#!/bin/sh -e
#
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
#
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
if [ -f /usr/sbin/iptables-legacy ]; then
IPTABLES="/usr/sbin/iptables-legacy"
IPTABLESRESTORE="/usr/sbin/iptables-legacy-restore"
IPTABLESSAVE="/usr/sbin/iptables-legacy-save"
else
IPTABLES="/usr/sbin/iptables"
IPTABLESRESTORE="/usr/sbin/iptables-restore"
IPTABLESSAVE="/usr/sbin/iptables-save"
fi
xr_rules_usage() {
cat >&2 <<EOF
Usage: xray-rules [options]
-h, --help Show this help message then exit
-f, --flush Flush rules, ipset then exit
-l <port> Local port number of ss-redir with TCP mode
-L <port> Local port number of ss-redir with UDP mode
-s <ips> List of ip addresses of remote shadowsocks server
--ifnames Only apply rules on packets from these ifnames
--src-bypass <ips|cidr>
--src-forward <ips|cidr>
--src-checkdst <ips|cidr>
--src-default <bypass|forward|checkdst>
Packets will have their src ip checked in order against
bypass, forward, checkdst list and will bypass, forward
through, or continue to have their dst ip checked
respectively on the first match. Otherwise, --src-default
decide the default action
--dst-bypass <ips|cidr>
--dst-forward <ips|cidr>
--dst-bypass-file <file>
--dst-forward-file <file>
--dst-default <bypass|forward>
Same as with their --src-xx equivalent
--dst-forward-recentrst
Forward those packets whose destinations have recently
sent to us multiple tcp-rst packets
--local-default <bypass|forward|checkdst>
Default action for local out TCP traffic
The following ipsets will be created by ss-rules. They are also intended to be
populated by other programs like dnsmasq with ipset support
ss_rules_src_bypass
ss_rules_src_forward
ss_rules_src_checkdst
ss_rules_dst_bypass
ss_rules_dst_bypass_all
ss_rules_dst_forward
EOF
}
o_dst_bypass_="
0.0.0.0/8
10.0.0.0/8
100.64.0.0/10
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.0.0.0/24
192.0.2.0/24
192.31.196.0/24
192.52.193.0/24
192.88.99.0/24
192.168.0.0/16
192.175.48.0/24
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
224.0.0.0/4
240.0.0.0/4
255.255.255.255
"
o_src_default=bypass
o_dst_default=bypass
o_local_default=bypass
__errmsg() {
echo "xray-rules: $*" >&2
}
xr_rules_parse_args() {
while [ "$#" -gt 0 ]; do
case "$1" in
-h|--help) xr_rules_usage; exit 0;;
-f|--flush) xr_rules_flush; exit 0;;
-l) o_redir_tcp_port="$2"; shift 2;;
-L) o_redir_udp_port="$2"; shift 2;;
-s) o_remote_servers="$2"; shift 2;;
--ifnames) o_ifnames="$2"; shift 2;;
--ipt-extra) o_ipt_extra="$2"; shift 2;;
--src-default) o_src_default="$2"; shift 2;;
--dst-default) o_dst_default="$2"; shift 2;;
--local-default) o_local_default="$2"; shift 2;;
--src-bypass) o_src_bypass="$2"; shift 2;;
--src-forward) o_src_forward="$2"; shift 2;;
--src-checkdst) o_src_checkdst="$2"; shift 2;;
--dst-bypass) o_dst_bypass="$2"; shift 2;;
--dst-bypass_all) o_dst_bypass_all="$2"; shift 2;;
--dst-forward) o_dst_forward="$2"; shift 2;;
--dst-forward-recentrst) o_dst_forward_recentrst=1; shift 1;;
--dst-bypass-file) o_dst_bypass_file="$2"; shift 2;;
--dst-forward-file) o_dst_forward_file="$2"; shift 2;;
--rule-name) rule="$2"; shift 2;;
*) __errmsg "unknown option $1"; return 1;;
esac
done
if [ -z "$o_redir_tcp_port" -a -z "$o_redir_udp_port" ]; then
__errmsg "Requires at least -l or -L option"
return 1
fi
if [ -n "$o_dst_forward_recentrst" ] && ! $IPTABLES -w -m recent -h >/dev/null; then
__errmsg "Please install iptables-mod-conntrack-extra with opkg"
return 1
fi
o_remote_servers="$(for s in $o_remote_servers; do resolveip -4 "$s"; done)"
}
xr_rules_flush() {
local setname
$IPTABLESSAVE --counters 2>/dev/null | grep -v xr_ | $IPTABLESRESTORE --counters
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
ip route flush table 100 || true
for setname in $(ipset -n list | grep "ssr_${rule}"); do
ipset destroy "$setname" 2>/dev/null || true
done
}
xr_rules_ipset_init() {
ipset --exist restore <<-EOF
create ssr_${rule}_src_bypass hash:net hashsize 64
create ssr_${rule}_src_forward hash:net hashsize 64
create ssr_${rule}_src_checkdst hash:net hashsize 64
create ss_rules_dst_bypass_all hash:net hashsize 64
create ssr_${rule}_dst_bypass hash:net hashsize 64
create ssr_${rule}_dst_bypass_ hash:net hashsize 64
create ssr_${rule}_dst_forward hash:net hashsize 64
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
$(xr_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
$(xr_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
$(xr_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
$(xr_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass")
$(xr_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward")
$(xr_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst")
$(xr_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
EOF
}
xr_rules_ipset_mkadd() {
local setname="$1"; shift
local i
for i in $*; do
echo "add $setname $i"
done
}
xr_rules_iptchains_init() {
xr_rules_iptchains_init_mark
xr_rules_iptchains_init_tcp
xr_rules_iptchains_init_udp
}
xr_rules_iptchains_init_mark() {
if [ "$($IPTABLES -w -t mangle -L PREROUTING | grep ss_rules_dst_bypass_all)" = "" ]; then
$IPTABLESRESTORE --noflush <<-EOF
*mangle
-A PREROUTING -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
COMMIT
EOF
fi
}
xr_rules_iptchains_init_tcp() {
local local_target
[ -n "$o_redir_tcp_port" ] || return 0
xr_rules_iptchains_init_ nat tcp
case "$o_local_default" in
checkdst) local_target=xr_${rule}_dst ;;
forward) local_target=xr_${rule}_forward ;;
bypass|*) return 0;;
esac
$IPTABLESRESTORE --noflush <<-EOF
*nat
:xr_${rule}_local_out -
-I OUTPUT 1 -p tcp -j xr_${rule}_local_out
-A xr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A xr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A xr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
-A xr_${rule}_local_out -m mark --mark 0x539 -j RETURN
-A xr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
COMMIT
EOF
}
xr_rules_iptchains_init_udp() {
[ -n "$o_redir_udp_port" ] || return 0
xr_rules_iptchains_init_ mangle udp
}
xr_rules_iptchains_init_() {
local table="$1"
local proto="$2"
local forward_rules
local src_default_target dst_default_target
local recentrst_mangle_rules recentrst_addset_rules
case "$proto" in
tcp)
forward_rules="-A xr_${rule}_forward -p tcp -j REDIRECT --to-ports $o_redir_tcp_port"
if [ -n "$o_dst_forward_recentrst" ]; then
recentrst_mangle_rules="
*mangle
-I PREROUTING 1 -p tcp -m tcp --tcp-flags RST RST -m recent --name xr_recentrst --set --rsource
COMMIT
"
recentrst_addset_rules="
-A xr_${rule}_dst -m recent --name xr_recentrst --rcheck --rdest --seconds 3 --hitcount 3 -j SET --add-set ss_rules_dst_forward_recentrst_ dst --exist
-A xr_${rule}_dst -m set --match-set ss_rules_dst_forward_recentrst_ dst -j xr_${rule}_forward
"
fi
;;
udp)
ip rule add fwmark 1 lookup 100 || true
ip route add local default dev lo table 100 || true
forward_rules="-A xr_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;;
esac
case "$o_src_default" in
forward) src_default_target=xr_${rule}_forward ;;
checkdst) src_default_target=xr_${rule}_dst ;;
bypass|*) src_default_target=RETURN ;;
esac
case "$o_dst_default" in
forward) dst_default_target=xr_${rule}_forward ;;
bypass|*) dst_default_target=RETURN ;;
esac
sed -e '/^\s*$/d' -e 's/^\s\+//' <<-EOF | $IPTABLESRESTORE --noflush
*$table
:xr_${rule}_pre_src -
:xr_${rule}_src -
:xr_${rule}_dst -
:xr_${rule}_forward -
$(xr_rules_iptchains_mkprerules "$proto")
-A xr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
-A xr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
-A xr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A xr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A xr_${rule}_pre_src -m mark --mark 0x539 -j RETURN
-A xr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
-A xr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
-A xr_${rule}_pre_src -p $proto $o_ipt_extra -j xr_${rule}_src
-A xr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN
-A xr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j xr_${rule}_forward
-A xr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j xr_${rule}_dst
-A xr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
-A xr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j xr_${rule}_forward
$recentrst_addset_rules
-A xr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
$forward_rules
COMMIT
$recentrst_mangle_rules
EOF
}
xr_rules_iptchains_mkprerules() {
local proto="$1"
if [ -z "$o_ifnames" ]; then
echo "-A PREROUTING -p $proto -j xr_${rule}_pre_src"
else
echo $o_ifnames \
| tr ' ' '\n' \
| sed "s/.*/-I PREROUTING 1 -i \\0 -p $proto -j xr_${rule}_pre_src/"
fi
}
xr_rules_fw_drop() {
fw3 -4 print 2>/dev/null | awk '/iptables/&&/zone_lan_forward/&&/tcp/&&/-t filter/&&/-j reject/ {for(i=6; i<=NF; i++) { printf "%s ",$i } print "\n" }' |
while IFS=$"\n" read -r c; do
fwrule=$(echo "$c" | sed 's/reject/REDIRECT --to-ports 65535/')
if [ -n "$fwrule" ] && [ -z "$($IPTABLESSAVE 2>/dev/null | grep zone_lan_prerouting | grep '${fwrule}')" ]; then
eval "$IPTABLES -w -t nat -A zone_lan_prerouting ${fwrule} 2>&1 >/dev/null"
fi
done
fw3 -4 print 2>/dev/null | awk '/iptables/&&/zone_lan_forward/&&/tcp/&&/-t filter/&&/-j drop/ {for(i=6; i<=NF; i++) { printf "%s ",$i } print "\n" }' |
while IFS=$"\n" read -r c; do
fwrule=$(echo "$c" | sed 's/drop/REDIRECT --to-ports 65535/')
if [ -n "$fwrule" ] && [ -z "$($IPTABLESSAVE 2>/dev/null | grep zone_lan_prerouting | grep '${fwrule}')" ]; then
eval "$IPTABLES -t nat -A zone_lan_prerouting ${fwrule} 2>&1 >/dev/null"
fi
done
}
xr_rules_parse_args "$@"
#xr_rules_flush
xr_rules_ipset_init
xr_rules_iptchains_init
xr_rules_fw_drop

View file

@ -0,0 +1,310 @@
#!/bin/sh -e
#
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
if [ -f /usr/sbin/iptables-legacy ]; then
IP6TABLES="/usr/sbin/ip6tables-legacy"
IP6TABLESRESTORE="/usr/sbin/ip6tables-legacy-restore"
IP6TABLESSAVE="/usr/sbin/ip6tables-legacy-save"
else
IP6TABLES="/usr/sbin/ip6tables"
IP6TABLESRESTORE="/usr/sbin/ip6tables-restore"
IP6TABLESSAVE="/usr/sbin/ip6tables-save"
fi
xray_rules6_usage() {
cat >&2 <<EOF
Usage: xray-rules6 [options]
-h, --help Show this help message then exit
-f, --flush Flush rules, ipset then exit
-l <port> Local port number of ss-redir with TCP mode
-L <port> Local port number of ss-redir with UDP mode
-s <ips> List of ip addresses of remote shadowsocks server
--ifnames Only apply rules on packets from these ifnames
--src-bypass <ips|cidr>
--src-forward <ips|cidr>
--src-checkdst <ips|cidr>
--src-default <bypass|forward|checkdst>
Packets will have their src ip checked in order against
bypass, forward, checkdst list and will bypass, forward
through, or continue to have their dst ip checked
respectively on the first match. Otherwise, --src-default
decide the default action
--dst-bypass <ips|cidr>
--dst-forward <ips|cidr>
--dst-bypass-file <file>
--dst-forward-file <file>
--dst-default <bypass|forward>
Same as with their --src-xx equivalent
--dst-forward-recentrst
Forward those packets whose destinations have recently
sent to us multiple tcp-rst packets
--local-default <bypass|forward|checkdst>
Default action for local out TCP traffic
The following ipsets will be created by xray-rules. They are also intended to be
populated by other programs like dnsmasq with ipset support
xray_rules6_src_bypass
xray_rules6_src_forward
xray_rules6_src_checkdst
xray_rules6_dst_bypass
xray_rules6_dst_forward
EOF
}
o_dst_bypass_="
fe80::/10
fd00::/8
::1
"
o_src_default=bypass
o_dst_default=bypass
o_local_default=bypass
__errmsg() {
echo "xray-rules6: $*" >&2
}
xray_rules6_parse_args() {
while [ "$#" -gt 0 ]; do
case "$1" in
-h|--help) xray_rules6_usage; exit 0;;
-f|--flush) xray_rules6_flush; exit 0;;
-l) o_redir_tcp_port="$2"; shift 2;;
-L) o_redir_udp_port="$2"; shift 2;;
-s) o_remote_servers="$2"; shift 2;;
--ifnames) o_ifnames="$2"; shift 2;;
--ipt-extra) o_ipt_extra="$2"; shift 2;;
--src-default) o_src_default="$2"; shift 2;;
--dst-default) o_dst_default="$2"; shift 2;;
--local-default) o_local_default="$2"; shift 2;;
--src-bypass) o_src_bypass="$2"; shift 2;;
--src-forward) o_src_forward="$2"; shift 2;;
--src-checkdst) o_src_checkdst="$2"; shift 2;;
--dst-bypass) o_dst_bypass="$2"; shift 2;;
--dst-bypass_all) o_dst_bypass_all="$2"; shift 2;;
--dst-forward) o_dst_forward="$2"; shift 2;;
--dst-forward-recentrst) o_dst_forward_recentrst=1; shift 1;;
--dst-bypass-file) o_dst_bypass_file="$2"; shift 2;;
--dst-forward-file) o_dst_forward_file="$2"; shift 2;;
--rule-name) rule="$2"; shift 2;;
*) __errmsg "unknown option $1"; return 1;;
esac
done
if [ -z "$o_redir_tcp_port" -a -z "$o_redir_udp_port" ]; then
__errmsg "Requires at least -l or -L option"
return 1
fi
if [ -n "$o_dst_forward_recentrst" ] && ! $IP6TABLES -w -m recent -h >/dev/null; then
__errmsg "Please install ip6tables-mod-conntrack-extra with opkg"
return 1
fi
o_remote_servers="$(for s in $o_remote_servers; do resolveip -6 "$s"; done)"
}
xray_rules6_flush() {
local setname
$IP6TABLESSAVE --counters 2>/dev/null | grep -v xr6_ | $IP6TABLESRESTORE --counters
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
ip -f inet6 route flush table 100 || true
for setname in $(ipset -n list | grep "ssr6_${rule}"); do
ipset destroy "$setname" 2>/dev/null || true
done
}
xray_rules6_ipset_init() {
ipset --exist restore <<-EOF
create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64
create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64
create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64
create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64
create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
$(xray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
$(xray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
$(xray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
$(xray_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass")
$(xray_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward")
$(xray_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst")
$(xray_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
EOF
}
xray_rules6_ipset_mkadd() {
local setname="$1"; shift
local i
for i in $*; do
echo "add $setname $i"
done
}
xray_rules6_iptchains_init() {
xray_rules6_iptchains_init_mark
xray_rules6_iptchains_init_tcp
xray_rules6_iptchains_init_udp
}
xray_rules6_iptchains_init_mark() {
$IP6TABLESRESTORE --noflush <<-EOF
*mangle
-A PREROUTING -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
COMMIT
EOF
}
xray_rules6_iptchains_init_tcp() {
local local_target
[ -n "$o_redir_tcp_port" ] || return 0
#xray_rules6_iptchains_init_ nat tcp
xray_rules6_iptchains_init_ mangle tcp
case "$o_local_default" in
checkdst) local_target=xr6_${rule}_dst ;;
forward) local_target=xr6_${rule}_forward ;;
bypass|*) return 0;;
esac
# echo "tcp mangle"
# $IP6TABLESRESTORE --noflush <<-EOF
# *mangle
# :xr6_${rule}_local_out -
# -I OUTPUT 1 -p tcp -j xr6_${rule}_local_out
# -A xr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass dst -j RETURN
# -A xr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
# -A xr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN
# -A xr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN
# -A xr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
# COMMIT
# EOF
# echo "done"
}
xray_rules6_iptchains_init_udp() {
[ -n "$o_redir_udp_port" ] || return 0
xray_rules6_iptchains_init_ mangle udp
}
xray_rules6_iptchains_init_() {
local table="$1"
local proto="$2"
local forward_rules
local src_default_target dst_default_target
local recentrst_mangle_rules recentrst_addset_rules
case "$proto" in
tcp)
#forward_rules="-A xr6_${rule}_forward -p tcp -j REDIRECT --to-ports $o_redir_tcp_port"
forward_rules="-A xr6_${rule}_forward -p tcp -j TPROXY --on-port $o_redir_tcp_port --tproxy-mark 0x01/0x01"
if [ -n "$o_dst_forward_recentrst" ]; then
recentrst_mangle_rules="
*mangle
-I PREROUTING 1 -p tcp -m tcp --tcp-flags RST RST -m recent --name ss_rules6_recentrst --set --rsource
COMMIT
"
recentrst_addset_rules="
-A xr6_${rule}_dst -m recent --name ss_rules6_recentrst --rcheck --rdest --seconds 3 --hitcount 3 -j SET --add-set ss_rules6_dst_forward_recrst_ dst --exist
-A xr6_${rule}_dst -m set --match-set ss_rules6_dst_forward_recrst_ dst -j xr6_${rule}_forward
"
fi
;;
udp)
ip -f inet6 rule add fwmark 1 lookup 100 || true
ip -f inet6 route add local default dev lo table 100 || true
forward_rules="
-A xr6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01
-A xr6_${rule}_forward -p tcp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01
"
;;
esac
case "$o_src_default" in
forward) src_default_target=xr6_${rule}_forward ;;
checkdst) src_default_target=xr6_${rule}_dst ;;
bypass|*) src_default_target=RETURN ;;
esac
case "$o_dst_default" in
forward) dst_default_target=xr6_${rule}_forward ;;
bypass|*) dst_default_target=RETURN ;;
esac
sed -e '/^\s*$/d' -e 's/^\s\+//' <<-EOF | $IP6TABLESRESTORE --noflush
*$table
:xr6_${rule}_pre_src -
:xr6_${rule}_src -
:xr6_${rule}_dst -
:xr6_${rule}_forward -
$(xray_rules6_iptchains_mkprerules "udp")
$(xray_rules6_iptchains_mkprerules "tcp")
-A xr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
-A xr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
-A xr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
-A xr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
-A xr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
-A xr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
-A xr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
-A xr6_${rule}_pre_src -p tcp $o_ipt_extra -j xr6_${rule}_src
-A xr6_${rule}_pre_src -p udp $o_ipt_extra -j xr6_${rule}_src
-A xr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN
-A xr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j xr6_${rule}_forward
-A xr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j xr6_${rule}_dst
-A xr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
-A xr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j xr6_${rule}_forward
$recentrst_addset_rules
-A xr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
$forward_rules
COMMIT
$recentrst_mangle_rules
EOF
}
xray_rules6_iptchains_mkprerules() {
local proto="$1"
if [ -z "$o_ifnames" ]; then
echo "-A PREROUTING -p $proto -j xr6_${rule}_pre_src"
else
echo $o_ifnames \
| tr ' ' '\n' \
| sed "s/.*/-I PREROUTING 1 -i \\0 -p $proto -j xr6_${rule}_pre_src/"
fi
}
xray_rules6_fw_drop() {
fw3 -6 print 2>/dev/null | awk '/iptables/&&/zone_lan_forward/&&/tcp/&&/-t filter/&&/-j reject/ {for(i=6; i<=NF; i++) { printf "%s ",$i } print "\n" }' |
while IFS=$"\n" read -r c; do
fwrule=$(echo "$c" | sed 's/reject/REDIRECT --to-ports 65535/')
if [ -n "$fwrule" ] && [ -z "$(iptables-save | grep zone_lan_prerouting | grep '${fwrule}')" ]; then
eval "$IP6TABLES -w -t nat -A zone_lan_prerouting ${fwrule} 2>&1 >/dev/null"
fi
done
fw3 -6 print 2>/dev/null | awk '/iptables/&&/zone_lan_forward/&&/tcp/&&/-t filter/&&/-j drop/ {for(i=6; i<=NF; i++) { printf "%s ",$i } print "\n" }' |
while IFS=$"\n" read -r c; do
fwrule=$(echo "$c" | sed 's/drop/REDIRECT --to-ports 65535/')
if [ -n "$fwrule" ] && [ -z "$(iptables-save | grep zone_lan_prerouting | grep '${fwrule}')" ]; then
eval "$IP6TABLES -t nat -A zone_lan_prerouting ${fwrule} 2>&1 >/dev/null"
fi
done
}
xray_rules6_parse_args "$@"
xray_rules6_flush
xray_rules6_ipset_init
xray_rules6_iptchains_init
xray_rules6_fw_drop

View file

@ -0,0 +1,97 @@
diff -aurN xray-core-1.8.5.old/go.mod xray-core-1.8.5/go.mod
--- a/go.mod 2023-09-18 16:14:12.554956393 +0200
+++ b/go.mod 2023-09-18 16:16:56.304259547 +0200
@@ -12,13 +12,13 @@
github.com/pires/go-proxyproto v0.7.0
github.com/quic-go/quic-go v0.38.1
github.com/refraction-networking/utls v1.4.3
- github.com/sagernet/sing v0.2.9
+ github.com/sagernet/sing v0.2.10-0.20230807080248-4db0062caa0a
github.com/sagernet/sing-shadowsocks v0.2.4
- github.com/sagernet/wireguard-go v0.0.0-20221116151939-c99467f53f2c
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb
github.com/stretchr/testify v1.8.4
github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e
github.com/xtls/reality v0.0.0-20230828171259-e426190d57f6
+ github.com/xtls/wireguard-go v0.0.0-20230303120718-56f003b3a66e
go4.org/netipx v0.0.0-20230824141953-6213f710f925
golang.org/x/crypto v0.12.0
golang.org/x/net v0.14.0
@@ -47,7 +47,7 @@
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/quic-go/qtls-go1-20 v0.3.3 // indirect
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect
- go.uber.org/atomic v1.11.0 // indirect
+ go.uber.org/atomic v1.10.0 // indirect
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/text v0.12.0 // indirect
diff -aurN xray-core-1.8.5.old/go.sum xray-core-1.8.5/go.sum
--- a/go.sum 2023-09-18 16:14:12.554956393 +0200
+++ b/go.sum 2023-09-18 16:16:56.304259547 +0200
@@ -123,12 +123,10 @@
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg=
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/sagernet/sing v0.2.9 h1:3wsTz+JG5Wzy65eZnh6AuCrD2QqcRF6Iq6f7ttmJsAo=
-github.com/sagernet/sing v0.2.9/go.mod h1:Ta8nHnDLAwqySzKhGoKk4ZIB+vJ3GTKj7UPrWYvM+4w=
+github.com/sagernet/sing v0.2.10-0.20230807080248-4db0062caa0a h1:b89t6Mjgk4rJ5lrNMnCzy1/J116XkhgdB3YNd9FHyF4=
+github.com/sagernet/sing v0.2.10-0.20230807080248-4db0062caa0a/go.mod h1:9uOZwWkhT2Z2WldolLxX34s+1svAX4i4vvz5hy8u1MA=
github.com/sagernet/sing-shadowsocks v0.2.4 h1:s/CqXlvFAZhlIoHWUwPw5CoNnQ9Ibki9pckjuugtVfY=
github.com/sagernet/sing-shadowsocks v0.2.4/go.mod h1:80fNKP0wnqlu85GZXV1H1vDPC/2t+dQbFggOw4XuFUM=
-github.com/sagernet/wireguard-go v0.0.0-20221116151939-c99467f53f2c h1:vK2wyt9aWYHHvNLWniwijBu/n4pySypiKRhN32u/JGo=
-github.com/sagernet/wireguard-go v0.0.0-20221116151939-c99467f53f2c/go.mod h1:euOmN6O5kk9dQmgSS8Df4psAl3TCjxOz0NW60EWkSaI=
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb h1:XfLJSPIOUX+osiMraVgIrMR27uMXnRJWGm1+GL8/63U=
github.com/seiflotfy/cuckoofilter v0.0.0-20220411075957-e3b120b3f5fb/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -168,10 +166,12 @@
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
github.com/xtls/reality v0.0.0-20230828171259-e426190d57f6 h1:T+YCYGfFdzyaKTDCdZn/hEiKvsw6yUfd+e4hze0rCUw=
github.com/xtls/reality v0.0.0-20230828171259-e426190d57f6/go.mod h1:rkuAY1S9F8eI8gDiPDYvACE8e2uwkyg8qoOTuwWov7Y=
+github.com/xtls/wireguard-go v0.0.0-20230303120718-56f003b3a66e h1:Y0CxNt+TeOhFUS2J/EF6osq9RukduvGYUNk2xPdKW60=
+github.com/xtls/wireguard-go v0.0.0-20230303120718-56f003b3a66e/go.mod h1:XFvPXP1gUqy/12j+KbdShku+YWiZJjaYLEAn4ZXaRGU=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
-go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
-go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
+go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
+go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
go4.org/netipx v0.0.0-20230824141953-6213f710f925 h1:eeQDDVKFkx0g4Hyy8pHgmZaK0EqB4SD6rvKbUdN3ziQ=
go4.org/netipx v0.0.0-20230824141953-6213f710f925/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
diff -aurN xray-core-1.8.5.old/proxy/wireguard/bind.go xray-core-1.8.5/proxy/wireguard/bind.go
--- a/proxy/wireguard/bind.go 2023-09-18 16:14:12.562956262 +0200
+++ b/proxy/wireguard/bind.go 2023-09-18 16:15:43.597456179 +0200
@@ -9,7 +9,7 @@
"strconv"
"sync"
- "github.com/sagernet/wireguard-go/conn"
+ "github.com/xtls/wireguard-go/conn"
xnet "github.com/xtls/xray-core/common/net"
"github.com/xtls/xray-core/features/dns"
"github.com/xtls/xray-core/transport/internet"
diff -aurN xray-core-1.8.5.old/proxy/wireguard/tun.go xray-core-1.8.5/proxy/wireguard/tun.go
--- a/proxy/wireguard/tun.go 2023-09-18 16:14:12.562956262 +0200
+++ b/proxy/wireguard/tun.go 2023-09-18 16:15:52.413310983 +0200
@@ -12,7 +12,7 @@
"net/netip"
"os"
- "github.com/sagernet/wireguard-go/tun"
+ "github.com/xtls/wireguard-go/tun"
"github.com/xtls/xray-core/features/dns"
"gvisor.dev/gvisor/pkg/buffer"
"gvisor.dev/gvisor/pkg/tcpip"
diff -aurN xray-core-1.8.5.old/proxy/wireguard/wireguard.go xray-core-1.8.5/proxy/wireguard/wireguard.go
--- a/proxy/wireguard/wireguard.go 2023-09-18 16:14:12.562956262 +0200
+++ b/proxy/wireguard/wireguard.go 2023-09-18 16:16:01.109167878 +0200
@@ -27,7 +27,7 @@
"net/netip"
"strings"
- "github.com/sagernet/wireguard-go/device"
+ "github.com/xtls/wireguard-go/device"
"github.com/xtls/xray-core/common"
"github.com/xtls/xray-core/common/buf"
"github.com/xtls/xray-core/common/log"