diff --git a/cmd/gost/cmd.go b/cmd/gost/cmd.go index 7d0b5c1..a84d4b1 100644 --- a/cmd/gost/cmd.go +++ b/cmd/gost/cmd.go @@ -147,13 +147,17 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) { md.Del("auth") tlsConfig := &config.TLSConfig{ - Cert: metadata.GetString(md, "cert"), - Key: metadata.GetString(md, "key"), - CA: metadata.GetString(md, "ca"), + CertFile: metadata.GetString(md, "certFile"), + KeyFile: metadata.GetString(md, "keyFile"), + CAFile: metadata.GetString(md, "caFile"), + } + md.Del("certFile") + md.Del("keyFile") + md.Del("caFile") + + if tlsConfig.CertFile == "" { + tlsConfig = nil } - md.Del("cert") - md.Del("key") - md.Del("ca") svc.Handler = &config.HandlerConfig{ Type: handler, @@ -220,17 +224,21 @@ func buildNodeConfig(url *url.URL) (*config.NodeConfig, error) { md.Del("auth") tlsConfig := &config.TLSConfig{ - CA: metadata.GetString(md, "ca"), + CAFile: metadata.GetString(md, "caFile"), Secure: metadata.GetBool(md, "secure"), ServerName: metadata.GetString(md, "serverName"), } if tlsConfig.ServerName == "" { tlsConfig.ServerName = url.Hostname() } - md.Del("ca") + md.Del("caFile") md.Del("secure") md.Del("serverName") + if !tlsConfig.Secure && tlsConfig.CAFile == "" { + tlsConfig = nil + } + node.Connector = &config.ConnectorConfig{ Type: connector, Auth: auth, diff --git a/cmd/gost/config.go b/cmd/gost/config.go index 011bf0c..bcc6b58 100644 --- a/cmd/gost/config.go +++ b/cmd/gost/config.go @@ -319,11 +319,11 @@ func selectorFromConfig(cfg *config.SelectorConfig) chain.Selector { var strategy chain.Strategy switch cfg.Strategy { - case "round": + case "round", "rr": strategy = chain.RoundRobinStrategy() - case "random": + case "random", "rand": strategy = chain.RandomStrategy() - case "fifo": + case "fifo", "ha": strategy = chain.FIFOStrategy() default: strategy = chain.RoundRobinStrategy() diff --git a/cmd/gost/tls.go b/cmd/gost/tls.go index df18c0a..c2c9e24 100644 --- a/cmd/gost/tls.go +++ b/cmd/gost/tls.go @@ -15,22 +15,22 @@ import ( ) func loadServerTLSConfig(cfg *config.TLSConfig) (*tls.Config, error) { - return tls_util.LoadServerConfig(cfg.Cert, cfg.Key, cfg.CA) + return tls_util.LoadServerConfig(cfg.CertFile, cfg.KeyFile, cfg.CAFile) } func loadClientTLSConfig(cfg *config.TLSConfig) (*tls.Config, error) { - return tls_util.LoadClientConfig(cfg.Cert, cfg.Key, cfg.CA, cfg.Secure, cfg.ServerName) + return tls_util.LoadClientConfig(cfg.CertFile, cfg.KeyFile, cfg.CAFile, cfg.Secure, cfg.ServerName) } func buildDefaultTLSConfig(cfg *config.TLSConfig) { if cfg == nil { cfg = &config.TLSConfig{ - Cert: "cert.pem", - Key: "key.pem", + CertFile: "cert.pem", + KeyFile: "key.pem", } } - tlsConfig, err := loadConfig(cfg.Cert, cfg.Key) + tlsConfig, err := loadConfig(cfg.CertFile, cfg.KeyFile) if err != nil { // generate random self-signed certificate. cert, err := genCertificate() diff --git a/pkg/config/config.go b/pkg/config/config.go index 1f718da..541a3fb 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -31,9 +31,9 @@ type ProfilingConfig struct { } type TLSConfig struct { - Cert string `yaml:",omitempty"` - Key string `yaml:",omitempty"` - CA string `yaml:",omitempty"` + CertFile string `yaml:"certFile,omitempty"` + KeyFile string `yaml:"keyFile,omitempty"` + CAFile string `yaml:"caFile,omitempty"` Secure bool `yaml:",omitempty"` ServerName string `yaml:"serverName,omitempty"` } @@ -45,8 +45,8 @@ type AuthConfig struct { type SelectorConfig struct { Strategy string - MaxFails int - FailTimeout time.Duration + MaxFails int `yaml:"maxFails"` + FailTimeout time.Duration `yaml:"failTimeout"` } type BypassConfig struct { @@ -143,9 +143,9 @@ type HopConfig struct { type NodeConfig struct { Name string Addr string `yaml:",omitempty"` - Dialer *DialerConfig `yaml:",omitempty"` - Connector *ConnectorConfig `yaml:",omitempty"` Bypass string `yaml:",omitempty"` + Connector *ConnectorConfig `yaml:",omitempty"` + Dialer *DialerConfig `yaml:",omitempty"` } type Config struct {