Clean up code inside the configuration loaders
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user