Allow to set static to a pointer and add IsIPV6 helper (#1540)
* Allow to set static to a pointer and add IsIPV6 helper
This commit is contained in:
parent
fe09737d80
commit
1e1741aa45
|
@ -58,6 +58,7 @@ func GetExprEnv(ctx map[string]interface{}) map[string]interface{} {
|
||||||
"XMLGetAttributeValue": XMLGetAttributeValue,
|
"XMLGetAttributeValue": XMLGetAttributeValue,
|
||||||
"XMLGetNodeValue": XMLGetNodeValue,
|
"XMLGetNodeValue": XMLGetNodeValue,
|
||||||
"IpToRange": IpToRange,
|
"IpToRange": IpToRange,
|
||||||
|
"IsIPV6": IsIPV6,
|
||||||
}
|
}
|
||||||
for k, v := range ctx {
|
for k, v := range ctx {
|
||||||
ExprLib[k] = v
|
ExprLib[k] = v
|
||||||
|
@ -180,6 +181,17 @@ func IpInRange(ip string, ipRange string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsIPV6(ip string) bool {
|
||||||
|
ipParsed := net.ParseIP(ip)
|
||||||
|
if ipParsed == nil {
|
||||||
|
log.Debugf("'%s' is not a valid IP", ip)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// If it's a valid IP and can't be converted to IPv4 then it is an IPv6
|
||||||
|
return ipParsed.To4() == nil
|
||||||
|
}
|
||||||
|
|
||||||
func IpToRange(ip string, cidr string) string {
|
func IpToRange(ip string, cidr string) string {
|
||||||
cidr = strings.TrimPrefix(cidr, "/")
|
cidr = strings.TrimPrefix(cidr, "/")
|
||||||
mask, err := strconv.Atoi(cidr)
|
mask, err := strconv.Atoi(cidr)
|
||||||
|
|
|
@ -17,7 +17,6 @@ import (
|
||||||
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
|
||||||
"github.com/mohae/deepcopy"
|
"github.com/mohae/deepcopy"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
@ -38,7 +37,7 @@ func SetTargetByName(target string, value string, evt *types.Event) bool {
|
||||||
log.Debugf("setting target %s to %s", target, value)
|
log.Debugf("setting target %s to %s", target, value)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Errorf("Runtime error while trying to set '%s' in %s : %+v", target, spew.Sdump(evt), r)
|
log.Errorf("Runtime error while trying to set '%s': %+v", target, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -65,11 +64,17 @@ func SetTargetByName(target string, value string, evt *types.Event) bool {
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
tmp := iter.FieldByName(f)
|
tmp := iter.FieldByName(f)
|
||||||
if !tmp.IsValid() {
|
if !tmp.IsValid() {
|
||||||
log.Debugf("%s IsValid false", f)
|
log.Debugf("'%s' is not a valid target because '%s' is not valid", target, f)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if tmp.Kind() == reflect.Ptr {
|
||||||
|
tmp = reflect.Indirect(tmp)
|
||||||
|
}
|
||||||
iter = tmp
|
iter = tmp
|
||||||
break
|
break
|
||||||
|
case reflect.Ptr:
|
||||||
|
tmp := iter.Elem()
|
||||||
|
iter = reflect.Indirect(tmp.FieldByName(f))
|
||||||
default:
|
default:
|
||||||
log.Errorf("unexpected type %s in '%s'", iter.Kind(), target)
|
log.Errorf("unexpected type %s in '%s'", iter.Kind(), target)
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Reference in a new issue