From c26b62155df4a79e69af5a4685cd6cf3e935ca15 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Fri, 8 Apr 2022 00:36:26 +0800 Subject: [PATCH] v2ray-core: Update to 5.0.3 Signed-off-by: Tianling Shen --- v2ray-core/Makefile | 85 +------- ...ore-use-Go-v1.18-update-dependencies.patch | 184 ++++++++++++++++++ ...tls-modules-for-different-Go-version.patch | 136 +++++++++++++ 3 files changed, 326 insertions(+), 79 deletions(-) create mode 100644 v2ray-core/patches/010-Chore-use-Go-v1.18-update-dependencies.patch create mode 100644 v2ray-core/patches/020-Feat-use-different-qtls-modules-for-different-Go-version.patch diff --git a/v2ray-core/Makefile b/v2ray-core/Makefile index 38262533a..8f06590cc 100644 --- a/v2ray-core/Makefile +++ b/v2ray-core/Makefile @@ -5,30 +5,23 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2ray-core -PKG_VERSION:=4.44.0 -PKG_RELEASE:=1 +PKG_VERSION:=5.0.3 +PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=d9973bafd3020f60a51fa3495b24ab417b08b3c8f9539a3748d00da6c68d0103 +PKG_HASH:=c0fe91f715293cfc39a5afeef71e1ff43d379ae0faa139c560fdc3ede88a458a PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=Tianling Shen -PKG_CONFIG_DEPENDS:= \ - CONFIG_V2RAY_CORE_COMPRESS_GOPROXY \ - CONFIG_V2RAY_CORE_COMPRESS_UPX \ - CONFIG_V2RAY_CTL_COMPRESS_GOPROXY \ - CONFIG_V2RAY_CTL_COMPRESS_UPX - PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 -GO_PKG:=github.com/v2fly/v2ray-core/v4 -GO_PKG_BUILD_PKG:=github.com/v2fly/v2ray-core/v4/main -GO_PKG_LDFLAGS:=-s -w +GO_PKG:=github.com/v2fly/v2ray-core/v5 +GO_PKG_BUILD_PKG:=$(GO_PKG)/main GO_PKG_LDFLAGS_X:= \ $(GO_PKG).build=OpenWrt \ $(GO_PKG).version=$(PKG_VERSION) @@ -48,11 +41,6 @@ define Package/v2ray-core DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle endef -define Package/v2ray-ctl - $(call Package/v2ray/template) - DEPENDS:=v2ray-core -endef - define Package/v2ray-extra $(call Package/v2ray/template) TITLE+= (extra resources) @@ -69,76 +57,16 @@ define Package/v2ray-core/description $(call Package/v2ray/description) endef -define Package/v2ray-ctl/description - $(call Package/v2ray/description) - - This includes configuration tool for v2ray-core. -endef - define Package/v2ray-extra/description $(call Package/v2ray/description) This includes extra resources for v2ray-core. endef -define Package/v2ray-core/config -menu "v2ray-core Configuration" - depends on PACKAGE_v2ray-core - -config V2RAY_CORE_COMPRESS_GOPROXY - bool "Compiling with GOPROXY proxy" - default n - -config V2RAY_CORE_COMPRESS_UPX - bool "Compress executable files with UPX" - depends on !mips64 - default n -endmenu -endef - -define Package/v2ray-ctl/config -menu "v2ray-ctl Configuration" - depends on PACKAGE_v2ray-ctl - -config V2RAY_CTL_COMPRESS_GOPROXY - bool "Compiling with GOPROXY proxy" - default n - -config V2RAY_CTL_COMPRESS_UPX - bool "Compress executable files with UPX" - depends on !mips64 - default n -endmenu -endef - -define Build/Compile - $(call GoPackage/Build/Compile) - mv $(GO_PKG_BUILD_BIN_DIR)/main $(GO_PKG_BUILD_BIN_DIR)/v2ray -ifneq ($(CONFIG_V2RAY_CORE_COMPRESS_UPX),) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/v2ray -endif - -ifneq ($(CONFIG_PACKAGE_v2ray-ctl),) - $(eval GO_PKG_BUILD_PKG:=$(GO_PKG)/infra/control/main) - $(call GoPackage/Build/Compile) - mv $(GO_PKG_BUILD_BIN_DIR)/main $(GO_PKG_BUILD_BIN_DIR)/v2ctl -ifneq ($(CONFIG_V2RAY_CTL_COMPRESS_UPX),) - $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/v2ctl -endif -endif -endef - define Package/v2ray-core/install $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/v2ray $(1)/usr/bin/ -endef - -define Package/v2ray-ctl/install - $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) - - $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/v2ctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/main $(1)/usr/bin/v2ray endef define Package/v2ray-extra/install @@ -147,5 +75,4 @@ define Package/v2ray-extra/install endef $(eval $(call BuildPackage,v2ray-core)) -$(eval $(call BuildPackage,v2ray-ctl)) $(eval $(call BuildPackage,v2ray-extra)) diff --git a/v2ray-core/patches/010-Chore-use-Go-v1.18-update-dependencies.patch b/v2ray-core/patches/010-Chore-use-Go-v1.18-update-dependencies.patch new file mode 100644 index 000000000..adffae416 --- /dev/null +++ b/v2ray-core/patches/010-Chore-use-Go-v1.18-update-dependencies.patch @@ -0,0 +1,184 @@ +From 56371d87efc0fb57eb80424e968946458945167f Mon Sep 17 00:00:00 2001 +From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> +Date: Sun, 27 Mar 2022 01:43:02 +0800 +Subject: [PATCH] Chore: use Go v1.18 & update dependencies + +--- + .github/workflows/linter.yml | 2 +- + .github/workflows/release.yml | 4 ++-- + .github/workflows/test.yml | 2 +- + go.mod | 20 +++++++++--------- + go.sum | 38 +++++++++++++++++------------------ + 5 files changed, 32 insertions(+), 34 deletions(-) + +--- a/go.mod ++++ b/go.mod +@@ -1,6 +1,6 @@ + module github.com/v2fly/v2ray-core/v5 + +-go 1.17 ++go 1.18 + + require ( + github.com/go-chi/chi/v5 v5.0.7 +@@ -11,23 +11,23 @@ require ( + github.com/google/go-cmp v0.5.6 + github.com/gorilla/websocket v1.4.2 + github.com/jhump/protoreflect v1.10.1 +- github.com/lucas-clemente/quic-go v0.24.0 +- github.com/marten-seemann/qtls-go1-17 v0.1.0 ++ github.com/lucas-clemente/quic-go v0.26.0 ++ github.com/marten-seemann/qtls-go1-17 v0.1.1 + github.com/miekg/dns v1.1.45 + github.com/pelletier/go-toml v1.9.4 + github.com/pires/go-proxyproto v0.6.1 +- github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c ++ github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b + github.com/stretchr/testify v1.7.0 + github.com/v2fly/BrowserBridge v0.0.0-20210430233438-0570fc1d7d08 + github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 + github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e +- go.starlark.net v0.0.0-20211203141949-70c0e40ae128 +- golang.org/x/crypto v0.0.0-20211202192323-5770296d904e +- golang.org/x/net v0.0.0-20211205041911-012df41ee64c ++ go.starlark.net v0.0.0-20220302181546-5411bad688d1 ++ golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064 ++ golang.org/x/net v0.0.0-20220325170049-de3da57026de + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +- golang.org/x/sys v0.0.0-20211205182925-97ca703d548d ++ golang.org/x/sys v0.0.0-20220325203850-36772127a21f + google.golang.org/grpc v1.42.0 +- google.golang.org/protobuf v1.27.1 ++ google.golang.org/protobuf v1.28.0 + gopkg.in/yaml.v2 v2.4.0 + h12.io/socks v1.0.3 + inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 +@@ -44,7 +44,8 @@ require ( + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect +- github.com/marten-seemann/qtls-go1-16 v0.1.4 // indirect ++ github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect ++ github.com/marten-seemann/qtls-go1-18 v0.1.1 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/onsi/ginkgo v1.16.4 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect +@@ -53,7 +54,7 @@ require ( + go4.org/intern v0.0.0-20211027215823-ae77deb06f29 // indirect + go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37 // indirect + golang.org/x/mod v0.4.2 // indirect +- golang.org/x/text v0.3.6 // indirect ++ golang.org/x/text v0.3.7 // indirect + golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect +--- a/go.sum ++++ b/go.sum +@@ -209,19 +209,20 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2 + github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= + github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= + github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +-github.com/lucas-clemente/quic-go v0.24.0 h1:ToR7SIIEdrgOhgVTHvPgdVRJfgVy+N0wQAagH7L4d5g= +-github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= ++github.com/lucas-clemente/quic-go v0.26.0 h1:ALBQXr9UJ8A1LyzvceX4jd9QFsHvlI0RR6BkV16o00A= ++github.com/lucas-clemente/quic-go v0.26.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI= + github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc= + github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg= + github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= + github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= + github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= + github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= +-github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +-github.com/marten-seemann/qtls-go1-16 v0.1.4 h1:xbHbOGGhrenVtII6Co8akhLEdrawwB2iHl5yhJRpnco= +-github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= +-github.com/marten-seemann/qtls-go1-17 v0.1.0 h1:P9ggrs5xtwiqXv/FHNwntmuLMNq3KaSIG93AtAZ48xk= +-github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= ++github.com/marten-seemann/qtls-go1-16 v0.1.5 h1:o9JrYPPco/Nukd/HpOHMHZoBDXQqoNtUCmny98/1uqQ= ++github.com/marten-seemann/qtls-go1-16 v0.1.5/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= ++github.com/marten-seemann/qtls-go1-17 v0.1.1 h1:DQjHPq+aOzUeh9/lixAGunn6rIOQyWChPSI4+hgW7jc= ++github.com/marten-seemann/qtls-go1-17 v0.1.1/go.mod h1:C2ekUKcDdz9SDWxec1N/MvcXBpaX9l3Nx67XaR84L5s= ++github.com/marten-seemann/qtls-go1-18 v0.1.1 h1:qp7p7XXUFL7fpBvSS1sWD+uSqPvzNQK43DH+/qEkj0Y= ++github.com/marten-seemann/qtls-go1-18 v0.1.1/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= + github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= + github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= + github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +@@ -298,8 +299,8 @@ github.com/russross/blackfriday v1.5.2/g + github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= + github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= + github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +-github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c h1:pqy40B3MQWYrza7YZXOXgl0Nf0QGFqrOC0BKae1UNAA= +-github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= ++github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b h1:wHoB6ZYEnIVizebcj419LbN4Tagk7RDFiudRFKyzzmo= ++github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= + github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= + github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= + github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +@@ -371,12 +372,11 @@ go.opencensus.io v0.18.0/go.mod h1:vKdFv + go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= + go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= + go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +-go.starlark.net v0.0.0-20211203141949-70c0e40ae128 h1:bxH+EXOo87zEOwKDdZ8Tevgi6irRbqheRm/fr293c58= +-go.starlark.net v0.0.0-20211203141949-70c0e40ae128/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= ++go.starlark.net v0.0.0-20220302181546-5411bad688d1 h1:i0Sz4b+qJi5xwOaFZqZ+RNHkIpaKLDofei/Glt+PMNc= ++go.starlark.net v0.0.0-20220302181546-5411bad688d1/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= + go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= + go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= + go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +-go4.org v0.0.0-20180809161055-417644f6feb5 h1:+hE86LblG4AyDgwMCLTE6FOlM9+qjHSYS+rKqxUVdsM= + go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= + go4.org/intern v0.0.0-20211027215823-ae77deb06f29 h1:UXLjNohABv4S58tHmeuIZDO6e3mHpW2Dx33gaNt03LE= + go4.org/intern v0.0.0-20211027215823-ae77deb06f29/go.mod h1:cS2ma+47FKrLPdXFpr7CuxiTW3eyJbWew4qx0qtQWDA= +@@ -395,8 +395,8 @@ golang.org/x/crypto v0.0.0-2020022123151 + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= + golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +-golang.org/x/crypto v0.0.0-20211202192323-5770296d904e h1:MUP6MR3rJ7Gk9LEia0LP2ytiH6MuCfs7qYz+47jGdD8= +-golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= ++golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064 h1:S25/rfnfsMVgORT4/J61MJ7rdyseOZOyvLIrZEZ7s6s= ++golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= + golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= + golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= + golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +@@ -448,9 +448,8 @@ golang.org/x/net v0.0.0-20210226172049-e + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= + golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= + golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +-golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +-golang.org/x/net v0.0.0-20211205041911-012df41ee64c h1:7SfqwP5fxEtl/P02w5IhKc86ziJ+A25yFrkVgoy2FT8= +-golang.org/x/net v0.0.0-20211205041911-012df41ee64c/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= ++golang.org/x/net v0.0.0-20220325170049-de3da57026de h1:pZB1TWnKi+o4bENlbzAgLrEbY4RMYmUIRobMcSmfeYc= ++golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= + golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= + golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +@@ -501,15 +500,16 @@ golang.org/x/sys v0.0.0-20210510120138-9 + golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E= +-golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ++golang.org/x/sys v0.0.0-20220325203850-36772127a21f h1:TrmogKRsSOxRMJbLYGrB4SBbW+LJcEllYBLME5Zk5pU= ++golang.org/x/sys v0.0.0-20220325203850-36772127a21f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +-golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= + golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= ++golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= ++golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= + golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= + golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= + golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +@@ -602,8 +602,8 @@ google.golang.org/protobuf v1.25.0/go.mo + google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= + google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= + google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +-google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +-google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= ++google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= ++google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= + gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= + gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/v2ray-core/patches/020-Feat-use-different-qtls-modules-for-different-Go-version.patch b/v2ray-core/patches/020-Feat-use-different-qtls-modules-for-different-Go-version.patch new file mode 100644 index 000000000..288577176 --- /dev/null +++ b/v2ray-core/patches/020-Feat-use-different-qtls-modules-for-different-Go-version.patch @@ -0,0 +1,136 @@ +From e0df70b16d45883d8bf1f39e90b7111b93250466 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E7=A7=8B=E3=81=AE=E3=81=8B=E3=81=88=E3=81=A7?= + +Date: Tue, 5 Apr 2022 14:17:19 +0800 +Subject: [PATCH] Feat: use different qtls modules for different Go version + +--- + common/protocol/quic/qtls_go116.go | 19 +++++++++++++++++++ + common/protocol/quic/qtls_go117.go | 19 +++++++++++++++++++ + common/protocol/quic/qtls_go118.go | 19 +++++++++++++++++++ + common/protocol/quic/sniff.go | 7 +++---- + go.mod | 4 ++-- + 5 files changed, 62 insertions(+), 6 deletions(-) + create mode 100644 common/protocol/quic/qtls_go116.go + create mode 100644 common/protocol/quic/qtls_go117.go + create mode 100644 common/protocol/quic/qtls_go118.go + +--- /dev/null ++++ b/common/protocol/quic/qtls_go116.go +@@ -0,0 +1,19 @@ ++//go:build go1.16 && !go1.17 ++// +build go1.16,!go1.17 ++ ++package quic ++ ++import ( ++ "crypto/cipher" ++ ++ "github.com/marten-seemann/qtls-go1-16" ++) ++ ++type ( ++ // A CipherSuiteTLS13 is a cipher suite for TLS 1.3 ++ CipherSuiteTLS13 = qtls.CipherSuiteTLS13 ++) ++ ++func AEADAESGCMTLS13(key, fixedNonce []byte) cipher.AEAD { ++ return qtls.AEADAESGCMTLS13(key, fixedNonce) ++} +--- /dev/null ++++ b/common/protocol/quic/qtls_go117.go +@@ -0,0 +1,19 @@ ++//go:build go1.17 && !go1.18 ++// +build go1.17,!go1.18 ++ ++package quic ++ ++import ( ++ "crypto/cipher" ++ ++ "github.com/marten-seemann/qtls-go1-17" ++) ++ ++type ( ++ // A CipherSuiteTLS13 is a cipher suite for TLS 1.3 ++ CipherSuiteTLS13 = qtls.CipherSuiteTLS13 ++) ++ ++func AEADAESGCMTLS13(key, fixedNonce []byte) cipher.AEAD { ++ return qtls.AEADAESGCMTLS13(key, fixedNonce) ++} +--- /dev/null ++++ b/common/protocol/quic/qtls_go118.go +@@ -0,0 +1,19 @@ ++//go:build go1.18 ++// +build go1.18 ++ ++package quic ++ ++import ( ++ "crypto/cipher" ++ ++ "github.com/marten-seemann/qtls-go1-18" ++) ++ ++type ( ++ // A CipherSuiteTLS13 is a cipher suite for TLS 1.3 ++ CipherSuiteTLS13 = qtls.CipherSuiteTLS13 ++) ++ ++func AEADAESGCMTLS13(key, fixedNonce []byte) cipher.AEAD { ++ return qtls.AEADAESGCMTLS13(key, fixedNonce) ++} +--- a/common/protocol/quic/sniff.go ++++ b/common/protocol/quic/sniff.go +@@ -8,7 +8,6 @@ import ( + "io" + + "github.com/lucas-clemente/quic-go/quicvarint" +- "github.com/marten-seemann/qtls-go1-17" + "golang.org/x/crypto/hkdf" + + "github.com/v2fly/v2ray-core/v5/common" +@@ -37,10 +36,10 @@ const ( + var ( + quicSaltOld = []byte{0xaf, 0xbf, 0xec, 0x28, 0x99, 0x93, 0xd2, 0x4c, 0x9e, 0x97, 0x86, 0xf1, 0x9c, 0x61, 0x11, 0xe0, 0x43, 0x90, 0xa8, 0x99} + quicSalt = []byte{0x38, 0x76, 0x2c, 0xf7, 0xf5, 0x59, 0x34, 0xb3, 0x4d, 0x17, 0x9a, 0xe6, 0xa4, 0xc8, 0x0c, 0xad, 0xcc, 0xbb, 0x7f, 0x0a} +- initialSuite = &qtls.CipherSuiteTLS13{ ++ initialSuite = &CipherSuiteTLS13{ + ID: tls.TLS_AES_128_GCM_SHA256, + KeyLen: 16, +- AEAD: qtls.AEADAESGCMTLS13, ++ AEAD: AEADAESGCMTLS13, + Hash: crypto.SHA256, + } + errNotQuic = errors.New("not quic") +@@ -153,7 +152,7 @@ func SniffQUIC(b []byte) (*SniffHeader, + + key := hkdfExpandLabel(crypto.SHA256, secret, []byte{}, "quic key", 16) + iv := hkdfExpandLabel(crypto.SHA256, secret, []byte{}, "quic iv", 12) +- cipher := qtls.AEADAESGCMTLS13(key, iv) ++ cipher := AEADAESGCMTLS13(key, iv) + nonce := cache.Extend(int32(cipher.NonceSize())) + binary.BigEndian.PutUint64(nonce[len(nonce)-8:], uint64(packetNumber)) + decrypted, err := cipher.Open(b[extHdrLen:extHdrLen], nonce, data, b[:extHdrLen]) +--- a/go.mod ++++ b/go.mod +@@ -12,7 +12,9 @@ require ( + github.com/gorilla/websocket v1.4.2 + github.com/jhump/protoreflect v1.10.1 + github.com/lucas-clemente/quic-go v0.26.0 ++ github.com/marten-seemann/qtls-go1-16 v0.1.5 + github.com/marten-seemann/qtls-go1-17 v0.1.1 ++ github.com/marten-seemann/qtls-go1-18 v0.1.1 + github.com/miekg/dns v1.1.45 + github.com/pelletier/go-toml v1.9.4 + github.com/pires/go-proxyproto v0.6.1 +@@ -44,8 +46,6 @@ require ( + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect +- github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect +- github.com/marten-seemann/qtls-go1-18 v0.1.1 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/onsi/ginkgo v1.16.4 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect