MCPcopy
hub / github.com/txthinking/brook / TouchBrook

Method TouchBrook

plugins/thedns/thedns.go:134–209  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

132}
133
134func (p *TheDNS) TouchBrook() {
135 f := brook.DNSGate
136 brook.DNSGate = func(addr *net.UDPAddr, m *dns.Msg, l1 *net.UDPConn) (bool, error) {
137 done, err := f(addr, m, l1)
138 if err != nil || done {
139 return done, err
140 }
141 if m.Question[0].Qtype == dns.TypeA && p.DisableA {
142 err := soa(addr, m, l1)
143 return err == nil, err
144 }
145 if m.Question[0].Qtype == dns.TypeAAAA && p.DisableAAAA {
146 err := soa(addr, m, l1)
147 return err == nil, err
148 }
149 if brook.ListHasDomain(p.BlockDomain, strings.ToLower(m.Question[0].Name[0:len(m.Question[0].Name)-1]), p.Cache) {
150 err := soa(addr, m, l1)
151 return err == nil, err
152 }
153 if brook.ListHasDomain(p.BypassDomain, strings.ToLower(m.Question[0].Name[0:len(m.Question[0].Name)-1]), p.Cache1) {
154 var m1 *dns.Msg
155 if p.BypassDNSClient != nil {
156 m1, err = p.BypassDNSClient.Exchange(m)
157 }
158 if p.BypassDOHClient != nil {
159 m1, err = p.BypassDOHClient.Exchange(m)
160 }
161 if err != nil {
162 return false, err
163 }
164 m1b, err := m1.PackBuffer(nil)
165 if err != nil {
166 return false, err
167 }
168 if _, err := l1.WriteToUDP(m1b, addr); err != nil {
169 return false, err
170 }
171 return true, nil
172 }
173 if p.DOHClient != nil {
174 m1, err := p.DOHClient.Exchange(m)
175 if err != nil {
176 return false, err
177 }
178 m1b, err := m1.PackBuffer(nil)
179 if err != nil {
180 return false, err
181 }
182 if _, err := l1.WriteToUDP(m1b, addr); err != nil {
183 return false, err
184 }
185 return true, nil
186 }
187 return false, nil
188 }
189 f1 := brook.DOHGate
190 brook.DOHGate = func(m *dns.Msg, w http.ResponseWriter, r *http.Request) (done bool, err error) {
191 done, err = f1(m, w, r)

Callers 1

mainFunction · 0.95

Calls 5

ListHasDomainFunction · 0.92
soaFunction · 0.85
soahFunction · 0.85
ExchangeMethod · 0.65
fFunction · 0.50

Tested by

no test coverage detected