Valerio Casalino ec5687e2ef
Make the SSH client used in javascript templates able to execute custom commands (#4407)
* 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>
2023-11-24 00:07:45 +05:30

48 lines
1.2 KiB
Cheetah

package {{.PackageName}}
{{$pkgName:=(printf "lib_%s" .PackageName) -}}
import (
{{$pkgName}} "{{.PackagePath}}"
"github.com/dop251/goja"
"github.com/projectdiscovery/nuclei/v3/pkg/js/gojs"
)
var (
module = gojs.NewGojaModule("nuclei/{{.PackageName}}")
)
func init() {
module.Set(
gojs.Objects{
{{- $pkgFuncs:=.PackageFuncs}}
// Functions
{{- range $objName, $objDefine := .PackageFuncs}}
"{{$objName}}": {{$pkgName}}.{{$objDefine}},
{{- end}}
// Var and consts
{{- range $objName, $objDefine := .PackageVars}}
"{{$objName}}": {{$pkgName}}.{{$objDefine}},
{{- end}}
// Types (value type)
{{- range $objName, $objDefine := .PackageTypes}}
"{{$objName}}": {{printf "func() %s.%s { return %s.%s{} }" $pkgName $objDefine $pkgName $objDefine}},
{{- end}}
// Types (pointer type)
{{range $objName, $objDefine := .PackageTypes}}
{{- $newObjName := printf "%s%s" "New" $objName -}}
{{- if not (exist $pkgFuncs $newObjName) -}}
"{{$newObjName}}": {{printf "func() *%s.%s { return &%s.%s{} }" $pkgName $objDefine $pkgName $objDefine}},
{{end -}}
{{- end -}}
},
).Register()
}
func Enable(runtime *goja.Runtime) {
module.Enable(runtime)
}