func (s *server) PTRRecords(q dns.Question) (records []dns.RR, err error) { name := strings.ToLower(q.Name) path, star := msg.PathWithWildcard(name) if star { return nil, fmt.Errorf("reverse can not contain wildcards") } r, err := get(s.client, path, false) if err != nil { // if server has a forward, forward the query return nil, err } if r.Node.Dir { return nil, fmt.Errorf("reverse should not be a directory") } serv := new(msg.Service) if err := json.Unmarshal([]byte(r.Node.Value), serv); err != nil { s.config.log.Infof("failed to parse json: %s", err.Error()) return nil, err } ttl := uint32(r.Node.TTL) if ttl == 0 { ttl = s.config.Ttl } serv.Key = r.Node.Key // If serv.Host is parseble as a IP address we should not return anything. // TODO(miek). records = append(records, serv.NewPTR(q.Name, ttl)) return records, nil }