Project

General

Profile

Actions

Optimization #4753

open

lua: fix inconsistency in the init "needs" key

Added by Juliana Fajardini Reichow over 3 years ago. Updated 14 days ago.

Status:
Assigned
Priority:
Normal
Assignee:
Target version:
Effort:
Difficulty:
Label:

Description

In Suricata, there's a difference in the usage of needs key, depending on whether one is writing a match or a log function in the lua scripts.
It is better to have the same behavior for both use cases.

Current behavior:
If one wants to use the log ability, the usage is:

function init (args)
    local needs = {}
    needs["protocol"] = "tls" 
    return needs
end

If one wants to write a match function in Lua scripts, then it must be:

function init(args)
    local needs = {}
    needs["tls"] = "true" 
    return needs
end

Real-life examples:
Example for match: https://github.com/OISF/suricata-verify/blob/master/tests/dns-lua-rules/test-rrname.lua Example for log: https://github.com/OISF/suricata-verify/blob/master/tests/lua-output-dns/test.lua

Expected behavior:
regardless of what function is being written, users should be able to use needs in the same way.


Related issues 6 (1 open5 closed)

Related to Suricata - Documentation #4725: Inconsistent "needs" key documentation for Lua functionsClosedJuliana Fajardini ReichowActions
Related to Suricata - Feature #7485: rules: allow specifying explicit hooksClosedVictor JulienActions
Related to Suricata - Task #7486: lua: turn flowvars into libClosedJason IshActions
Related to Suricata - Task #7487: lua: turn flowints into libClosedJason IshActions
Blocks Suricata - Story #7128: lua: sandboxed lua support with mimimum set of bindingsNewVictor JulienActions
Blocked by Suricata - Task #7492: lua: remove script_api_ver check from needs blockClosedVictor JulienActions
Actions #1

Updated by Juliana Fajardini Reichow over 3 years ago

  • Related to Documentation #4725: Inconsistent "needs" key documentation for Lua functions added
Actions #2

Updated by Juliana Fajardini Reichow over 3 years ago

  • Status changed from New to In Review

PR: https://github.com/OISF/suricata/pull/6480

(this PR is actually for the documentation, not for the change in the code itself)

Actions #3

Updated by Juliana Fajardini Reichow over 3 years ago

  • Status changed from In Review to Assigned
Actions #4

Updated by Victor Julien over 2 years ago

  • Target version changed from 7.0.0-beta1 to 8.0.0-beta1
Actions #5

Updated by Victor Julien over 1 year ago

  • Assignee changed from Juliana Fajardini Reichow to OISF Dev
Actions #6

Updated by Victor Julien over 1 year ago

  • Status changed from Assigned to New
  • Assignee changed from OISF Dev to Jo Johnson
Actions #7

Updated by Victor Julien about 1 year ago

  • Assignee changed from Jo Johnson to Jason Ish
Actions #8

Updated by Victor Julien 12 months ago

  • Subject changed from Fix inconsistency in Lua functions for the "needs" key to lua: fix inconsistency in the init "needs" key
Actions #9

Updated by Victor Julien 12 months ago

  • Blocks Story #7128: lua: sandboxed lua support with mimimum set of bindings added
Actions #10

Updated by Victor Julien 5 months ago

The idea of hooks as in #7485 will replace the hooks like registration the needs logic currently provides. This will allow the rule to control where the script is hooked in.

Actions #11

Updated by Victor Julien 5 months ago

  • Related to Feature #7485: rules: allow specifying explicit hooks added
Actions #12

Updated by Victor Julien 5 months ago

  • Related to Task #7486: lua: turn flowvars into lib added
Actions #13

Updated by Victor Julien 5 months ago

  • Related to Task #7487: lua: turn flowints into lib added
Actions #14

Updated by Victor Julien 5 months ago

  • Blocked by Task #7492: lua: remove script_api_ver check from needs block added
Actions #15

Updated by Jason Ish 3 months ago

  • Status changed from New to Assigned

As discussed, returning a table here can still make sense.

Make it consistent between output and rules.

Actions #16

Updated by Victor Julien 2 months ago

  • Target version changed from 8.0.0-beta1 to 8.0.0-rc1
Actions #17

Updated by Jason Ish 14 days ago ยท Edited

  • Target version changed from 8.0.0-rc1 to 8.0.0

Pushing back to 8.0.0 final. It is clear we still need this table returned in some cases, and I think its more of a documentation issue at this point.

We could also continue to make it better between rc1 and final, but keeping backwards compatibility, which should be simple and not messy.

Actions

Also available in: Atom PDF