RuleGo RuleGo
🏠Home
  • Quick Start
  • Rule Chain
  • Standard Components
  • Extension Components
  • Custom Components
  • Visualization
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • Trigger
  • Advanced Topics
  • Performance
  • Standard Components
  • Extension Components
  • Custom Components
  • Components Marketplace
  • Overview
  • Quick Start
  • Routing
  • DSL
  • API
  • Options
  • Components
🔥Editor (opens new window)
  • RuleGo Editor (opens new window)
  • RuleGo Server (opens new window)
  • Github (opens new window)
  • Gitee (opens new window)
  • Changelog (opens new window)
  • English
  • 简体中文
🏠Home
  • Quick Start
  • Rule Chain
  • Standard Components
  • Extension Components
  • Custom Components
  • Visualization
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • Trigger
  • Advanced Topics
  • Performance
  • Standard Components
  • Extension Components
  • Custom Components
  • Components Marketplace
  • Overview
  • Quick Start
  • Routing
  • DSL
  • API
  • Options
  • Components
🔥Editor (opens new window)
  • RuleGo Editor (opens new window)
  • RuleGo Server (opens new window)
  • Github (opens new window)
  • Gitee (opens new window)
  • Changelog (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • Quick Start

  • Rule Chain

  • Standard Components

  • Extension Components

    • Extension Components Overview
    • filter

      • luaFilter
        • Configuration
        • Relation Type
        • Execution Result
        • Configuration Example
        • Custom Functions
        • Loading Lua Modules
    • transform

    • external

    • ai

    • ci

    • IoT

  • Custom Components

  • Components marketplace

  • Visualization

  • AOP

  • Trigger

  • Advanced Topic

  • RuleGo-Server

  • FAQ

  • Endpoint Module

  • Support

目录

luaFilter

luaFilter component: lua script filter. It can use Lua script to filter msg, metadata, and msgType. Route to True or False chain based on script return value.You can also load lua third-party libraries to perform advanced operations such as encryption, decryption, I/O, network, file, etc.

Advanced operations such as encryption and decryption, I/O, network, and file need to be enabled by setting: config.Properties.PutValue(luaEngine.LoadLuaLibs, "true")

Lua script supports Lua 5.1 syntax specification, please refer to gopher-lua (opens new window).

# Configuration

Field Type Description Default
script string lua script, or lua script file path with .lua suffix None
  • script: It can filter msg, metadata, and msgType. Only need to provide the function body content, if it is a file path, you need to provide the complete script function:

        function Filter(msg, metadata, msgType) 
            ${script} 
         end
    
    1
    2
    3
    • msg: message content, if dataType=JSON, you can use msg.temperature to operate. If dataType is other types, the field type is: string
    • metadata: message metadata, type: jsonObject
    • msgType: message type
    • Function return type: boolean, determine the connection relation (Relation Type) with the next node

# Relation Type

  • True: Send the message to the True chain
  • False: Send the message to the False chain
  • Failure: Execution failed, send the message to the Failure chain

# Execution Result

This component will not change the msg, metadata, and msgType content.

# Configuration Example

  {
    "id": "s1",
    "type": "x/luaFilter",
    "name": "Filter",
    "configuration": {
      "script": "return msg.temperature > 50"
    }
  }
1
2
3
4
5
6
7
8

# Custom Functions

You can register golang functions with config.RegisterUdf and use them in Lua scripts. The registration method and usage are the same as Js. For details, refer to Udf.

# Loading Lua Modules

You can extend Lua capabilities by loading Lua custom or third-party module libraries. Use the following method to register Lua modules to the engine:

import luaEngine "github.com/rulego/rulego-components/pkg/lua_engine"

luaEngine.Preloader.Register(func(state *lua.LState) {
	//load module
	//libs.Preload(state)
})
1
2
3
4
5
6

Creating a module by Go (opens new window)

In addition, the framework has built-in a large number of Lua third-party library modules. Use the following method to enable them, which are not loaded by default:

config.Properties.PutValue(luaEngine.LoadLuaLibs, "true")
1

After starting, you can perform advanced operations such as encryption/decryption, I/O, network, database, file, etc. The list of third-party libraries is:

  • argparse (opens new window) argparse CLI parsing https://github.com/luarocks/argparse (opens new window)
  • base64 (opens new window) encoding/base64 (opens new window) api
  • cloudwatch (opens new window) aws cloudwatch log access
  • cert_util (opens new window) monitoring ssl certs
  • chef (opens new window) chef client api
  • cmd (opens new window) cmd port
  • crypto (opens new window) calculate md5, sha256 hash for string
  • db (opens new window) access to databases
  • filepath (opens new window) path.filepath port
  • goos (opens new window) os port
  • http (opens new window) http.client && http.server
  • humanize (opens new window) humanize github.com/dustin/go-humanize (opens new window) port
  • inspect (opens new window) pretty print github.com/kikito/inspect.lua (opens new window)
  • ioutil (opens new window) io/ioutil port
  • json (opens new window) json implementation
  • log (opens new window) log port
  • plugin (opens new window) run lua code in lua code
  • pprof (opens new window) pprof http-server for golang from lua
  • prometheus (opens new window) prometheus exporter
  • regexp (opens new window) regexp port
  • runtime runtime port
  • pb (opens new window) https://github.com/cheggaaa/pb (opens new window) port (v3)
  • shellescape (opens new window) shellescape https://github.com/alessio/shellescape (opens new window) port
  • stats (opens new window) stats https://github.com/montanaflynn/stats (opens new window) port
  • storage (opens new window) package for store persist data and share values between lua states
  • strings (opens new window) strings port (utf supported)
  • tac (opens new window) tac line-by-line scanner (from end of file to up)
  • tcp (opens new window) raw tcp client lib
  • telegram (opens new window) telegram bot
  • template (opens new window) template engines
  • time (opens new window) time port
  • xmlpath (opens new window) gopkg.in/xmlpath.v2 (opens new window) port
  • yaml (opens new window) gopkg.in/yaml.v2 (opens new window) port
  • zabbix (opens new window) zabbix bot
Edit this page on GitHub (opens new window)
Last Updated: 2025/03/31, 01:52:11
Extension Components Overview
luaTransform

← Extension Components Overview luaTransform→

Theme by Vdoing | Copyright © 2023-2025 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式