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:
2 files changed
+36
-18
No files matched your search
@@ -920,22 +920,6 @@ func loadConfig() (*config, error) {
|
|||||||
cfg.RawListeners = append(cfg.RawListeners, addr)
|
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
|
// Add default port to all RPC listener addresses if needed and remove
|
||||||
// duplicate addresses.
|
// duplicate addresses.
|
||||||
cfg.RPCListeners, err = lncfg.NormalizeAddresses(
|
cfg.RPCListeners, err = lncfg.NormalizeAddresses(
|
||||||
@@ -956,6 +940,22 @@ func loadConfig() (*config, error) {
|
|||||||
return nil, err
|
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.
|
// Remove the listening addresses specified if listening is disabled.
|
||||||
if cfg.DisableListen {
|
if cfg.DisableListen {
|
||||||
ltndLog.Infof("Listening on the p2p interface is disabled!")
|
ltndLog.Infof("Listening on the p2p interface is disabled!")
|
||||||
|
|||||||
+20
-2
@@ -70,15 +70,33 @@ func EnforceSafeAuthentication(addrs []net.Addr, macaroonsActive bool) error {
|
|||||||
return nil
|
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.
|
// ListenOnAddress creates a listener that listens on the given address.
|
||||||
func ListenOnAddress(addr net.Addr) (net.Listener, error) {
|
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.
|
// TLSListenOnAddress creates a TLS listener that listens on the given address.
|
||||||
func TLSListenOnAddress(addr net.Addr,
|
func TLSListenOnAddress(addr net.Addr,
|
||||||
config *tls.Config) (net.Listener, error) {
|
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.
|
// IsLoopback returns true if an address describes a loopback interface.
|
||||||
|
|||||||
Reference in new issue
Block a user