Skip to content

Commit

Permalink
Allow CrowdSec to start if geoip data are not downloaded (#92)
Browse files Browse the repository at this point in the history
* Allow CrowdSec to start if `geoip` data are not downloaded
  • Loading branch information
AlteredCoder authored Jun 25, 2020
1 parent 68c749b commit 2e30793
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 8 deletions.
5 changes: 4 additions & 1 deletion pkg/parser/enrich.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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
}

Expand Down
6 changes: 3 additions & 3 deletions pkg/parser/enrich_geoip.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/parser/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 == "" {
Expand Down
4 changes: 2 additions & 2 deletions pkg/parser/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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 {
Expand Down

0 comments on commit 2e30793

Please sign in to comment.