diff --git a/cmd/gost/cmd.go b/cmd/gost/cmd.go index a4cbf01..7ec0be0 100644 --- a/cmd/gost/cmd.go +++ b/cmd/gost/cmd.go @@ -11,6 +11,7 @@ import ( mdutil "github.com/go-gost/core/metadata/util" "github.com/go-gost/x/config" + xlimiter "github.com/go-gost/x/limiter" mdx "github.com/go-gost/x/metadata" "github.com/go-gost/x/registry" ) @@ -274,20 +275,29 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) { delete(mh, "hosts") } - input := metadata.GetString(md, "limiter.input") - output := metadata.GetString(md, "limiter.output") - if input != "" || output != "" { + in := mdutil.GetString(md, "limiter.rate.in") + out := mdutil.GetString(md, "limiter.rate.out") + cin := mdutil.GetString(md, "limiter.rate.conn.in") + cout := mdutil.GetString(md, "limiter.rate.conn.out") + if in != "" || cin != "" { limiter := &config.LimiterConfig{ Name: fmt.Sprintf("limiter-%d", len(cfg.Limiters)), - RateLimit: &config.RateLimitConfig{ - Input: input, - Output: output, - }, + Rate: &config.RateLimiterConfig{}, + } + if in != "" { + limiter.Rate.Limits = append(limiter.Rate.Limits, + fmt.Sprintf("%s %s %s", xlimiter.GlobalLimitKey, in, out)) + } + if cin != "" { + limiter.Rate.Limits = append(limiter.Rate.Limits, + fmt.Sprintf("%s %s %s", xlimiter.ConnLimitKey, cin, cout)) } service.Limiter = limiter.Name cfg.Limiters = append(cfg.Limiters, limiter) - delete(mh, "limiter.input") - delete(mh, "limiter.output") + delete(mh, "limiter.rate.in") + delete(mh, "limiter.rate.out") + delete(mh, "limiter.rate.conn.in") + delete(mh, "limiter.rate.conn.out") } } diff --git a/go.mod b/go.mod index bb684bc..d7157eb 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,13 @@ go 1.18 replace github.com/templexxx/cpu v0.0.7 => github.com/templexxx/cpu v0.0.10-0.20211111114238-98168dcec14a require ( - github.com/go-gost/core v0.0.0-20220904052234-99adf4bb0692 - github.com/go-gost/x v0.0.0-20220904052432-a04c8b45f30f + github.com/go-gost/core v0.0.0-20220905144653-5c46613716c1 + github.com/go-gost/x v0.0.0-20220905144913-779af72f7ca3 ) require ( github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -88,6 +89,7 @@ require ( golang.org/x/net v0.0.0-20220812174116-3211cb980234 // indirect golang.org/x/sys v0.0.0-20220817070843-5a390386f1f2 // indirect golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect golang.org/x/tools v0.1.12 // indirect golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 // indirect golang.zx2c4.com/wireguard v0.0.0-20220703234212-c31a7b1ab478 // indirect diff --git a/go.sum b/go.sum index e9783ab..b55faaa 100644 --- a/go.sum +++ b/go.sum @@ -45,6 +45,7 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= @@ -96,8 +97,8 @@ github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gost/core v0.0.0-20220904052234-99adf4bb0692 h1:exs+esWEKuK/ZtmaIiUGxHmC1FG2YZSUZOLls0t2O4I= -github.com/go-gost/core v0.0.0-20220904052234-99adf4bb0692/go.mod h1:bHVbCS9da6XtKNYMkMUVcck5UqDDUkyC37erVfs4GXQ= +github.com/go-gost/core v0.0.0-20220905144653-5c46613716c1 h1:9lmcFFN5PEK6+zt+9Hp11XHZ9cl/y+3nL96sI8T0RxA= +github.com/go-gost/core v0.0.0-20220905144653-5c46613716c1/go.mod h1:bHVbCS9da6XtKNYMkMUVcck5UqDDUkyC37erVfs4GXQ= 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.3.1-0.20211109033403-d894d75b7f09 h1:A95M6UWcfZgOuJkQ7QLfG0Hs5peWIUSysCDNz4pfe04= @@ -106,8 +107,8 @@ github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7 h1:itaaJhQJ19kUXEB github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7/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-20220904052432-a04c8b45f30f h1:ye6h3Pi7GMrcgTL4csQtQHpX2zrM1S4aqVw0vuSSRr4= -github.com/go-gost/x v0.0.0-20220904052432-a04c8b45f30f/go.mod h1:rBBUIGhVRfjDeavGlX7OJhRjo5rsYvzjCJfKPRLzuG4= +github.com/go-gost/x v0.0.0-20220905144913-779af72f7ca3 h1:dNNWqTrSlXuxYDB57zNUP0KaRLlovxmU9PtJ4aNUr9I= +github.com/go-gost/x v0.0.0-20220905144913-779af72f7ca3/go.mod h1:IJ/fX4t255Xj6J9/A/0gToKjv057ZWVYKb/fBNtQVgE= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -592,6 +593,7 @@ 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-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=