diff --git a/go.mod b/go.mod index 976ce0d..676710f 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,10 @@ go 1.17 require ( github.com/chainreactors/files v0.2.5-0.20221212083256-16ee4c1ae47e github.com/chainreactors/go-metrics v0.0.0-20220926021830-24787b7a10f8 - github.com/chainreactors/gogo/v2 v2.9.5-0.20221110124606-bb8c89742d4d + github.com/chainreactors/gogo/v2 v2.10.1 github.com/chainreactors/ipcs v0.0.13 github.com/chainreactors/logs v0.6.2 - github.com/chainreactors/parsers v0.2.7 + github.com/chainreactors/parsers v0.2.9-0.20221210155102-cc0814762410 github.com/chainreactors/words v0.3.2-0.20221212045930-0c976fe39aea ) @@ -31,5 +31,7 @@ require ( github.com/twmb/murmur3 v1.1.6 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect golang.org/x/sys v0.2.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index b7d22eb..873b4c1 100644 --- a/go.sum +++ b/go.sum @@ -1,30 +1,26 @@ github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/M09ic/go-ntlmssp v1.2.9/go.mod h1:yMNEF6ulbFipt3CakMhcmcNVACshPRG4Ap4l00V+mMs= +github.com/M09ic/go-ntlmssp v1.2.10-0.20221207030820-de2792a93fef/go.mod h1:yMNEF6ulbFipt3CakMhcmcNVACshPRG4Ap4l00V+mMs= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/chainreactors/files v0.2.0/go.mod h1:/Xa9YXhjBlaC33JTD6ZTJFig6pcplak2IDcovf42/6A= github.com/chainreactors/files v0.2.3/go.mod h1:/Xa9YXhjBlaC33JTD6ZTJFig6pcplak2IDcovf42/6A= -github.com/chainreactors/files v0.2.4 h1:R0iCqjWLcwwLoSi87FpgUlpxZAd+W4ZLQF3lkoLWZi0= github.com/chainreactors/files v0.2.4/go.mod h1:/Xa9YXhjBlaC33JTD6ZTJFig6pcplak2IDcovf42/6A= github.com/chainreactors/files v0.2.5-0.20221212083256-16ee4c1ae47e h1:Y/NB1dgNmglJlyMNuXcWItZGujbAAa0BbJNXM+CuuVo= github.com/chainreactors/files v0.2.5-0.20221212083256-16ee4c1ae47e/go.mod h1:/Xa9YXhjBlaC33JTD6ZTJFig6pcplak2IDcovf42/6A= github.com/chainreactors/go-metrics v0.0.0-20220926021830-24787b7a10f8 h1:kMFr1Hj+rkp1wBPIw2pcQvelO5GnA7r7wY3h6vJ1joA= github.com/chainreactors/go-metrics v0.0.0-20220926021830-24787b7a10f8/go.mod h1:7NDvFERNiXsujaBPD6s4WXj52uKdfnF2zVHQtKXIEV4= -github.com/chainreactors/gogo/v2 v2.9.5-0.20221110124606-bb8c89742d4d h1:LrbxNFvUrCooEIbQd4JicGFxRCs5KNov8xjJb8b7udw= -github.com/chainreactors/gogo/v2 v2.9.5-0.20221110124606-bb8c89742d4d/go.mod h1:L8CXaQB23of7vIZaBuajfNwXBemSthOy8o4myPs4PO4= +github.com/chainreactors/gogo/v2 v2.10.1 h1:s3GqcqwBLT1dR6dYTXYEQ14+bej1oImmwFg5QqlxL8k= +github.com/chainreactors/gogo/v2 v2.10.1/go.mod h1:0l7MElzkSqExIcN4hrwtij0AuqaY0Iyto1HSKYFMetU= github.com/chainreactors/ipcs v0.0.9/go.mod h1:E9M3Ohyq0TYQLlV4i2dbM9ThBZB1Nnd7Oexoie2xLII= github.com/chainreactors/ipcs v0.0.13 h1:TZww7XRr4qZPWqy9DjBzcJgxtSUwT4TAbcho4156bRI= github.com/chainreactors/ipcs v0.0.13/go.mod h1:E9M3Ohyq0TYQLlV4i2dbM9ThBZB1Nnd7Oexoie2xLII= github.com/chainreactors/logs v0.6.1/go.mod h1:Y0EtAnoF0kiASIJUnXN0pcOt420iRpHOAnOhEphzRHA= github.com/chainreactors/logs v0.6.2 h1:Yz5oayjwxO6KkjfjnmtT5WKbWjTaBdttFcneaFTpBe0= github.com/chainreactors/logs v0.6.2/go.mod h1:Y0EtAnoF0kiASIJUnXN0pcOt420iRpHOAnOhEphzRHA= -github.com/chainreactors/parsers v0.2.6/go.mod h1:Z9weht+lnFCk7UcwqFu6lXpS7u5vttiy0AJYOAyCCLA= -github.com/chainreactors/parsers v0.2.7 h1:3iEuluL7gSDrElZWyf1KEiTgddgcoZC0IaIHb9KA3pk= -github.com/chainreactors/parsers v0.2.7/go.mod h1:Z9weht+lnFCk7UcwqFu6lXpS7u5vttiy0AJYOAyCCLA= -github.com/chainreactors/words v0.3.2-0.20221210163218-dc834b0519bc h1:VBKKX6Uc6pJA9ST48m1p6H8V2mm1UIypIboFBaGNbMY= -github.com/chainreactors/words v0.3.2-0.20221210163218-dc834b0519bc/go.mod h1:jRcFgafTKqdkd1+StzPCTJG1ESrZHluXEO2eERdHBMQ= +github.com/chainreactors/parsers v0.2.9-0.20221210155102-cc0814762410 h1:K7EV0wtUuN6Rvh/MgqaBXyElD3guPsgNR5kF8nrV7iw= +github.com/chainreactors/parsers v0.2.9-0.20221210155102-cc0814762410/go.mod h1:Z9weht+lnFCk7UcwqFu6lXpS7u5vttiy0AJYOAyCCLA= github.com/chainreactors/words v0.3.2-0.20221212045930-0c976fe39aea h1:YQafXeVeh1uDH+tQEHJo12sICgJWPqaVvPtIQW7JN5A= github.com/chainreactors/words v0.3.2-0.20221212045930-0c976fe39aea/go.mod h1:jRcFgafTKqdkd1+StzPCTJG1ESrZHluXEO2eERdHBMQ= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -103,7 +99,11 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/internal/pool.go b/internal/pool.go index 564a54d..19bfb20 100644 --- a/internal/pool.go +++ b/internal/pool.go @@ -392,7 +392,7 @@ func (pool *Pool) BaseCompare(bl *pkg.Baseline) bool { bl.Collect() for _, f := range bl.Frameworks { - if f.Tag == "waf" || f.Tag == "cdn" { + if f.HasTag("waf") || f.HasTag("cdn") { pool.Statistor.WafedNumber++ bl.Reason = ErrWaf.Error() return false diff --git a/internal/runner.go b/internal/runner.go index 2462ee4..28ad82c 100644 --- a/internal/runner.go +++ b/internal/runner.go @@ -134,7 +134,7 @@ func (r *Runner) Prepare(ctx context.Context) error { r.Pools, err = ants.NewPoolWithFunc(r.PoolSize, func(i interface{}) { t := i.(*Task) - if t.origin.End == t.origin.Total { + if t.origin != nil && t.origin.End == t.origin.Total { r.StatFile.SafeWrite(t.origin.Json()) r.Done() return diff --git a/pkg/templates_gen.go b/pkg/templates_gen.go deleted file mode 100644 index 2bde9f3..0000000 --- a/pkg/templates_gen.go +++ /dev/null @@ -1,116 +0,0 @@ -//go:build ignore -// +build ignore - -package main - -import ( - "encoding/json" - "fmt" - "github.com/chainreactors/files" - "github.com/chainreactors/parsers" - "io" - "os" - "path/filepath" - "sigs.k8s.io/yaml" -) - -func Encode(input []byte) string { - return parsers.Base64Encode(files.Flate(input)) -} - -func loadYamlFile2JsonString(filename string) string { - var err error - file, err := os.Open("templates/" + filename) - if err != nil { - panic(err.Error()) - } - - bs, _ := io.ReadAll(file) - jsonstr, err := yaml.YAMLToJSON(bs) - if err != nil { - panic(filename + err.Error()) - } - - return Encode(jsonstr) -} - -func visit(files *[]string) filepath.WalkFunc { - return func(path string, info os.FileInfo, err error) error { - if err != nil { - panic(err) - } - if !info.IsDir() { - *files = append(*files, path) - } - return nil - } -} - -func recuLoadYamlFiles2JsonString(dir string, single bool) string { - var files []string - err := filepath.Walk("templates/"+dir, visit(&files)) - if err != nil { - panic(err) - } - var pocs []interface{} - for _, file := range files { - var tmp interface{} - bs, err := os.ReadFile(file) - if err != nil { - panic(err) - } - - err = yaml.Unmarshal(bs, &tmp) - if err != nil { - print(file) - panic(err) - } - - if tmp == nil { - continue - } - - if single { - pocs = append(pocs, tmp) - } else { - pocs = append(pocs, tmp.([]interface{})...) - } - - } - - jsonstr, err := json.Marshal(pocs) - if err != nil { - panic(err) - } - - return Encode(jsonstr) -} - -func main() { - template := `package pkg - -import ( - "github.com/chainreactors/files" - "github.com/chainreactors/parsers" -) - -func LoadConfig(typ string) []byte { - if typ == "http" { - return files.UnFlate(parsers.Base64Decode("%s")) - } - return []byte{} -} - -` - template = fmt.Sprintf(template, - recuLoadYamlFiles2JsonString("fingers/http", false), - ) - f, err := os.OpenFile("pkg/templates.go", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) - if err != nil { - panic(err) - } - f.WriteString(template) - f.Sync() - f.Close() - println("generate templates.go successfully") -} diff --git a/pkg/types.go b/pkg/types.go index 0ae34ee..396f26b 100644 --- a/pkg/types.go +++ b/pkg/types.go @@ -11,7 +11,7 @@ type Frameworks []*parsers.Framework func (fs Frameworks) String() string { frameworkStrs := make([]string, len(fs)) for i, f := range fs { - frameworkStrs[i] = " [" + f.ToString() + "]" + frameworkStrs[i] = " [" + f.String() + "]" } return strings.Join(frameworkStrs, " ") + " " } diff --git a/spray.go b/spray.go index ee0f287..73ab69b 100644 --- a/spray.go +++ b/spray.go @@ -1,4 +1,4 @@ -//go:generate go run pkg/templates_gen.go +//go:generate go run templates/templates_gen.go -t templates -o pkg/templates.go -need http package main import "github.com/chainreactors/spray/cmd"