mirror of
https://github.com/psviderski/uncloud.git
synced 2026-10-07 21:59:15 +00:00
feat(machine): add validation for machine names to accept only DNS labels
This commit is contained in:
1 parent
11e1200fe8
commit
ce1c6bd05a
12 files changed
+286
-27
No files matched your search
@@ -1,12 +1,33 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/netip"
|
||||
"strings"
|
||||
|
||||
"github.com/psviderski/uncloud/api/pb"
|
||||
)
|
||||
|
||||
// ValidateMachineName checks that a machine name is a lowercase DNS label and doesn't conflict with
|
||||
// internal DNS query modes or machine IDs.
|
||||
func ValidateMachineName(name string) error {
|
||||
if !DNSLabelRegex.MatchString(name) {
|
||||
return fmt.Errorf("invalid machine name %q: must be 1-63 characters, lowercase letters, numbers, "+
|
||||
"and hyphens only, starting and ending with a letter or number", name)
|
||||
}
|
||||
|
||||
switch name {
|
||||
case "rr", "nearest":
|
||||
return fmt.Errorf("invalid machine name %q: reserved for internal DNS query modes", name)
|
||||
}
|
||||
if IDRegex.MatchString(name) {
|
||||
return fmt.Errorf(
|
||||
"invalid machine name %q: must not match the machine ID format (32 hexadecimal characters)", name)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// MachineFilter defines criteria to filter machines in ListMachines.
|
||||
type MachineFilter struct {
|
||||
// Available filters machines that are not DOWN.
|
||||
|
||||
Reference in new issue
Block a user