Commit Graph

2 Commits (c794e7a7ee1eb29ebc1ad60808abf93a926aebf1)

Author SHA1 Message Date
Samaresh Kumar Singh 84a90873e9 conf-yaml: support glob patterns in include directive
SCConfYamlHandleInclude only accepted explicit filenames. The
rule-files directive has supported shell-style glob expansion via
glob(3) for years, and asymmetry with include has been blocking
clean drop-in conf.d/ style configuration directories.

Refactor SCConfYamlHandleInclude into a thin wrapper that resolves
the path against conf_dirname and, if the input contains glob
metacharacters (*, ?, [), expands it with glob(3) and includes
each match in lexicographic order. A pattern that matches no
files is logged as a warning and not treated as an error, so a
drop-in directory can be empty without breaking startup. Literal
paths skip glob() and call the existing per-file inclusion logic
directly, preserving current behaviour.

Glob expansion needs glob(3), which is not available everywhere.
Windows builds have no glob.h, so an include pattern used to fall
through and be opened as a literal filename, failing with a
confusing errno. On such platforms the pattern is now logged as a
warning and skipped instead. Literal includes are unaffected.

The behaviour is verified by the config-includes-glob-order
suricata-verify test, which checks that every file matching a
pattern is loaded and that matches are included in deterministic
lexicographic order.

Document the new behaviour, including the platform limitation, in
doc/userguide/configuration/includes.rst.

Feature: #8427.
2 months ago
Jason Ish 5af73b3879 doc/userguide: document include files
Document how to use include files, plus add a deprecation notice on
the use of multiple "include" statements.
3 years ago