[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

@@ -30,9 +30,15 @@ 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 msg := bse.Msg
vm := goja.New() vm := goja.New()
_, err := vm.RunString(bse.Script) _, err = vm.RunString(bse.Script)
if err != nil { if err != nil {
logrus.Info("JS代码有问题") logrus.Info("JS代码有问题")
return nil, err return nil, err
@@ -51,9 +57,15 @@ func (bse *baseScriptEngine) ScriptOnMessage() (*message.Message, error) {
} }
func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, 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 msg := bse.Msg
vm := goja.New() vm := goja.New()
_, err := vm.RunString(bse.Script) _, err = vm.RunString(bse.Script)
if err != nil { if err != nil {
logrus.Info("JS代码有问题") logrus.Info("JS代码有问题")
return nil, err return nil, err
@@ -69,9 +81,15 @@ func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, error) {
} }
func (bse *baseScriptEngine) ScriptOnFilter() (bool, 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 msg := bse.Msg
vm := goja.New() vm := goja.New()
_, err := vm.RunString(bse.Script) _, err = vm.RunString(bse.Script)
if err != nil { if err != nil {
logrus.Info("JS代码有问题") logrus.Info("JS代码有问题")
return false, err return false, err
@@ -87,9 +105,15 @@ func (bse *baseScriptEngine) ScriptOnFilter() (bool, error) {
} }
func (bse *baseScriptEngine) ScriptToString() (string, 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 msg := bse.Msg
vm := goja.New() vm := goja.New()
_, err := vm.RunString(bse.Script) _, err = vm.RunString(bse.Script)
if err != nil { if err != nil {
logrus.Info("JS代码有问题") logrus.Info("JS代码有问题")
return "", err return "", err
@@ -105,9 +129,15 @@ func (bse *baseScriptEngine) ScriptToString() (string, error) {
} }
func (bse *baseScriptEngine) ScriptGenerate() (map[string]interface{}, 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 msg := bse.Msg
vm := goja.New() vm := goja.New()
_, err := vm.RunString(bse.Script) _, err = vm.RunString(bse.Script)
if err != nil { if err != nil {
logrus.Info("JS代码有问题") logrus.Info("JS代码有问题")
return nil, err return nil, err