MCPcopy
hub / github.com/bettercap/bettercap / NewJSQuery

Function NewJSQuery

modules/dns_proxy/dns_proxy_js_query.go:220–293  ·  view source on GitHub ↗
(query *dns.Msg, clientIP string)

Source from the content-addressed store, hash-verified

218}
219
220func NewJSQuery(query *dns.Msg, clientIP string) (jsQuery *JSQuery) {
221 answers := make([]map[string]interface{}, len(query.Answer))
222 extras := make([]map[string]interface{}, len(query.Extra))
223 nameservers := make([]map[string]interface{}, len(query.Ns))
224 questions := make([]map[string]interface{}, len(query.Question))
225
226 for i, rr := range query.Answer {
227 jsRecord, err := NewJSResourceRecord(rr)
228 if err != nil {
229 log.Error(err.Error())
230 continue
231 }
232 answers[i] = jsRecord
233 }
234
235 for i, rr := range query.Extra {
236 jsRecord, err := NewJSResourceRecord(rr)
237 if err != nil {
238 log.Error(err.Error())
239 continue
240 }
241 extras[i] = jsRecord
242 }
243
244 for i, rr := range query.Ns {
245 jsRecord, err := NewJSResourceRecord(rr)
246 if err != nil {
247 log.Error(err.Error())
248 continue
249 }
250 nameservers[i] = jsRecord
251 }
252
253 for i, question := range query.Question {
254 questions[i] = map[string]interface{}{
255 "Name": question.Name,
256 "Qtype": int64(question.Qtype),
257 "Qclass": int64(question.Qclass),
258 }
259 }
260
261 clientMAC := ""
262 clientAlias := ""
263 if endpoint := session.I.Lan.GetByIp(clientIP); endpoint != nil {
264 clientMAC = endpoint.HwAddress
265 clientAlias = endpoint.Alias
266 }
267 client := map[string]string{"IP": clientIP, "MAC": clientMAC, "Alias": clientAlias}
268
269 jsquery := &JSQuery{
270 Answers: answers,
271 Client: client,
272 Compress: query.Compress,
273 Extras: extras,
274 Header: JSQueryHeader{
275 AuthenticatedData: query.MsgHdr.AuthenticatedData,
276 Authoritative: query.MsgHdr.Authoritative,
277 CheckingDisabled: query.MsgHdr.CheckingDisabled,

Callers 2

OnRequestMethod · 0.85
OnResponseMethod · 0.85

Calls 5

UpdateHashMethod · 0.95
ErrorFunction · 0.92
NewJSResourceRecordFunction · 0.85
GetByIpMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected