diff --git a/ratelimits/names.go b/ratelimits/names.go index cc32e49b6..099de902d 100644 --- a/ratelimits/names.go +++ b/ratelimits/names.go @@ -120,6 +120,9 @@ var nameToString = map[Name]string{ LimitOverrideRequestsPerIPAddress: "LimitOverrideRequestsPerIPAddress", } +// Policy Authority singleton +var PA *policy.AuthorityImpl + // isValid returns true if the Name is a valid rate limit name. func (n Name) isValid() bool { return n > Unknown && n < Name(len(nameToString)) @@ -201,7 +204,14 @@ func validateRegIdIdentValue(id string) error { return fmt.Errorf( "invalid regId, %q must be formatted 'regId:identValue'", id) } - domainErr := policy.ValidDomain(regIdIdentValue[1]) + pa := PA + if pa == nil { + pa, err = policy.New(map[identifier.IdentifierType]bool{"dns": true}, nil, nil) + if err != nil { + return fmt.Errorf("cannot create policy authority implementation") + } + } + domainErr := pa.ValidDomain(regIdIdentValue[1]) if domainErr != nil { ipErr := policy.ValidIP(regIdIdentValue[1]) if ipErr != nil { @@ -215,7 +225,15 @@ func validateRegIdIdentValue(id string) error { // name or an IP address. IPv6 addresses must be the lowest address in their // /64, i.e. their last 64 bits must be zero. func validateDomainOrCIDR(limit Name, id string) error { - domainErr := policy.ValidDomain(id) + pa := PA + var err error + if pa == nil { + pa, err = policy.New(map[identifier.IdentifierType]bool{"dns": true}, nil, nil) + if err != nil { + return fmt.Errorf("cannot create policy authority implementation") + } + } + domainErr := pa.ValidDomain(id) if domainErr == nil { // This is a valid domain. return nil @@ -270,8 +288,16 @@ func validateFQDNSet(id string) error { return fmt.Errorf( "invalid fqdnSet, %q must be formatted 'fqdnSet'", id) } + var err error + pa := PA + if pa == nil { + pa, err = policy.New(map[identifier.IdentifierType]bool{"dns": true}, nil, nil) + if err != nil { + return fmt.Errorf("cannot create policy authority implementation") + } + } for _, value := range values { - domainErr := policy.ValidDomain(value) + domainErr := pa.ValidDomain(value) if domainErr != nil { ipErr := policy.ValidIP(value) if ipErr != nil {