diff --git a/README.md b/README.md index a66dc5b..d73ec8a 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ go build ### Docker ``` -docker pull gogost/gost +docker run --rm gogost/gost -V ``` ### Shadowsocks Android插件 diff --git a/README_en.md b/README_en.md index efac6dc..ac3f750 100644 --- a/README_en.md +++ b/README_en.md @@ -47,7 +47,7 @@ go build ### Docker ``` -docker pull gogost/gost +docker run --rm gogost/gost -V ``` ### Shadowsocks Android diff --git a/cmd/gost/main.go b/cmd/gost/main.go index e4e87ac..a3d40c1 100644 --- a/cmd/gost/main.go +++ b/cmd/gost/main.go @@ -109,8 +109,7 @@ func main() { if err != nil { log.Fatal(err) } - cfg.Chains = append(cfg.Chains, cmdCfg.Chains...) - cfg.Services = append(cfg.Services, cmdCfg.Services...) + cfg = mergeConfig(cfg, cmdCfg) if len(cfg.Services) == 0 && apiAddr == "" { if err := cfg.Load(); err != nil { @@ -237,3 +236,49 @@ func main() { } } } + +func mergeConfig(cfg1, cfg2 *config.Config) *config.Config { + if cfg1 == nil { + return cfg2 + } + if cfg2 == nil { + return cfg1 + } + + cfg := &config.Config{ + Services: append(cfg1.Services, cfg2.Services...), + Chains: append(cfg1.Chains, cfg2.Chains...), + Hops: append(cfg1.Hops, cfg2.Hops...), + Authers: append(cfg1.Authers, cfg2.Authers...), + Admissions: append(cfg1.Admissions, cfg2.Admissions...), + Bypasses: append(cfg1.Bypasses, cfg2.Bypasses...), + Resolvers: append(cfg1.Resolvers, cfg2.Resolvers...), + Hosts: append(cfg1.Hosts, cfg2.Hosts...), + Recorders: append(cfg1.Recorders, cfg2.Recorders...), + Limiters: append(cfg1.Limiters, cfg2.Limiters...), + CLimiters: append(cfg1.CLimiters, cfg2.CLimiters...), + RLimiters: append(cfg1.RLimiters, cfg2.RLimiters...), + TLS: cfg1.TLS, + Log: cfg1.Log, + API: cfg1.API, + Metrics: cfg1.Metrics, + Profiling: cfg1.Profiling, + } + if cfg2.TLS != nil { + cfg.TLS = cfg2.TLS + } + if cfg2.Log != nil { + cfg.Log = cfg2.Log + } + if cfg2.API != nil { + cfg.API = cfg2.API + } + if cfg2.Metrics != nil { + cfg.Metrics = cfg2.Metrics + } + if cfg2.Profiling != nil { + cfg.Profiling = cfg2.Profiling + } + + return cfg +} diff --git a/go.mod b/go.mod index 0e9b907..285e527 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ 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-20221219113413-ba87494cef4b - github.com/go-gost/x v0.0.0-20221219113528-86acbf7f669d + github.com/go-gost/core v0.0.0-20221221101823-36ed0eae2dec + github.com/go-gost/x v0.0.0-20221221101938-67bbdbf5a3c1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) diff --git a/go.sum b/go.sum index 823b027..8b2e32f 100644 --- a/go.sum +++ b/go.sum @@ -97,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-20221219113413-ba87494cef4b h1:xZbhv9OA6wg1++Q2pNGLEw2RrL7SAWgnK3tH38eH+Pc= -github.com/go-gost/core v0.0.0-20221219113413-ba87494cef4b/go.mod h1:R08B7BVdhWsYHX8s7wkEBpeKqc4+YFP6bLLFoao0J/A= +github.com/go-gost/core v0.0.0-20221221101823-36ed0eae2dec h1:QxAIPNaXlWpqCVYFjkRjw9EIJte3qI+J94Kh213TdaI= +github.com/go-gost/core v0.0.0-20221221101823-36ed0eae2dec/go.mod h1:R08B7BVdhWsYHX8s7wkEBpeKqc4+YFP6bLLFoao0J/A= 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= @@ -107,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-20221219113528-86acbf7f669d h1:zClcWQbRrJpRvceMDpEup9ffFU/LDst4W157Ljer9/o= -github.com/go-gost/x v0.0.0-20221219113528-86acbf7f669d/go.mod h1:8WiZLpmegXqo4qn5lQYkkriwYd6x2qZ6J5oYNjv4dXs= +github.com/go-gost/x v0.0.0-20221221101938-67bbdbf5a3c1 h1:1wgeqGQ6hjjjelrQA74fVju+gVPg3UXxNYAfnDPGBw4= +github.com/go-gost/x v0.0.0-20221221101938-67bbdbf5a3c1/go.mod h1:pIv7SEewg5j86yMxYwLbqKlVCO0BKGHwKxruXj6C/4k= 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=