summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhandingkang <[email protected]>2023-12-05 22:33:39 +0800
committerhandingkang <[email protected]>2023-12-05 22:33:39 +0800
commita9d47ec49f80856940918c670facc0e6a91ce929 (patch)
treecff75d19ae31133240aac80ddb27f401720a91f5
parent526245627d2a0afa410e8905d2b3730c0f75ed67 (diff)
TXT响应逻辑优化
-rw-r--r--plugin/v64dns/v64dns_policy.go32
1 files changed, 19 insertions, 13 deletions
diff --git a/plugin/v64dns/v64dns_policy.go b/plugin/v64dns/v64dns_policy.go
index 345c830..8e370dd 100644
--- a/plugin/v64dns/v64dns_policy.go
+++ b/plugin/v64dns/v64dns_policy.go
@@ -44,25 +44,31 @@ func (v V64dns) ResponseHandler(msg *dns.Msg, state request.Request) *dns.Msg {
// ResponseTXT 响应TXT,认为到达最后一步
func (v V64dns) ResponseTXT(msg *dns.Msg, state request.Request) *dns.Msg {
qname := strings.ToLower(state.QName())
- sub := ""
- for _, qs := range strings.Split(qname, ".") {
- switch v.MatchType(qs) {
- case 2:
- sub = qs
+
+ // 记录关联关系
+ dSlice := strings.Split(strings.ToLower(qname), ".")
+ if len(dSlice) > 4 {
+ // 将最近一次编码拆分开
+ cList := strings.Split(dSlice[len(dSlice)-5], "-")
+ iaddr := ""
+ // 首部编码如果长度为4则为IPv6地址编码,否则为IPv4的
+ if len(cList[0]) == 4 {
+ iaddr = strings.ReplaceAll(dSlice[len(dSlice)-6], "-", ":")
+ msg = v.SetAuthAdd(msg, state, 4)
+ } else {
+ iaddr = strings.ReplaceAll(dSlice[len(dSlice)-6], "-", ".")
+ msg = v.SetAuthAdd(msg, state, 6)
}
+ iaddr = net.ParseIP(iaddr).String()
+ oaddr := state.IP()
+ // 调用Python
+ go v.a.Go2py([]string{iaddr, oaddr, "1"})
+
}
- //ans := EL.l[expid].IPchain2Str()
answer := new(dns.TXT)
answer.Txt = []string{state.QName()}
answer.Hdr = dns.RR_Header{Name: state.QName(), Ttl: 3600, Class: dns.ClassINET, Rrtype: dns.TypeTXT}
-
- if sub == v.p.v4subdomain {
- msg = v.SetAuthAdd(msg, state, 4)
- } else {
- msg = v.SetAuthAdd(msg, state, 6)
- }
-
msg.Answer = append(msg.Answer, answer)
return msg
}