mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-04 03:03:14 -05:00 
			
		
		
		
	
		
			
	
	
		
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package nomad
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"net"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/hashicorp/nomad/api"
							 | 
						||
| 
								 | 
							
									"github.com/miekg/dns"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func addSRVRecord(m *dns.Msg, s *api.ServiceRegistration, header dns.RR_Header, originalQName string, addr net.IP, ttl uint32) error {
							 | 
						||
| 
								 | 
							
									srvRecord := &dns.SRV{
							 | 
						||
| 
								 | 
							
										Hdr:      header,
							 | 
						||
| 
								 | 
							
										Target:   originalQName,
							 | 
						||
| 
								 | 
							
										Port:     uint16(s.Port),
							 | 
						||
| 
								 | 
							
										Priority: 10,
							 | 
						||
| 
								 | 
							
										Weight:   10,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									m.Answer = append(m.Answer, srvRecord)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if addr.To4() == nil {
							 | 
						||
| 
								 | 
							
										addExtrasToAAAARecord(m, originalQName, ttl, addr)
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										addExtrasToARecord(m, originalQName, ttl, addr)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func addExtrasToARecord(m *dns.Msg, originalQName string, ttl uint32, addr net.IP) {
							 | 
						||
| 
								 | 
							
									header := dns.RR_Header{
							 | 
						||
| 
								 | 
							
										Name:   originalQName,
							 | 
						||
| 
								 | 
							
										Rrtype: dns.TypeA,
							 | 
						||
| 
								 | 
							
										Class:  dns.ClassINET,
							 | 
						||
| 
								 | 
							
										Ttl:    ttl,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									m.Extra = append(m.Extra, &dns.A{Hdr: header, A: addr})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func addExtrasToAAAARecord(m *dns.Msg, originalQName string, ttl uint32, addr net.IP) {
							 | 
						||
| 
								 | 
							
									header := dns.RR_Header{
							 | 
						||
| 
								 | 
							
										Name:   originalQName,
							 | 
						||
| 
								 | 
							
										Rrtype: dns.TypeAAAA,
							 | 
						||
| 
								 | 
							
										Class:  dns.ClassINET,
							 | 
						||
| 
								 | 
							
										Ttl:    ttl,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									m.Extra = append(m.Extra, &dns.AAAA{Hdr: header, AAAA: addr})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func addARecord(m *dns.Msg, header dns.RR_Header, addr net.IP) {
							 | 
						||
| 
								 | 
							
									m.Answer = append(m.Answer, &dns.A{Hdr: header, A: addr})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func addAAAARecord(m *dns.Msg, header dns.RR_Header, addr net.IP) {
							 | 
						||
| 
								 | 
							
									m.Answer = append(m.Answer, &dns.AAAA{Hdr: header, AAAA: addr})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func createSOARecord(originalQName string, ttl uint32, zone string) *dns.SOA {
							 | 
						||
| 
								 | 
							
									return &dns.SOA{
							 | 
						||
| 
								 | 
							
										Hdr:     dns.RR_Header{Name: dns.Fqdn(originalQName), Rrtype: dns.TypeSOA, Class: dns.ClassINET, Ttl: ttl},
							 | 
						||
| 
								 | 
							
										Ns:      dns.Fqdn("ns1." + originalQName),
							 | 
						||
| 
								 | 
							
										Mbox:    dns.Fqdn("hostmaster." + zone),
							 | 
						||
| 
								 | 
							
										Serial:  0,
							 | 
						||
| 
								 | 
							
										Refresh: 3600,
							 | 
						||
| 
								 | 
							
										Retry:   600,
							 | 
						||
| 
								 | 
							
										Expire:  86400,
							 | 
						||
| 
								 | 
							
										Minttl:  30,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |