Merge pull request #2949 from wpaulino/lncfg-parse-network
lncfg: parse network for TCP addresses to listen on correct interface
This commit is contained in:
commit
6c4566bfce
32
config.go
32
config.go
@ -920,22 +920,6 @@ func loadConfig() (*config, error) {
|
||||
cfg.RawListeners = append(cfg.RawListeners, addr)
|
||||
}
|
||||
|
||||
// For each of the RPC listeners (REST+gRPC), we'll ensure that users
|
||||
// have specified a safe combo for authentication. If not, we'll bail
|
||||
// out with an error.
|
||||
err = lncfg.EnforceSafeAuthentication(
|
||||
cfg.RPCListeners, !cfg.NoMacaroons,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = lncfg.EnforceSafeAuthentication(
|
||||
cfg.RESTListeners, !cfg.NoMacaroons,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Add default port to all RPC listener addresses if needed and remove
|
||||
// duplicate addresses.
|
||||
cfg.RPCListeners, err = lncfg.NormalizeAddresses(
|
||||
@ -956,6 +940,22 @@ func loadConfig() (*config, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// For each of the RPC listeners (REST+gRPC), we'll ensure that users
|
||||
// have specified a safe combo for authentication. If not, we'll bail
|
||||
// out with an error.
|
||||
err = lncfg.EnforceSafeAuthentication(
|
||||
cfg.RPCListeners, !cfg.NoMacaroons,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = lncfg.EnforceSafeAuthentication(
|
||||
cfg.RESTListeners, !cfg.NoMacaroons,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Remove the listening addresses specified if listening is disabled.
|
||||
if cfg.DisableListen {
|
||||
ltndLog.Infof("Listening on the p2p interface is disabled!")
|
||||
|
@ -70,15 +70,33 @@ func EnforceSafeAuthentication(addrs []net.Addr, macaroonsActive bool) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// parseNetwork parses the network type of the given address.
|
||||
func parseNetwork(addr net.Addr) string {
|
||||
switch addr := addr.(type) {
|
||||
// TCP addresses resolved through net.ResolveTCPAddr give a default
|
||||
// network of "tcp", so we'll map back the correct network for the given
|
||||
// address. This ensures that we can listen on the correct interface
|
||||
// (IPv4 vs IPv6).
|
||||
case *net.TCPAddr:
|
||||
if addr.IP.To4() != nil {
|
||||
return "tcp4"
|
||||
}
|
||||
return "tcp6"
|
||||
|
||||
default:
|
||||
return addr.Network()
|
||||
}
|
||||
}
|
||||
|
||||
// ListenOnAddress creates a listener that listens on the given address.
|
||||
func ListenOnAddress(addr net.Addr) (net.Listener, error) {
|
||||
return net.Listen(addr.Network(), addr.String())
|
||||
return net.Listen(parseNetwork(addr), addr.String())
|
||||
}
|
||||
|
||||
// TLSListenOnAddress creates a TLS listener that listens on the given address.
|
||||
func TLSListenOnAddress(addr net.Addr,
|
||||
config *tls.Config) (net.Listener, error) {
|
||||
return tls.Listen(addr.Network(), addr.String(), config)
|
||||
return tls.Listen(parseNetwork(addr), addr.String(), config)
|
||||
}
|
||||
|
||||
// IsLoopback returns true if an address describes a loopback interface.
|
||||
|
Loading…
Reference in New Issue
Block a user