(query *dns.Msg, clientIP string)
| 218 | } |
| 219 | |
| 220 | func 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, |
no test coverage detected