talos
1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
5package client6
7import (8"context"9"net"10
11"google.golang.org/grpc/peer"12)
13
14// RemotePeer parses remote peer address from grpc stream context.
15func RemotePeer(ctx context.Context) (peerHost string) {16peerHost = "unknown"17
18remote, ok := peer.FromContext(ctx)19if ok {20peerHost = AddrFromPeer(remote)21}22
23return24}
25
26// AddrFromPeer extracts peer address from grpc Peer.
27func AddrFromPeer(remote *peer.Peer) (peerHost string) {28peerHost = remote.Addr.String()29peerHost, _, _ = net.SplitHostPort(peerHost) //nolint:errcheck30
31return peerHost32}
33