Conner Fromknecht
5 years ago
3 changed files with 63 additions and 79 deletions
@ -1,14 +1,68 @@
|
||||
// +build !experimental
|
||||
|
||||
package watchtower |
||||
|
||||
// Conf specifies the watchtower options that be configured from the command
|
||||
// line or configuration file. In non-experimental builds, we disallow such
|
||||
// configuration.
|
||||
type Conf struct{} |
||||
import ( |
||||
"time" |
||||
|
||||
"github.com/lightningnetwork/lnd/lncfg" |
||||
) |
||||
|
||||
// Conf specifies the watchtower options that can be configured from the command
|
||||
// line or configuration file.
|
||||
type Conf struct { |
||||
// RawListeners configures the watchtower's listening ports/interfaces.
|
||||
RawListeners []string `long:"listen" description:"Add interfaces/ports to listen for peer connections"` |
||||
|
||||
// ReadTimeout specifies the duration the tower will wait when trying to
|
||||
// read a message from a client before hanging up.
|
||||
ReadTimeout time.Duration `long:"readtimeout" description:"Duration the watchtower server will wait for messages to be received before hanging up on clients"` |
||||
|
||||
// WriteTimeout specifies the duration the tower will wait when trying
|
||||
// to write a message from a client before hanging up.
|
||||
WriteTimeout time.Duration `long:"writetimeout" description:"Duration the watchtower server will wait for messages to be written before hanging up on client connections"` |
||||
} |
||||
|
||||
// Apply returns an error signaling that the Conf could not be applied in
|
||||
// non-experimental builds.
|
||||
// Apply completes the passed Config struct by applying any parsed Conf options.
|
||||
// If the corresponding values parsed by Conf are already set in the Config,
|
||||
// those fields will be not be modified.
|
||||
func (c *Conf) Apply(cfg *Config) (*Config, error) { |
||||
return nil, ErrNonExperimentalConf |
||||
// Set the Config's listening addresses if they are empty.
|
||||
if cfg.ListenAddrs == nil { |
||||
// Without a network, we will be unable to resolve the listening
|
||||
// addresses.
|
||||
if cfg.Net == nil { |
||||
return nil, ErrNoNetwork |
||||
} |
||||
|
||||
// If no addresses are specified by the Config, we will resort
|
||||
// to the default peer port.
|
||||
if len(c.RawListeners) == 0 { |
||||
addr := DefaultPeerPortStr |
||||
c.RawListeners = append(c.RawListeners, addr) |
||||
} |
||||
|
||||
// Normalize the raw listening addresses so that they can be
|
||||
// used by the brontide listener.
|
||||
var err error |
||||
cfg.ListenAddrs, err = lncfg.NormalizeAddresses( |
||||
c.RawListeners, DefaultPeerPortStr, |
||||
cfg.Net.ResolveTCPAddr, |
||||
) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
} |
||||
|
||||
// If the Config has no read timeout, we will use the parsed Conf
|
||||
// value.
|
||||
if cfg.ReadTimeout == 0 && c.ReadTimeout != 0 { |
||||
cfg.ReadTimeout = c.ReadTimeout |
||||
} |
||||
|
||||
// If the Config has no write timeout, we will use the parsed Conf
|
||||
// value.
|
||||
if cfg.WriteTimeout == 0 && c.WriteTimeout != 0 { |
||||
cfg.WriteTimeout = c.WriteTimeout |
||||
} |
||||
|
||||
return cfg, nil |
||||
} |
||||
|
@ -1,65 +0,0 @@
|
||||
// +build experimental
|
||||
|
||||
package watchtower |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"github.com/lightningnetwork/lnd/lncfg" |
||||
) |
||||
|
||||
// Conf specifies the watchtower options that can be configured from the command
|
||||
// line or configuration file.
|
||||
type Conf struct { |
||||
RawListeners []string `long:"listen" description:"Add interfaces/ports to listen for peer connections"` |
||||
|
||||
ReadTimeout time.Duration `long:"readtimeout" description:"Duration the watchtower server will wait for messages to be received before hanging up on clients"` |
||||
|
||||
WriteTimeout time.Duration `long:"writetimeout" description:"Duration the watchtower server will wait for messages to be written before hanging up on client connections"` |
||||
} |
||||
|
||||
// Apply completes the passed Config struct by applying any parsed Conf options.
|
||||
// If the corresponding values parsed by Conf are already set in the Config,
|
||||
// those fields will be not be modified.
|
||||
func (c *Conf) Apply(cfg *Config) (*Config, error) { |
||||
// Set the Config's listening addresses if they are empty.
|
||||
if cfg.ListenAddrs == nil { |
||||
// Without a network, we will be unable to resolve the listening
|
||||
// addresses.
|
||||
if cfg.Net == nil { |
||||
return nil, ErrNoNetwork |
||||
} |
||||
|
||||
// If no addresses are specified by the Config, we will resort
|
||||
// to the default peer port.
|
||||
if len(c.RawListeners) == 0 { |
||||
addr := DefaultPeerPortStr |
||||
c.RawListeners = append(c.RawListeners, addr) |
||||
} |
||||
|
||||
// Normalize the raw listening addresses so that they can be
|
||||
// used by the brontide listener.
|
||||
var err error |
||||
cfg.ListenAddrs, err = lncfg.NormalizeAddresses( |
||||
c.RawListeners, DefaultPeerPortStr, |
||||
cfg.Net.ResolveTCPAddr, |
||||
) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
} |
||||
|
||||
// If the Config has no read timeout, we will use the parsed Conf
|
||||
// value.
|
||||
if cfg.ReadTimeout == 0 && c.ReadTimeout != 0 { |
||||
cfg.ReadTimeout = c.ReadTimeout |
||||
} |
||||
|
||||
// If the Config has no write timeout, we will use the parsed Conf
|
||||
// value.
|
||||
if cfg.WriteTimeout == 0 && c.WriteTimeout != 0 { |
||||
cfg.WriteTimeout = c.WriteTimeout |
||||
} |
||||
|
||||
return cfg, nil |
||||
} |
Loading…
Reference in new issue