Flowvar ####### ``suricata.flowvar`` 库向 Lua 脚本暴露流变量功能。 初始化 -------------- 首先需要加载 ``flowvar`` 库模块:: local flowvarlib = require("suricata.flowvar") 然后在 ``init`` 方法中注册脚本中要使用的所有流变量。此步骤是可选的,如果您确定该流变量会通过其他方式注册,则可以跳过。 示例:: local flowvarlib = require("suricata.flowvar") function init () flowvarlib.register("count") return {} end 最后,在 ``thread_init`` 函数中获取流变量的句柄并存储为全局变量:: function thread_init () count_flow_var = flowvarlib.get("count") end 流变量方法 --------------------- ``value()`` ^^^^^^^^^^^ 以字符串形式获取流变量的当前值。注意:如果流变量没有值,可能会返回 ``nil``。 ``set(value, len)`` ^^^^^^^^^^^^^^^^^^^ 将流变量的值设置为提供的值。必须同时提供值的长度。 示例 ------- :: local flowvarlib = require("suricata.flowvar") function init () flowvarlib.register("count") return {} end function thread_init () count_var = flowvarlib.get("count") end function match () local value = count_var:value() if value == nil then -- 将初始值设为1 value = tostring(1) count_var:set(value, #value) else value = tostring(tonumber(value) + 1) count_var:set(value, #value) fi -- 根据自定义逻辑返回1或0 return 1 end