package dns import ( "bytes" "context" "fmt" "io" "os" "time" "darvaza.org/core" "github.com/libdns/libdns" ) // Show shows current DNS entries func (mgr *Manager) Show(ctx context.Context, names ...string) error { recs, err := mgr.GetRecords(ctx, names...) if err != nil { return core.Wrap(err, "GetRecords") } SortRecords(recs) return writeRecords(recs, os.Stdout) } func writeRecords(recs []libdns.Record, w io.Writer) error { var buf bytes.Buffer for _, rr := range recs { _ = fmtRecord(&buf, rr) _, _ = buf.WriteRune('\n') } _, _ = fmt.Fprintf(&buf, "; %v records\n", len(recs)) _, err := buf.WriteTo(w) return err } func fmtRecord(w io.Writer, rr libdns.Record) error { ttl := int(rr.TTL / time.Second) if ttl < 1 { ttl = 1 } _, err := fmt.Fprintf(w, "%s\t%v\tIN\t%s\t%s", rr.Name, ttl, rr.Type, rr.Value) if err == nil { if rr.ID != "" { _, err = fmt.Fprintf(w, "\t; %s", rr.ID) } } return err }