[fix] JS脚本执行异常捕获

Signed-off-by: PandaX <18610165312@163.com>
This commit is contained in:
PandaX
2025-02-27 02:29:20 +00:00
committed by Gitee
parent fb8ff40f7c
commit ca043f207c

View File

@@ -29,10 +29,16 @@ func NewScriptEngine(msg message.Message, fun string, script string) ScriptEngin
}
}
func (bse *baseScriptEngine) ScriptOnMessage() (*message.Message, error) {
func (bse *baseScriptEngine) ScriptOnMessage() (*message.Message,error) {
var err error
defer func() {
if caught := recover(); caught != nil {
err = fmt.Errorf("%s", caught)
}
}()
msg := bse.Msg
vm := goja.New()
_, err := vm.RunString(bse.Script)
_, err = vm.RunString(bse.Script)
if err != nil {
logrus.Info("JS代码有问题")
return nil, err
@@ -51,9 +57,15 @@ func (bse *baseScriptEngine) ScriptOnMessage() (*message.Message, error) {
}
func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, error) {
var err error
defer func() {
if caught := recover(); caught != nil {
err = fmt.Errorf("%s", caught)
}
}()
msg := bse.Msg
vm := goja.New()
_, err := vm.RunString(bse.Script)
_, err = vm.RunString(bse.Script)
if err != nil {
logrus.Info("JS代码有问题")
return nil, err
@@ -69,9 +81,15 @@ func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, error) {
}
func (bse *baseScriptEngine) ScriptOnFilter() (bool, error) {
var err error
defer func() {
if caught := recover(); caught != nil {
err = fmt.Errorf("%s", caught)
}
}()
msg := bse.Msg
vm := goja.New()
_, err := vm.RunString(bse.Script)
_, err = vm.RunString(bse.Script)
if err != nil {
logrus.Info("JS代码有问题")
return false, err
@@ -87,9 +105,15 @@ func (bse *baseScriptEngine) ScriptOnFilter() (bool, error) {
}
func (bse *baseScriptEngine) ScriptToString() (string, error) {
var err error
defer func() {
if caught := recover(); caught != nil {
err = fmt.Errorf("%s", caught)
}
}()
msg := bse.Msg
vm := goja.New()
_, err := vm.RunString(bse.Script)
_, err = vm.RunString(bse.Script)
if err != nil {
logrus.Info("JS代码有问题")
return "", err
@@ -105,9 +129,15 @@ func (bse *baseScriptEngine) ScriptToString() (string, error) {
}
func (bse *baseScriptEngine) ScriptGenerate() (map[string]interface{}, error) {
var err error
defer func() {
if caught := recover(); caught != nil {
err = fmt.Errorf("%s", caught)
}
}()
msg := bse.Msg
vm := goja.New()
_, err := vm.RunString(bse.Script)
_, err = vm.RunString(bse.Script)
if err != nil {
logrus.Info("JS代码有问题")
return nil, err