Allow CrowdSec to start if geoip data are not downloaded (#92)

* Allow CrowdSec to start if `geoip` data are not downloaded
This commit is contained in:
AlteredCoder 2020-06-25 12:36:01 +02:00 committed by GitHub
parent 68c749bc9c
commit 2e30793188
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 8 deletions

View file

@ -19,6 +19,7 @@ type EnricherCtx struct {
Name string
Path string //path to .so ?
RuntimeCtx interface{} //the internal context of plugin, given back over every call
initiated bool
}
/* mimic plugin loading */
@ -40,8 +41,10 @@ func Loadplugin(path string) (EnricherCtx, error) {
c.RuntimeCtx, err = c.Init(map[string]string{"datadir": path})
if err != nil {
log.Fatalf("load (fake) plugin load : %v", err)
log.Warningf("load (fake) plugin load : %v", err)
c.initiated = false
}
c.initiated = true
return c, nil
}

View file

@ -92,18 +92,18 @@ func GeoIpInit(cfg map[string]string) (interface{}, error) {
var err error
ctx.dbc, err = geoip2.Open(cfg["datadir"] + "/GeoLite2-City.mmdb")
if err != nil {
log.Errorf("couldn't open geoip : %v", err)
log.Debugf("couldn't open geoip : %v", err)
return nil, err
}
ctx.dba, err = geoip2.Open(cfg["datadir"] + "/GeoLite2-ASN.mmdb")
if err != nil {
log.Errorf("couldn't open geoip : %v", err)
log.Debugf("couldn't open geoip : %v", err)
return nil, err
}
ctx.dbraw, err = maxminddb.Open(cfg["datadir"] + "/GeoLite2-ASN.mmdb")
if err != nil {
log.Errorf("couldn't open geoip : %v", err)
log.Debugf("couldn't open geoip : %v", err)
return nil, err
}

View file

@ -88,13 +88,13 @@ func (n *Node) validate(pctx *UnixParserCtx) error {
}
method_found := false
for _, enricherCtx := range ECTX {
if _, ok := enricherCtx.Funcs[static.Method]; ok {
if _, ok := enricherCtx.Funcs[static.Method]; ok && enricherCtx.initiated {
method_found = true
break
}
}
if !method_found {
return fmt.Errorf("the method '%s' doesn't exist", static.Method)
return fmt.Errorf("the method '%s' doesn't exist or the plugin has not been initialized", static.Method)
}
} else {
if static.Meta == "" && static.Parsed == "" && static.TargetByName == "" {

View file

@ -148,7 +148,7 @@ func ProcessStatics(statics []types.ExtraField, p *types.Event, clog *logrus.Ent
processed := false
/*still way too hackish, but : inject all the results in enriched, and */
for _, x := range ECTX {
if fptr, ok := x.Funcs[static.Method]; ok {
if fptr, ok := x.Funcs[static.Method]; ok && x.initiated {
clog.Tracef("Found method '%s'", static.Method)
ret, err := fptr(value, p, x.RuntimeCtx)
if err != nil {
@ -165,7 +165,7 @@ func ProcessStatics(statics []types.ExtraField, p *types.Event, clog *logrus.Ent
}
break
} else {
clog.Warningf("method '%s' doesn't exist", static.Method)
clog.Warningf("method '%s' doesn't exist or plugin not initialized", static.Method)
}
}
if !processed {