support different type

This commit is contained in:
AlteredCoder 2020-05-27 10:42:41 +02:00
parent 7e7e55cc40
commit 4af1269dd4
4 changed files with 12 additions and 10 deletions

View file

@ -47,7 +47,7 @@ func Init() error {
return nil return nil
} }
func FileInit(fileFolder string, filename string) error { func FileInit(fileFolder string, filename string, fileType string) error {
filepath := path.Join(fileFolder, filename) filepath := path.Join(fileFolder, filename)
file, err := os.Open(filepath) file, err := os.Open(filepath)
if err != nil { if err != nil {
@ -58,17 +58,18 @@ func FileInit(fileFolder string, filename string) error {
if _, ok := dataFile[filename]; !ok { if _, ok := dataFile[filename]; !ok {
dataFile[filename] = []string{} dataFile[filename] = []string{}
} }
fileType := "string" if fileType == "" {
scanner := bufio.NewScanner(file) fileType = "string"
scanner.Scan()
if scanner.Text() == "#type: regex" { // if file contains regexps, it should have this header
fileType = "regex"
} }
scanner := bufio.NewScanner(file)
for scanner.Scan() { for scanner.Scan() {
if fileType == "regex" { switch fileType {
case "regex":
dataFileRegex[filename] = append(dataFileRegex[filename], regexp.MustCompile(scanner.Text())) dataFileRegex[filename] = append(dataFileRegex[filename], regexp.MustCompile(scanner.Text()))
} else { case "string":
dataFile[filename] = append(dataFile[filename], scanner.Text()) dataFile[filename] = append(dataFile[filename], scanner.Text())
default:
log.Errorf("unknown data type '%s' for : '%s'", fileType, filename)
} }
} }

View file

@ -282,7 +282,7 @@ func LoadBucket(g *BucketFactory, dataFolder string) error {
if len(g.Data) > 0 { if len(g.Data) > 0 {
for _, data := range g.Data { for _, data := range g.Data {
err = exprhelpers.FileInit(dataFolder, data.DestPath) err = exprhelpers.FileInit(dataFolder, data.DestPath, data.Type)
if err != nil { if err != nil {
log.Errorf(err.Error()) log.Errorf(err.Error())
} }

View file

@ -117,7 +117,7 @@ func LoadStages(stageFiles []Stagefile, pctx *UnixParserCtx) ([]Node, error) {
if len(node.Data) > 0 { if len(node.Data) > 0 {
for _, data := range node.Data { for _, data := range node.Data {
err = exprhelpers.FileInit(pctx.DataFolder, data.DestPath) err = exprhelpers.FileInit(pctx.DataFolder, data.DestPath, data.Type)
if err != nil { if err != nil {
log.Errorf(err.Error()) log.Errorf(err.Error())
} }

View file

@ -13,6 +13,7 @@ import (
type DataSource struct { type DataSource struct {
SourceURL string `yaml:"source_url"` SourceURL string `yaml:"source_url"`
DestPath string `yaml:"dest_file"` DestPath string `yaml:"dest_file"`
Type string `yaml:"type"`
} }
type DataSet struct { type DataSet struct {