| 85 | } |
| 86 | |
| 87 | func soa(addr *net.UDPAddr, m *dns.Msg, l1 *net.UDPConn) error { |
| 88 | m1 := &dns.Msg{} |
| 89 | m1.SetReply(m) |
| 90 | m1.Authoritative = true |
| 91 | m1.Answer = append(m1.Answer, &dns.SOA{ |
| 92 | Hdr: dns.RR_Header{Name: m.Question[0].Name, Rrtype: dns.TypeSOA, Class: dns.ClassINET, Ttl: 60}, |
| 93 | Ns: "txthinking.com.", |
| 94 | Mbox: "cloud.txthinking.com.", |
| 95 | Serial: uint32((time.Now().Year() * 10000) + (int(time.Now().Month()) * 100) + (time.Now().Day())*100), |
| 96 | Refresh: 21600, |
| 97 | Retry: 3600, |
| 98 | Expire: 259200, |
| 99 | Minttl: 300, |
| 100 | }) |
| 101 | m1b, err := m1.PackBuffer(nil) |
| 102 | if err != nil { |
| 103 | return err |
| 104 | } |
| 105 | if _, err := l1.WriteToUDP(m1b, addr); err != nil { |
| 106 | return err |
| 107 | } |
| 108 | return nil |
| 109 | } |
| 110 | |
| 111 | func soah(m *dns.Msg, w http.ResponseWriter) error { |
| 112 | m1 := &dns.Msg{} |