[#522] Use HostAddrString as RPC endpoint instead of IPAddrString

To enable TLS support we can't operate with IP addresses directly.
Certificates are issued with host names so it is required to
pass them into RPC client. DNS resolving should be done by transport
layer and not be a part of node. Therefore `IPAddrString` usage is
removed from code.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2021-05-17 15:04:32 +03:00 committed by Alex Vanin
parent 2456873473
commit 16f13bc0a5
13 changed files with 23 additions and 23 deletions

View file

@ -235,12 +235,12 @@ func getSDKClient(key *ecdsa.PrivateKey) (client.Client, error) {
return nil, err return nil, err
} }
ipAddr, err := netAddr.IPAddrString() hostAddr, err := netAddr.HostAddrString()
if err != nil { if err != nil {
return nil, errInvalidEndpoint return nil, errInvalidEndpoint
} }
c, err := client.New(client.WithAddress(ipAddr), client.WithDefaultPrivateKey(key)) c, err := client.New(client.WithAddress(hostAddr), client.WithDefaultPrivateKey(key))
return c, err return c, err
} }

View file

@ -228,12 +228,12 @@ func (r *remoteLoadAnnounceProvider) InitRemote(srv loadroute.ServerInfo) (loadc
return loadcontroller.SimpleWriterProvider(new(nopLoadWriter)), nil return loadcontroller.SimpleWriterProvider(new(nopLoadWriter)), nil
} }
ipAddr, err := network.IPAddrFromMultiaddr(addr) hostAddr, err := network.HostAddrFromMultiaddr(addr)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not convert address to IP format") return nil, errors.Wrap(err, "could not convert address to IP format")
} }
c, err := r.clientCache.Get(ipAddr) c, err := r.clientCache.Get(hostAddr)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not initialize API client") return nil, errors.Wrap(err, "could not initialize API client")
} }

View file

@ -492,9 +492,9 @@ func (c *reputationClientConstructor) Get(addr string) (client.Client, error) {
nm, err := netmap.GetLatestNetworkMap(c.nmSrc) nm, err := netmap.GetLatestNetworkMap(c.nmSrc)
if err == nil { if err == nil {
for i := range nm.Nodes { for i := range nm.Nodes {
ipAddr, err := network.IPAddrFromMultiaddr(nm.Nodes[i].Address()) hostAddr, err := network.HostAddrFromMultiaddr(nm.Nodes[i].Address())
if err == nil { if err == nil {
if ipAddr == addr { if hostAddr == addr {
prm := truststorage.UpdatePrm{} prm := truststorage.UpdatePrm{}
prm.SetPeer(reputation.PeerIDFromBytes(nm.Nodes[i].PublicKey())) prm.SetPeer(reputation.PeerIDFromBytes(nm.Nodes[i].PublicKey()))

View file

@ -76,12 +76,12 @@ func (rtp *remoteTrustProvider) InitRemote(srv reputationcommon.ServerInfo) (rep
return trustcontroller.SimpleWriterProvider(new(NopReputationWriter)), nil return trustcontroller.SimpleWriterProvider(new(NopReputationWriter)), nil
} }
ipAddr, err := network.IPAddrFromMultiaddr(addr) hostAddr, err := network.HostAddrFromMultiaddr(addr)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not convert address to IP format") return nil, errors.Wrap(err, "could not convert address to IP format")
} }
c, err := rtp.clientCache.Get(ipAddr) c, err := rtp.clientCache.Get(hostAddr)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not initialize API client") return nil, errors.Wrap(err, "could not initialize API client")
} }

View file

@ -117,7 +117,7 @@ func (ap *Processor) findStorageGroups(cid *container.ID, shuffled netmap.Nodes)
zap.Int("total_tries", ln), zap.Int("total_tries", ln),
) )
addr, err := network.IPAddrFromMultiaddr(shuffled[i].Address()) addr, err := network.HostAddrFromMultiaddr(shuffled[i].Address())
if err != nil { if err != nil {
log.Warn("can't parse remote address", zap.String("error", err.Error())) log.Warn("can't parse remote address", zap.String("error", err.Error()))

View file

@ -74,7 +74,7 @@ func (c *ClientCache) getSG(ctx context.Context, addr *object.Address, nm *netma
getParams.WithAddress(addr) getParams.WithAddress(addr)
for _, node := range placement.FlattenNodes(nodes) { for _, node := range placement.FlattenNodes(nodes) {
addr, err := network.IPAddrFromMultiaddr(node.Address()) addr, err := network.HostAddrFromMultiaddr(node.Address())
if err != nil { if err != nil {
c.log.Warn("can't parse remote address", c.log.Warn("can't parse remote address",
zap.String("address", node.Address()), zap.String("address", node.Address()),
@ -136,7 +136,7 @@ func (c *ClientCache) GetHeader(task *audit.Task, node *netmap.Node, id *object.
headParams.WithMainFields() headParams.WithMainFields()
headParams.WithAddress(objAddress) headParams.WithAddress(objAddress)
addr, err := network.IPAddrFromMultiaddr(node.Address()) addr, err := network.HostAddrFromMultiaddr(node.Address())
if err != nil { if err != nil {
return nil, fmt.Errorf("can't parse remote address %s: %w", node.Address(), err) return nil, fmt.Errorf("can't parse remote address %s: %w", node.Address(), err)
} }
@ -172,7 +172,7 @@ func (c *ClientCache) GetRangeHash(task *audit.Task, node *netmap.Node, id *obje
rangeParams.WithRangeList(rng) rangeParams.WithRangeList(rng)
rangeParams.WithSalt(nil) // it MUST be nil for correct hash concatenation in PDP game rangeParams.WithSalt(nil) // it MUST be nil for correct hash concatenation in PDP game
addr, err := network.IPAddrFromMultiaddr(node.Address()) addr, err := network.HostAddrFromMultiaddr(node.Address())
if err != nil { if err != nil {
return nil, fmt.Errorf("can't parse remote address %s: %w", node.Address(), err) return nil, fmt.Errorf("can't parse remote address %s: %w", node.Address(), err)
} }

View file

@ -106,12 +106,12 @@ func IsLocalAddress(src LocalAddressSource, addr *Address) bool {
return src.LocalAddress().ma.Equal(addr.ma) return src.LocalAddress().ma.Equal(addr.ma)
} }
// IPAddrFromMultiaddr converts "/dns4/localhost/tcp/8080" to "192.168.0.1:8080". // HostAddrFromMultiaddr converts "/dns4/localhost/tcp/8080" to "localhost:8080".
func IPAddrFromMultiaddr(multiaddr string) (string, error) { func HostAddrFromMultiaddr(multiaddr string) (string, error) {
address, err := AddressFromString(multiaddr) address, err := AddressFromString(multiaddr)
if err != nil { if err != nil {
return "", err return "", err
} }
return address.IPAddrString() return address.HostAddrString()
} }

View file

@ -271,7 +271,7 @@ func (exec *execCtx) headChild(id *objectSDK.ID) (*object.Object, bool) {
} }
func (exec execCtx) remoteClient(node *network.Address) (getClient, bool) { func (exec execCtx) remoteClient(node *network.Address) (getClient, bool) {
ipAddr, err := node.IPAddrString() hostAddr, err := node.HostAddrString()
log := exec.log.With(zap.Stringer("node", node)) log := exec.log.With(zap.Stringer("node", node))
@ -282,7 +282,7 @@ func (exec execCtx) remoteClient(node *network.Address) (getClient, bool) {
log.Debug("could not calculate node IP address") log.Debug("could not calculate node IP address")
case err == nil: case err == nil:
c, err := exec.svc.clientCache.get(ipAddr) c, err := exec.svc.clientCache.get(hostAddr)
switch { switch {
default: default:

View file

@ -411,7 +411,7 @@ func testNodeMatrix(t testing.TB, dim []int) ([]netmap.Nodes, [][]string) {
na, err := network.AddressFromString(a) na, err := network.AddressFromString(a)
require.NoError(t, err) require.NoError(t, err)
as[j], err = na.IPAddrString() as[j], err = na.HostAddrString()
require.NoError(t, err) require.NoError(t, err)
ni := netmap.NewNodeInfo() ni := netmap.NewNodeInfo()

View file

@ -65,7 +65,7 @@ func (h *RemoteHeader) Head(ctx context.Context, prm *RemoteHeadPrm) (*object.Ob
return nil, errors.Wrapf(err, "(%T) could not receive private key", h) return nil, errors.Wrapf(err, "(%T) could not receive private key", h)
} }
addr, err := prm.node.IPAddrString() addr, err := prm.node.HostAddrString()
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -54,7 +54,7 @@ func (t *remoteTarget) Close() (*transformer.AccessIdentifiers, error) {
return nil, errors.Wrapf(err, "(%T) could not receive private key", t) return nil, errors.Wrapf(err, "(%T) could not receive private key", t)
} }
addr, err := t.addr.IPAddrString() addr, err := t.addr.HostAddrString()
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -118,7 +118,7 @@ func (exec *execCtx) generateTraverser(cid *container.ID) (*placement.Traverser,
} }
func (exec execCtx) remoteClient(node *network.Address) (searchClient, bool) { func (exec execCtx) remoteClient(node *network.Address) (searchClient, bool) {
ipAddr, err := node.IPAddrString() hostAddr, err := node.HostAddrString()
log := exec.log.With(zap.Stringer("node", node)) log := exec.log.With(zap.Stringer("node", node))
@ -129,7 +129,7 @@ func (exec execCtx) remoteClient(node *network.Address) (searchClient, bool) {
log.Debug("could not calculate node IP address") log.Debug("could not calculate node IP address")
case err == nil: case err == nil:
c, err := exec.svc.clientConstructor.get(ipAddr) c, err := exec.svc.clientConstructor.get(hostAddr)
switch { switch {
default: default:

View file

@ -209,7 +209,7 @@ func testNodeMatrix(t testing.TB, dim []int) ([]netmap.Nodes, [][]string) {
na, err := network.AddressFromString(a) na, err := network.AddressFromString(a)
require.NoError(t, err) require.NoError(t, err)
as[j], err = na.IPAddrString() as[j], err = na.HostAddrString()
require.NoError(t, err) require.NoError(t, err)
ni := netmap.NewNodeInfo() ni := netmap.NewNodeInfo()