mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-28 05:35:28 +00:00
* make ssh module store the connection * make ssh module able to execute commands using the client * add bingen + update docs --------- Co-authored-by: Tarun Koyalwar <tarun@projectdiscovery.io>
77 lines
2.2 KiB
Go
77 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"path"
|
|
"path/filepath"
|
|
|
|
"github.com/pkg/errors"
|
|
generator "github.com/projectdiscovery/nuclei/v3/pkg/js/devtools/bindgen"
|
|
fileutil "github.com/projectdiscovery/utils/file"
|
|
)
|
|
|
|
var (
|
|
dir string
|
|
generatedDir string
|
|
targetModules string
|
|
)
|
|
|
|
func main() {
|
|
flag.StringVar(&dir, "dir", "libs", "directory to process")
|
|
flag.StringVar(&generatedDir, "out", "generated", "directory to output generated files")
|
|
flag.StringVar(&targetModules, "target", "", "target modules to generate")
|
|
flag.Parse()
|
|
log.SetFlags(0)
|
|
if !fileutil.FolderExists(dir) {
|
|
log.Fatalf("directory %s does not exist", dir)
|
|
}
|
|
if err := process(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func process() error {
|
|
modules, err := generator.GetLibraryModules(dir)
|
|
if err != nil {
|
|
return errors.Wrap(err, "could not get library modules")
|
|
}
|
|
if len(modules) == 0 && fileutil.FolderExists(dir) {
|
|
// if no modules are found, then given directory is the module itself
|
|
targetModules = path.Base(dir)
|
|
modules = append(modules, targetModules)
|
|
dir = filepath.Dir(dir)
|
|
}
|
|
for _, module := range modules {
|
|
log.Printf("[module] Generating %s", module)
|
|
|
|
data, err := generator.CreateTemplateData(filepath.Join(dir, module), "github.com/projectdiscovery/nuclei/v3/pkg/js/libs/")
|
|
if err != nil {
|
|
return fmt.Errorf("could not create template data: %v", err)
|
|
}
|
|
|
|
prefixed := "lib" + module
|
|
err = data.WriteJSTemplate(filepath.Join(generatedDir, "js/"+prefixed), module)
|
|
if err != nil {
|
|
return fmt.Errorf("could not write js template: %v", err)
|
|
}
|
|
err = data.WriteGoTemplate(path.Join(generatedDir, "go/"+prefixed), module)
|
|
if err != nil {
|
|
return fmt.Errorf("could not write go template: %v", err)
|
|
}
|
|
// disabled for now since we have static website for docs
|
|
// err = data.WriteMarkdownLibraryDocumentation(path.Join(generatedDir, "markdown/"), module)
|
|
// if err != nil {
|
|
// return fmt.Errorf("could not write markdown template: %v", err)
|
|
// }
|
|
|
|
// err = data.WriteMarkdownIndexTemplate(path.Join(generatedDir, "markdown/"))
|
|
// if err != nil {
|
|
// return fmt.Errorf("could not write markdown index template: %v", err)
|
|
// }
|
|
data.InitNativeScripts()
|
|
}
|
|
return nil
|
|
}
|