mirror of
https://github.com/chainreactors/spray.git
synced 2025-09-15 19:50:18 +00:00
添加templates以及templates generator
This commit is contained in:
parent
6cc0a71dae
commit
e88d780e81
@ -1,4 +1,4 @@
|
|||||||
package main
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
"github.com/jessevdk/go-flags"
|
"github.com/jessevdk/go-flags"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func Spray() {
|
||||||
var option internal.Option
|
var option internal.Option
|
||||||
parser := flags.NewParser(&option, flags.Default)
|
parser := flags.NewParser(&option, flags.Default)
|
||||||
_, err := parser.Parse()
|
_, err := parser.Parse()
|
13
internal/templates.go
Normal file
13
internal/templates.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/chainreactors/files"
|
||||||
|
"github.com/chainreactors/parsers"
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadConfig(typ string) []byte {
|
||||||
|
if typ == "http" {
|
||||||
|
return files.UnFlate(parsers.Base64Decode(""))
|
||||||
|
}
|
||||||
|
return []byte{}
|
||||||
|
}
|
116
internal/templates_gen.go
Normal file
116
internal/templates_gen.go
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
//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 internal
|
||||||
|
|
||||||
|
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("internal/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")
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user