MCPcopy Index your code
hub / github.com/coder/coder / NodeToProto

Function NodeToProto

tailnet/convert.go:23–66  ·  view source on GitHub ↗
(n *Node)

Source from the content-addressed store, hash-verified

21}
22
23func NodeToProto(n *Node) (*proto.Node, error) {
24 k, err := n.Key.MarshalBinary()
25 if err != nil {
26 return nil, err
27 }
28 disco, err := n.DiscoKey.MarshalText()
29 if err != nil {
30 return nil, err
31 }
32 derpForcedWebsocket := make(map[int32]string)
33 for i, s := range n.DERPForcedWebsocket {
34 // #nosec G115 - Safe conversion for DERP region IDs which are small positive integers
35 derpForcedWebsocket[int32(i)] = s
36 }
37 addresses := make([]string, len(n.Addresses))
38 for i, prefix := range n.Addresses {
39 s, err := prefix.MarshalText()
40 if err != nil {
41 return nil, err
42 }
43 addresses[i] = string(s)
44 }
45 allowedIPs := make([]string, len(n.AllowedIPs))
46 for i, prefix := range n.AllowedIPs {
47 s, err := prefix.MarshalText()
48 if err != nil {
49 return nil, err
50 }
51 allowedIPs[i] = string(s)
52 }
53 return &proto.Node{
54 Id: int64(n.ID),
55 AsOf: timestamppb.New(n.AsOf),
56 Key: k,
57 Disco: string(disco),
58 // #nosec G115 - Safe conversion as DERP region IDs are small integers expected to be within int32 range
59 PreferredDerp: int32(n.PreferredDERP),
60 DerpLatency: n.DERPLatency,
61 DerpForcedWebsocket: derpForcedWebsocket,
62 Addresses: addresses,
63 AllowedIps: allowedIPs,
64 Endpoints: n.Endpoints,
65 }, nil
66}
67
68func ProtoToNode(p *proto.Node) (*Node, error) {
69 k := key.NodePublic{}

Calls 2

MarshalTextMethod · 0.80
NewMethod · 0.65