func TestPrivateByteSlice(t *testing.T) { dns.PrivateHandle("ISBN", TypeISBN, NewISBN) defer dns.PrivateHandleRemove(TypeISBN) rr, err := dns.NewRR(testrecord) if err != nil { t.Fatal(err) } buf := make([]byte, 100) off, err := dns.PackRR(rr, buf, 0, nil, false) if err != nil { t.Errorf("got error packing ISBN: %v", err) } custrr := rr.(*dns.PrivateRR) if ln := custrr.Data.Len() + len(custrr.Header().Name) + 11; ln != off { t.Errorf("offset is not matching to length of Private RR: %d!=%d", off, ln) } rr1, off1, err := dns.UnpackRR(buf[:off], 0) if err != nil { t.Errorf("got error unpacking ISBN: %v", err) } if off1 != off { t.Errorf("Offset after unpacking differs: %d != %d", off1, off) } if rr1.String() != testrecord { t.Errorf("Record string representation did not match original %#v != %#v", rr1.String(), testrecord) } else { t.Log(rr1.String()) } }
func ExamplePrivateHandle() { dns.PrivateHandle("APAIR", TypeAPAIR, NewAPAIR) defer dns.PrivateHandleRemove(TypeAPAIR) rr, err := dns.NewRR("miek.nl. APAIR (1.2.3.4 1.2.3.5)") if err != nil { log.Fatal("could not parse APAIR record: ", err) } fmt.Println(rr) // Output: miek.nl. 3600 IN APAIR 1.2.3.4 1.2.3.5 m := new(dns.Msg) m.Id = 12345 m.SetQuestion("miek.nl.", TypeAPAIR) m.Answer = append(m.Answer, rr) fmt.Println(m) // ;; opcode: QUERY, status: NOERROR, id: 12345 // ;; flags: rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 // // ;; QUESTION SECTION: // ;miek.nl. IN APAIR // // ;; ANSWER SECTION: // miek.nl. 3600 IN APAIR 1.2.3.4 1.2.3.5 }
func TestPrivateText(t *testing.T) { dns.PrivateHandle("ISBN", TypeISBN, NewISBN) defer dns.PrivateHandleRemove(TypeISBN) rr, err := dns.NewRR(testrecord) if err != nil { t.Fatal(err) } if rr.String() != testrecord { t.Errorf("record string representation did not match original %#v != %#v", rr.String(), testrecord) } else { t.Log(rr.String()) } }
func setupSOA(Zone *Zone) { label := Zone.Labels[""] primaryNs := "ns" // log.Println("LABEL", label) if label == nil { log.Println(Zone.Origin, "doesn't have any 'root' records,", "you should probably add some NS records") label = Zone.AddLabel("") } if record, ok := label.Records[dns.TypeNS]; ok { primaryNs = record[0].RR.(*dns.NS).Ns } ttl := Zone.Options.Ttl * 10 if ttl > 3600 { ttl = 3600 } if ttl == 0 { ttl = 600 } s := Zone.Origin + ". " + strconv.Itoa(ttl) + " IN SOA " + primaryNs + " " + Zone.Options.Contact + " " + strconv.Itoa(Zone.Options.Serial) + // refresh, retry, expire, minimum are all // meaningless with this implementation " 5400 5400 1209600 3600" // log.Println("SOA: ", s) rr, err := dns.NewRR(s) if err != nil { log.Println("SOA Error", err) panic("Could not setup SOA") } record := Record{RR: rr} label.Records[dns.TypeSOA] = make([]Record, 1) label.Records[dns.TypeSOA][0] = record }