mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 19:13:34 +00:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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()
|
|
}
|