package internal import ( "github.com/chainreactors/spray/pkg" "github.com/chainreactors/words" "github.com/chainreactors/words/rule" ) type Task struct { baseUrl string depth int rule []rule.Expression origin *Origin } func NewOrigin(stat *pkg.Statistor) *Origin { return &Origin{Statistor: stat} } type Origin struct { *pkg.Statistor sum int } func (o *Origin) InitWorder(fns []func(string) []string) (*words.Worder, error) { var worder *words.Worder wl, err := loadWordlist(o.Word, o.Dictionaries) if err != nil { return nil, err } worder = words.NewWorder(wl) worder.Fns = fns rules, err := loadRuleWithFiles(o.RuleFiles, o.RuleFilter) if err != nil { return nil, err } worder.Rules = rules if len(rules) > 0 { o.sum = len(rules) * len(wl) } else { o.sum = len(wl) } return worder, nil }