update network peers when new machine added

This commit is contained in:
Pavel Sviderski
2024-09-12 13:40:10 +10:00
parent a64caf34a7
commit 47073f017f
5 changed files with 168 additions and 35 deletions
+49
View File
@@ -0,0 +1,49 @@
package pb
import (
"fmt"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
// KeyLen is the expected key length for a WireGuard public or private key.
const KeyLen = 32
func (c *NetworkConfig) Validate() error {
if c.Subnet != nil {
_, err := c.Subnet.ToPrefix()
if err != nil {
return status.Errorf(codes.InvalidArgument, "invalid subnet: %v", err)
}
}
if c.ManagementIp != nil {
_, err := c.ManagementIp.ToAddr()
if err != nil {
return status.Errorf(codes.InvalidArgument, "invalid management IP: %v", err)
}
}
for _, ep := range c.Endpoints {
if ep == nil {
return status.Error(codes.InvalidArgument, "endpoint not set")
}
_, err := ep.ToAddrPort()
if err != nil {
return status.Errorf(codes.InvalidArgument, "invalid endpoint: %v", err)
}
}
if c.PublicKey == nil {
return status.Error(codes.InvalidArgument, "public key not set")
}
if len(c.PublicKey) != KeyLen {
return status.Errorf(codes.InvalidArgument, "invalid public key length: %d", len(c.PublicKey))
}
return nil
}
func (r *AddMachineRequest) Validate() error {
if r.Network == nil {
return fmt.Errorf("network not set")
}
return r.Network.Validate()
}