From 34726c31ff2dd5ab3cbd0e9a76254f130cfc9323 Mon Sep 17 00:00:00 2001 From: PandaGoAdmin <18610165312@163.com> Date: Wed, 22 Mar 2023 08:17:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 2 +- pkg/rule_engine/nodes/script_engine.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 2c9a3f8..9ff3d4b 100644 --- a/main.go +++ b/main.go @@ -65,7 +65,7 @@ var rootCmd = &cobra.Command{ <-stop if err := app.Stop(context.TODO()); err != nil { - log.Fatal("fatal app stop: %s", err) + log.Fatalf("fatal app stop: %s", err) os.Exit(-3) } }, diff --git a/pkg/rule_engine/nodes/script_engine.go b/pkg/rule_engine/nodes/script_engine.go index 27ddd09..260b146 100644 --- a/pkg/rule_engine/nodes/script_engine.go +++ b/pkg/rule_engine/nodes/script_engine.go @@ -45,8 +45,20 @@ func (bse *baseScriptEngine) ScriptOnSwitch(msg message.Message, script string) } func (bse *baseScriptEngine) ScriptOnFilter(msg message.Message, script string) (bool, error) { - - return false, nil + vm := goja.New() + _, err := vm.RunString(script) + if err != nil { + logrus.Info("JS代码有问题") + return false, err + } + var fn func(message.Message, message.Metadata, string) bool + err = vm.ExportTo(vm.Get("Filter"), &fn) + if err != nil { + logrus.Info("Js函数映射到 Go 函数失败!") + return false, err + } + datas := fn(msg, msg.GetMetadata(), msg.GetType()) + return datas, nil } func (bse *baseScriptEngine) ScriptToString(msg message.Message, script string) (string, error) {