|
|
|
|
@ -83,17 +83,26 @@ func Parse(r io.Reader) (*Config, error) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if s, ok := strs.CutPrefix(line, "search"); ok {
|
|
|
|
|
domain := strings.TrimSpace(s)
|
|
|
|
|
if len(domain) == len(s) {
|
|
|
|
|
domains := strings.TrimSpace(s)
|
|
|
|
|
if len(domains) == len(s) {
|
|
|
|
|
// No leading space?!
|
|
|
|
|
return nil, fmt.Errorf("missing space after \"domain\" in %q", line)
|
|
|
|
|
return nil, fmt.Errorf("missing space after \"search\" in %q", line)
|
|
|
|
|
}
|
|
|
|
|
fqdn, err := dnsname.ToFQDN(domain)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("parsing search domains %q: %w", line, err)
|
|
|
|
|
for len(domains) > 0 {
|
|
|
|
|
domain := domains
|
|
|
|
|
i := strings.IndexAny(domain, " \t")
|
|
|
|
|
if i != -1 {
|
|
|
|
|
domain = domain[:i]
|
|
|
|
|
domains = strings.TrimSpace(domains[i+1:])
|
|
|
|
|
} else {
|
|
|
|
|
domains = ""
|
|
|
|
|
}
|
|
|
|
|
fqdn, err := dnsname.ToFQDN(domain)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("parsing search domain %q in %q: %w", domain, line, err)
|
|
|
|
|
}
|
|
|
|
|
config.SearchDomains = append(config.SearchDomains, fqdn)
|
|
|
|
|
}
|
|
|
|
|
config.SearchDomains = append(config.SearchDomains, fqdn)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return config, nil
|
|
|
|
|
|