use domains validate for routes

This commit is contained in:
Pascal Fischer
2025-08-08 15:32:33 +02:00
parent 30b387ba02
commit 78c886eb53
2 changed files with 22 additions and 1 deletions

View File

@@ -94,7 +94,7 @@ func (h *handler) createRoute(w http.ResponseWriter, r *http.Request) {
var networkType route.NetworkType
var newPrefix netip.Prefix
if req.Domains != nil {
d, err := domain.ValidateFQDNs(*req.Domains)
d, err := domain.ValidateDomains(*req.Domains)
if err != nil {
util.WriteError(r.Context(), status.Errorf(status.InvalidArgument, "invalid domains: %v", err), w)
return

View File

@@ -67,6 +67,27 @@ func ValidateFQDNs(fqdns []string) (List, error) {
return domainList, nil
}
// ValidateDomains checks if each domain in the list is valid and returns a punycode-encoded DomainList.
func ValidateDomains(domains []string) (List, error) {
if len(domains) == 0 {
return nil, fmt.Errorf("domains list is empty")
}
if len(domains) > maxFQDN {
return nil, fmt.Errorf("domains list exceeds maximum allowed domains: %d", maxFQDN)
}
var domainList List
for _, d := range domains {
validDomain, err := ToValidDomain(d, true, true)
if err != nil {
return nil, fmt.Errorf("invalid domain %s: %w", d, err)
}
domainList = append(domainList, validDomain)
}
return domainList, nil
}
// ValidateFQDNsList checks if each domain in the list is valid
func ValidateFQDNsList(fqdns []string) error {
if len(fqdns) == 0 {