Browse Source

v2ray-core: Update to 5.0.3

Signed-off-by: Tianling Shen <[email protected]>
Tianling Shen 3 years ago
parent
commit
feb77f65a1

+ 6 - 79
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 <[email protected]>
 
-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))

+ 184 - 0
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 <[email protected]>
+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=

+ 136 - 0
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?=
+ <[email protected]>
+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