From ca043f207c63fe90f8a571cc9d23198492507e25 Mon Sep 17 00:00:00 2001 From: PandaX <18610165312@163.com> Date: Thu, 27 Feb 2025 02:29:20 +0000 Subject: [PATCH] =?UTF-8?q?[fix]=20JS=E8=84=9A=E6=9C=AC=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8D=95=E8=8E=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: PandaX <18610165312@163.com> --- pkg/rule_engine/nodes/script_engine.go | 42 ++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/pkg/rule_engine/nodes/script_engine.go b/pkg/rule_engine/nodes/script_engine.go index 63ae1ae..4c0caad 100644 --- a/pkg/rule_engine/nodes/script_engine.go +++ b/pkg/rule_engine/nodes/script_engine.go @@ -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