mirror of
https://github.com/bettercap/bettercap
synced 2025-08-19 13:09:49 -07:00
Support RFC3597 generic/unknown record type if Rdata field is present.
This commit is contained in:
parent
c5d93825bd
commit
c5017ed020
2 changed files with 78 additions and 71 deletions
|
@ -36,6 +36,76 @@ type JSQueryHeader struct {
|
||||||
Zero bool
|
Zero bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func jsPropToMap(obj map[string]interface{}, key string) map[string]interface{} {
|
||||||
|
if v, ok := obj[key].(map[string]interface{}); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return map[string]interface{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToMapArray(obj map[string]interface{}, key string) []map[string]interface{} {
|
||||||
|
if v, ok := obj[key].([]map[string]interface{}); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return []map[string]interface{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToString(obj map[string]interface{}, key string) string {
|
||||||
|
if v, ok := obj[key].(string); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToStringArray(obj map[string]interface{}, key string) []string {
|
||||||
|
if v, ok := obj[key].([]string); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return []string{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint8(obj map[string]interface{}, key string) uint8 {
|
||||||
|
if v, ok := obj[key].(uint8); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint8Array(obj map[string]interface{}, key string) []uint8 {
|
||||||
|
if v, ok := obj[key].([]uint8); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return []uint8{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint16(obj map[string]interface{}, key string) uint16 {
|
||||||
|
if v, ok := obj[key].(uint16); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint16Array(obj map[string]interface{}, key string) []uint16 {
|
||||||
|
if v, ok := obj[key].([]uint16); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return []uint16{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint32(obj map[string]interface{}, key string) uint32 {
|
||||||
|
if v, ok := obj[key].(uint32); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsPropToUint64(obj map[string]interface{}, key string) uint64 {
|
||||||
|
if v, ok := obj[key].(uint64); ok {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (j *JSQuery) NewHash() string {
|
func (j *JSQuery) NewHash() string {
|
||||||
answers, _ := json.Marshal(j.Answers)
|
answers, _ := json.Marshal(j.Answers)
|
||||||
extras, _ := json.Marshal(j.Extras)
|
extras, _ := json.Marshal(j.Extras)
|
||||||
|
|
|
@ -8,76 +8,6 @@ import (
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
)
|
)
|
||||||
|
|
||||||
func jsPropToMap(obj map[string]interface{}, key string) map[string]interface{} {
|
|
||||||
if v, ok := obj[key].(map[string]interface{}); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return map[string]interface{}{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToMapArray(obj map[string]interface{}, key string) []map[string]interface{} {
|
|
||||||
if v, ok := obj[key].([]map[string]interface{}); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return []map[string]interface{}{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToString(obj map[string]interface{}, key string) string {
|
|
||||||
if v, ok := obj[key].(string); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToStringArray(obj map[string]interface{}, key string) []string {
|
|
||||||
if v, ok := obj[key].([]string); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint8(obj map[string]interface{}, key string) uint8 {
|
|
||||||
if v, ok := obj[key].(uint8); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint8Array(obj map[string]interface{}, key string) []uint8 {
|
|
||||||
if v, ok := obj[key].([]uint8); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return []uint8{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint16(obj map[string]interface{}, key string) uint16 {
|
|
||||||
if v, ok := obj[key].(uint16); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint16Array(obj map[string]interface{}, key string) []uint16 {
|
|
||||||
if v, ok := obj[key].([]uint16); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return []uint16{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint32(obj map[string]interface{}, key string) uint32 {
|
|
||||||
if v, ok := obj[key].(uint32); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func jsPropToUint64(obj map[string]interface{}, key string) uint64 {
|
|
||||||
if v, ok := obj[key].(uint64); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewJSResourceRecord(rr dns.RR) (jsRecord map[string]interface{}, err error) {
|
func NewJSResourceRecord(rr dns.RR) (jsRecord map[string]interface{}, err error) {
|
||||||
header := rr.Header()
|
header := rr.Header()
|
||||||
|
|
||||||
|
@ -1007,8 +937,15 @@ func ToRR(jsRecord map[string]interface{}) (rr dns.RR, err error) {
|
||||||
// case dns.TypeDOA:
|
// case dns.TypeDOA:
|
||||||
// case dns.TypeSINK:
|
// case dns.TypeSINK:
|
||||||
default:
|
default:
|
||||||
|
if rdata, ok := jsRecord["Rdata"].(string); ok {
|
||||||
|
rr = &dns.RFC3597{
|
||||||
|
Hdr: header,
|
||||||
|
Rdata: rdata,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
return nil, fmt.Errorf("error converting to dns.RR: unknown type: %d", header.Rrtype)
|
return nil, fmt.Errorf("error converting to dns.RR: unknown type: %d", header.Rrtype)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return rr, nil
|
return rr, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue