From 9b2513c89d8d0e3f3067a011063c2329935674e3 Mon Sep 17 00:00:00 2001 From: NI Date: Sat, 8 Feb 2020 11:17:56 +0800 Subject: [PATCH] Clean up code inside the configuration loaders --- application/configuration/config.go | 24 +--------------------- application/configuration/loader_enviro.go | 19 +++++++++-------- application/configuration/loader_file.go | 14 +++++++++++++ 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/application/configuration/config.go b/application/configuration/config.go index 8d4c0aa..18425f7 100644 --- a/application/configuration/config.go +++ b/application/configuration/config.go @@ -170,32 +170,10 @@ func (c Configuration) Verify() error { // Common returns common settings func (c Configuration) Common() Common { - dialer := c.Dialer - - if dialer == nil { - dialer = network.TCPDial() - } - - if c.OnlyAllowPresetRemotes { - accessList := make(network.AllowedHosts, len(c.Presets)) - - for _, k := range c.Presets { - accessList[k.Host] = struct{}{} - } - - dialer = network.AccessControlDial(accessList, dialer) - } - - dialTimeout := c.DialTimeout - - if dialTimeout <= 1*time.Second { - dialTimeout = 1 * time.Second - } - return Common{ HostName: c.HostName, SharedKey: c.SharedKey, - Dialer: dialer, + Dialer: c.Dialer, DialTimeout: c.DialTimeout, Presets: c.Presets, OnlyAllowPresetRemotes: c.OnlyAllowPresetRemotes, diff --git a/application/configuration/loader_enviro.go b/application/configuration/loader_enviro.go index 93cf4de..64fe5bb 100644 --- a/application/configuration/loader_enviro.go +++ b/application/configuration/loader_enviro.go @@ -57,6 +57,10 @@ func Enviro() Loader { Socks5: parseEviro("SSHWIFTY_SOCKS5"), Socks5User: parseEviro("SSHWIFTY_SOCKS5_USER"), Socks5Password: parseEviro("SSHWIFTY_SOCKS5_PASSWORD"), + Servers: nil, + Presets: nil, + OnlyAllowPresetRemotes: len( + parseEviro("SSHWIFTY_ONLYALLOWPRESETREMOTES")) > 0, }.build() if cfgErr != nil { @@ -116,14 +120,13 @@ func Enviro() Loader { } return enviroTypeName, Configuration{ - HostName: cfg.HostName, - SharedKey: cfg.SharedKey, - Dialer: dialer, - DialTimeout: time.Duration(cfg.DialTimeout) * time.Second, - Servers: []Server{cfgSer.build()}, - Presets: presets, - OnlyAllowPresetRemotes: len( - parseEviro("SSHWIFTY_ONLYALLOWPRESETREMOTES")) > 0, + HostName: cfg.HostName, + SharedKey: cfg.SharedKey, + Dialer: dialer, + DialTimeout: time.Duration(cfg.DialTimeout) * time.Second, + Servers: []Server{cfgSer.build()}, + Presets: presets, + OnlyAllowPresetRemotes: cfg.OnlyAllowPresetRemotes, }, nil } } diff --git a/application/configuration/loader_file.go b/application/configuration/loader_file.go index 4d14856..21384d6 100644 --- a/application/configuration/loader_file.go +++ b/application/configuration/loader_file.go @@ -144,6 +144,20 @@ func (f fileCfgCommon) build() (fileCfgCommon, network.Dial, error) { dialer = sDial } + if f.OnlyAllowPresetRemotes { + accessList := make(network.AllowedHosts, len(f.Presets)) + + for _, k := range f.Presets { + if len(k.Host) <= 0 { + continue + } + + accessList[k.Host] = struct{}{} + } + + dialer = network.AccessControlDial(accessList, dialer) + } + return fileCfgCommon{ HostName: f.HostName, SharedKey: f.SharedKey,