2022-09-15 19:27:07 +08:00
|
|
|
package internal
|
|
|
|
|
2022-12-12 17:05:44 +08:00
|
|
|
import (
|
|
|
|
"github.com/chainreactors/spray/pkg"
|
2023-04-14 20:05:21 +08:00
|
|
|
"github.com/chainreactors/words"
|
2022-12-12 17:05:44 +08:00
|
|
|
)
|
|
|
|
|
2023-04-14 20:05:21 +08:00
|
|
|
func NewOrigin(stat *pkg.Statistor) *Origin {
|
|
|
|
return &Origin{Statistor: stat}
|
|
|
|
}
|
|
|
|
|
|
|
|
type Origin struct {
|
|
|
|
*pkg.Statistor
|
|
|
|
sum int
|
|
|
|
}
|
|
|
|
|
2024-09-10 16:47:49 +08:00
|
|
|
func (o *Origin) InitWorder(fns []words.WordFunc) (*words.Worder, error) {
|
2023-04-14 20:05:21 +08:00
|
|
|
var worder *words.Worder
|
2024-08-26 02:22:35 +08:00
|
|
|
wl, err := pkg.LoadWordlist(o.Word, o.Dictionaries)
|
2023-04-14 20:05:21 +08:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2024-09-10 16:47:49 +08:00
|
|
|
worder = words.NewWorderWithList(wl)
|
2023-04-14 20:05:21 +08:00
|
|
|
worder.Fns = fns
|
2024-08-26 02:22:35 +08:00
|
|
|
rules, err := pkg.LoadRuleWithFiles(o.RuleFiles, o.RuleFilter)
|
2023-04-14 20:05:21 +08:00
|
|
|
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
|
2022-12-12 17:05:44 +08:00
|
|
|
}
|