本文整理汇总了Golang中github.com/miekg/dns.SRV.Target方法的典型用法代码示例。如果您正苦于以下问题:Golang SRV.Target方法的具体用法?Golang SRV.Target怎么用?Golang SRV.Target使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/miekg/dns.SRV
的用法示例。
在下文中一共展示了SRV.Target方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: answerSRV
func answerSRV(q *dns.Question, v *DNSValue) dns.RR {
answer := new(dns.SRV)
answer.Header().Name = q.Name
answer.Header().Rrtype = dns.TypeSRV
answer.Header().Class = dns.ClassINET
answer.Priority = 50 // default if not defined
priority, err := strconv.Atoi(v.Attr["priority"])
if err == nil {
answer.Priority = uint16(priority)
}
answer.Weight = 50 // default if not defined
weight, err := strconv.Atoi(v.Attr["weight"])
if err == nil {
answer.Weight = uint16(weight)
}
answer.Port = 0 // default if not defined
port, err := strconv.Atoi(v.Attr["port"])
if err == nil {
answer.Port = uint16(port)
}
if target, ok := v.Attr["target"]; ok {
answer.Target = strings.TrimSuffix(target, ".") + "."
} else if v.Value != "" { // allows for simplified setting
targetParts := strings.Split(v.Value, ":")
answer.Target = strings.TrimSuffix(targetParts[0], ".") + "."
if len(targetParts) > 1 {
port, err := strconv.Atoi(targetParts[1])
if err == nil {
answer.Port = uint16(port)
}
}
}
return answer
}
示例2: handleSRVQuery
func (r *resolver) handleSRVQuery(svc string, query *dns.Msg) (*dns.Msg, error) {
srv, ip := r.backend.ResolveService(svc)
if len(srv) == 0 {
return nil, nil
}
if len(srv) != len(ip) {
return nil, fmt.Errorf("invalid reply for SRV query %s", svc)
}
resp := createRespMsg(query)
for i, r := range srv {
rr := new(dns.SRV)
rr.Hdr = dns.RR_Header{Name: svc, Rrtype: dns.TypePTR, Class: dns.ClassINET, Ttl: respTTL}
rr.Port = r.Port
rr.Target = r.Target
resp.Answer = append(resp.Answer, rr)
rr1 := new(dns.A)
rr1.Hdr = dns.RR_Header{Name: r.Target, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: respTTL}
rr1.A = ip[i]
resp.Extra = append(resp.Extra, rr1)
}
return resp, nil
}
示例3: Test_convertAnswersToSRV_convertsAnswers
func (s *DNSXmppSuite) Test_convertAnswersToSRV_convertsAnswers(c *C) {
cn := new(dns.CNAME)
srv := new(dns.SRV)
srv.Target = "foo2.com"
in := make([]dns.RR, 2)
in[0] = cn
in[1] = srv
res := convertAnswersToSRV(in)
c.Assert(res, HasLen, 1)
c.Assert(res[0].Target, Equals, "foo2.com")
}
示例4: Test_convertAnswerToSRV_returnsAValidNetSRV
func (s *DNSXmppSuite) Test_convertAnswerToSRV_returnsAValidNetSRV(c *C) {
srv := new(dns.SRV)
srv.Target = "foo.com"
srv.Port = 123
srv.Priority = 5
srv.Weight = 42
res := convertAnswerToSRV(srv)
c.Assert(res, Not(IsNil))
c.Assert(res.Target, Equals, "foo.com")
c.Assert(res.Port, Equals, uint16(123))
c.Assert(res.Priority, Equals, uint16(5))
c.Assert(res.Weight, Equals, uint16(42))
}