From 5d7100f749508e53085e7a4941493268baf4be34 Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Fri, 21 Jun 2024 23:41:27 +0800 Subject: [PATCH] add linux network namespace support for listener and dialer --- cmd/gost/cmd.go | 26 +++++++++++++++++--------- go.mod | 6 +++--- go.sum | 11 ++++++----- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/cmd/gost/cmd.go b/cmd/gost/cmd.go index 6b64449..5b5c040 100644 --- a/cmd/gost/cmd.go +++ b/cmd/gost/cmd.go @@ -72,10 +72,17 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) { mc := nodeConfig.Connector.Metadata md := mdx.NewMetadata(mc) + m := map[string]any{} + for k, v := range url.Query() { + if len(v) > 0 { + m[k] = v[0] + } + } hopConfig := &config.HopConfig{ Name: fmt.Sprintf("%shop-%d", namePrefix, i), Selector: parseSelector(mc), Nodes: nodes, + Metadata: m, } if v := mdutil.GetString(md, "bypass"); v != "" { @@ -442,8 +449,17 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) { dialer = schemes[1] } + m := map[string]any{} + for k, v := range url.Query() { + if len(v) > 0 { + m[k] = v[0] + } + } + md := mdx.NewMetadata(m) + node := &config.NodeConfig{ - Addr: url.Host, + Addr: url.Host, + Metadata: m, } if c := registry.ConnectorRegistry().Get(connector); c == nil { @@ -464,14 +480,6 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) { auth.Password, _ = url.User.Password() } - m := map[string]any{} - for k, v := range url.Query() { - if len(v) > 0 { - m[k] = v[0] - } - } - md := mdx.NewMetadata(m) - if sauth := mdutil.GetString(md, "auth"); sauth != "" && auth == nil { au, err := parseAuthFromCmd(sauth) if err != nil { diff --git a/go.mod b/go.mod index eb11614..e191f3b 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.22 toolchain go1.22.2 require ( - github.com/go-gost/core v0.0.0-20240508132029-8d554ddcf77c - github.com/go-gost/x v0.0.0-20240613142450-15f28c667a31 + github.com/go-gost/core v0.0.0-20240621153412-5aede9a2b32f + github.com/go-gost/x v0.0.0-20240621153818-2ae04628222a github.com/judwhite/go-svc v1.2.1 ) @@ -94,7 +94,7 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect github.com/vishvananda/netlink v1.1.0 // indirect - github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df // indirect + github.com/vishvananda/netns v0.0.4 // indirect github.com/xtaci/kcp-go/v5 v5.6.5 // indirect github.com/xtaci/smux v1.5.24 // indirect github.com/xtaci/tcpraw v1.2.25 // indirect diff --git a/go.sum b/go.sum index 2207f77..95db688 100644 --- a/go.sum +++ b/go.sum @@ -53,8 +53,8 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= -github.com/go-gost/core v0.0.0-20240508132029-8d554ddcf77c h1:1ahtn+3bQB50at5ubWDOrA4yja8vWpWNrGSRaCztNWg= -github.com/go-gost/core v0.0.0-20240508132029-8d554ddcf77c/go.mod h1:j08tDHkFzk7dfOeLhl3RWsASdf9YWWRfWBUQqbQvx3A= +github.com/go-gost/core v0.0.0-20240621153412-5aede9a2b32f h1:deEX5HhpUDB03wAggTWn3/8l20cEGVq25bMsd9wqizo= +github.com/go-gost/core v0.0.0-20240621153412-5aede9a2b32f/go.mod h1:aTPFucvJyqc/o5h5/ZtyHJ0xgFIq5Ip+cMlhazm+TaI= github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s= github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc= github.com/go-gost/gosocks5 v0.4.0 h1:EIrOEkpJez4gwHrMa33frA+hHXJyevjp47thpMQsJzI= @@ -65,8 +65,8 @@ github.com/go-gost/relay v0.5.0 h1:JG1tgy/KWiVXS0ukuVXvbM0kbYuJTWxYpJ5JwzsCf/c= github.com/go-gost/relay v0.5.0/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8= github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451 h1:xj8gUZGYO3nb5+6Bjw9+tsFkA9sYynrOvDvvC4uDV2I= github.com/go-gost/tls-dissector v0.0.2-0.20220408131628-aac992c27451/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs= -github.com/go-gost/x v0.0.0-20240613142450-15f28c667a31 h1:ME3v3km1JFzqphFDWKjzL/urZI4b/BbXAv+KT+pS4+I= -github.com/go-gost/x v0.0.0-20240613142450-15f28c667a31/go.mod h1:Jz+SvVsscqvMOfZfiPDyHE1wngeqvJNxU4jZXnamo2c= +github.com/go-gost/x v0.0.0-20240621153818-2ae04628222a h1:vv3XqA3rSaShSSiv8BNB6UMOBL31ni0w6OLkZRUI0Vg= +github.com/go-gost/x v0.0.0-20240621153818-2ae04628222a/go.mod h1:Glu6+AqAYDmAB+U7jkwEctKG4ZWERiT6pzO75kgyTiY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= @@ -246,8 +246,9 @@ github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4d github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= +github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/xtaci/kcp-go/v5 v5.6.5 h1:oxGZNobj3OddrLzwdJYnR/waNgwrL98u02u0DWNHE3k= github.com/xtaci/kcp-go/v5 v5.6.5/go.mod h1:Qy3Zf2tWTdFdEs0E8JvhrX+39r5UDZoYac8anvud7/Q= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM=