1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

Work around extra whitespace in spf records (#361)

* handle empty spf parts from bad records

* update spf tool
This commit is contained in:
Craig Peterson
2018-05-03 10:03:38 -04:00
committed by GitHub
parent f77f202b65
commit 6c60eac7c7
5 changed files with 45077 additions and 32375 deletions

View File

@ -21,41 +21,45 @@ type gResp struct {
}
}
func (g gResolver) GetTxt(fqdn string) ([]string, error) {
func (g gResolver) GetSPF(fqdn string) (string, error) {
resp, err := http.Get("https://dns.google.com/resolve?type=txt&name=" + fqdn)
if err != nil {
return nil, err
return "", err
}
defer resp.Body.Close()
dec := json.NewDecoder(resp.Body)
dat := &gResp{}
if err = dec.Decode(dat); err != nil {
return nil, err
return "", err
}
list := []string{}
for _, a := range dat.Answer {
list = append(list, strings.Trim(a.Data, "\""))
val := strings.Trim(a.Data, "\"")
if strings.HasPrefix(val, "v=spf1 ") {
return val, nil
}
}
return list, nil
return "", fmt.Errorf("No spf records found")
}
var jq = jquery.NewJQuery
var parsed *spflib.SPFRecord
var domain string
var resolver = gResolver{}
func main() {
jq(func() {
jq("#lookup_btn").On(jquery.CLICK, func(e jquery.Event) {
go func() {
domain = jq("#domain").Val()
rec, err := spflib.Lookup(domain, gResolver{})
text, err := resolver.GetSPF(domain)
fmt.Println(text)
if err != nil {
panic(err)
}
parsed, err = spflib.Parse(rec, gResolver{})
parsed, err = spflib.Parse(text, resolver)
if err != nil {
// todo: show a better error
panic(err)
}
jq("#results").SetHtml(buildHTML(parsed, domain))