Add support for search-only resolvers
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package resolver
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
@@ -157,6 +158,7 @@ func createResolver(resolverURL, source string) (*Resolver, bool, error) {
|
||||
UpstreamBlockDetection: blockType,
|
||||
}
|
||||
|
||||
// Parse search domains.
|
||||
searchDomains := query.Get("search")
|
||||
if searchDomains != "" {
|
||||
err = configureSearchDomains(newResolver, strings.Split(searchDomains, ","), true)
|
||||
@@ -165,6 +167,18 @@ func createResolver(resolverURL, source string) (*Resolver, bool, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// Check if searchOnly is set and valid.
|
||||
if query.Has("searchOnly") {
|
||||
newResolver.SearchOnly = true
|
||||
|
||||
if query.Get("searchOnly") != "" {
|
||||
return nil, false, errors.New("searchOnly may only be used as an empty parameter")
|
||||
}
|
||||
if len(newResolver.Search) == 0 {
|
||||
return nil, false, errors.New("cannot use searchOnly without search scopes")
|
||||
}
|
||||
}
|
||||
|
||||
newResolver.Conn = resolverConnFactory(newResolver)
|
||||
return newResolver, false, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user