Mark the custom edit_on_github extension as safe for parallel
reading/writing and forward GNU make's -j to sphinx-build. This removes
the Sphinx warning and allows true parallel docs builds.
Changes
- doc/source/_ext/edit_on_github.py: setup() now returns
parallel_read_safe=True and parallel_write_safe=True (plus version).
- doc/Makefile: if SPHINXOPTS lacks -j, propagate -jN from MAKEFLAGS to
sphinx-build. Bare "-j" maps to "-j auto". Respects explicit -j in
SPHINXOPTS.
Fixes: https://github.com/rsyslog/rsyslog/issues/6254
Co-authored-by: alorbach <alorbach@adiscon.com>
Building documentation from the dist tarball failed with a RuntimeError
("git executable not found") thrown during Sphinx startup. The helper
module hard-required git even when no .git repo is present.
This change replaces the hard requirement with a safe wrapper that
returns placeholders when git or a repository is unavailable. This lets
Sphinx complete when building from release/dist sources, while keeping
dev builds unchanged.
Details:
- conf_helpers.py: introduce _run_git(); return 'unknown'/'nogit' for
branch/commit and '0.0' for tag-derived versions when git is absent.
- Harden next-version parsing for non-git environments.
- conf.py already guards dev-only dynamic strings behind .git presence.
Fixes: https://github.com/rsyslog/rsyslog/issues/6253
Co-authored-by: alorbach <alorbach@adiscon.com>
* Updates for actions.rst, cryprov_gcry.rst, cryprov_ossl.rst, and dyn_stats.rst
Minor fix so that RainerScript has the same exact spelling in all documentation
Update cryprov_ossl.rst
Fixing spelling and typing mistakes
Update cryprov_gcry.rst
A minor fix for the case of the "algorithms" word and unnecessary an article has been removed.
Update actions.rst
A couple of typing mistakes are fixed in actions.rst.
* Update doc/source/configuration/cryprov_ossl.rst
* imklog: split parameter docs into reference pages
- moved module parameter descriptions into dedicated reference files with scope-correct anchors
- replaced inline parameter blocks with a summary list-table and added a hidden toctree
- preserved legacy directives and updated examples to camelCase per policy
With help of AI-Agent: ChatGPT
* imkafka: split parameter docs into reference pages
- create parameter reference pages for Broker, Topic, ConfParam, ConsumerGroup, Ruleset, and ParseHostname
- replace inline parameter tables with summary list-table and include the casing guidance note
- add a hidden toctree for the new parameter documentation files
With AI-Agent: ChatGPT
* imgssapi: split parameter docs into reference pages
* split legacy imgssapi input parameters into dedicated reference files with usage, metadata, and legacy directives
* replace inline parameter tables on the module page with a summary list-table, refreshed case-sensitivity note, and a hidden toctree linking the new parameter docs
AI-Agent: ChatGPT
Ensure osslChkPeerAuth starts with a null peer-certificate pointer and
frees any retrieved X509 certificate so OpenSSL allocations from
SSL_get_peer_certificate do not leak after TLS handshakes.
Add a new "Agent Chat Keywords" section documenting FINISH and
SUMMARIZE codewords to standardize agent end-of-session actions.
FINISH: review all changes.
SUMMARIZE: produce ready-to-copy PR and squashed commit summaries.
Doc-only change; no runtime or test impact.
Prevents potential crashes when logging connection failures where peer
name or IP information is unavailable.
The compiler detected a potential null pointer dereference in the
addSess() error cleanup path. When NULL_CHECK() macros fail and jump to
finalize_it, the peerName and peerIP parameters could be NULL but were
passed directly to propGetSzStr() in LogError().
Original error: ../../runtime/prop.h:66:18: error: potential null
pointer dereference [-Werror=null-dereference] 66 | return
(pThis->len < CONF_PROP_BUFSIZE) ? pThis->szVal.sz : pThis->szVal.psz; |
~~~~~^~~~~
Rename the Snare Windows Security parser module from "mmsnarewinsec"
to "mmsnareparse" for clearer naming and consistency with other parser
modules. Update code identifiers, build system, docs, tests, CI flags,
and paths accordingly.
What changed
- MODULE_CNFNAME set to "mmsnareparse"; default macro renamed
- Log/error/debug tags updated to "mmsnareparse"
- plugins/mmsnarewinsec/* moved to plugins/mmsnareparse/*
- configure.ac:
- add --enable-mmsnareparse
- AM_CONDITIONAL(ENABLE_MMSNAREPARSE)
- AC_CONFIG_FILES now includes plugins/mmsnareparse/Makefile
- Makefile.am subdir switch to plugins/mmsnareparse
- Tests renamed and updated (scripts and testsuites directory)
- Docs page renamed and examples updated
- CI workflow uses --enable-mmsnareparse
- Rebase to main; resolved configure.ac conflict
Impact
- Backwards-incompatible module name and configure flag changes.
Migration
- Config: module(load="mmsnareparse"), action(type="mmsnareparse")
- Build: use --enable-mmsnareparse
Co-authored-by: alorbach <alorbach@adiscon.com>
- replace placeholder hostnames with example.net values and show a realistic TCP port value\n- expand the surrounding explanation so readers understand when omfwd falls back to its default port and how independent queues behave\n\nAI-Agent: ChatGPT
This tool requires rsyslog to build with TLS support. If not present,
the test will always fail. This is solved by executing it only if gnutls
is enabled. As this is a fequently tested environment, this does not
reduce test coverage. It is easier to do then checking for both gnutls
and openssl.
Many thanks to Michael Biebl for bringing this to our attention.
closes https://github.com/rsyslog/rsyslog/issues/6224
Switch the database tutorial to reference list-based templates and document libdbi as the generic plugin example. Update the priority recording tutorial to demonstrate list templates and reiterate how property() and constant() map to property replacer behavior.
AI-Agent: ChatGPT
Replace the retry-count loop with a deadline-based poll so the helper\nfails after a sensible timeout instead of hanging when impstats stops\nemitting metrics. Use a longer default window for the Valgrind variant\nso it tolerates the slower runtime.\n\nAI-Agent: ChatGPT
Plain JSON embedded in text is common in production logs. This change
lets users parse such logs without cookies, improving ease of use and
lowering onboarding friction while keeping legacy behavior intact.
Before/After: cookie-only JSON -> find-json parses first top-level {}.
Impact: Default behavior unchanged. New mode and counters are opt-in.
Technical details:
- Add action parameter `mode` with `cookie` (default) and `find-json`.
The new mode scans for the first `{` and uses json_tokener to validate
a complete top-level object; quotes/escapes are respected.
- Add `max_scan_bytes` (default 65536) to bound scanning work and
`allow_trailing` (default on) to accept or reject non-whitespace data
after the parsed object. On reject/fail we return RS_RET_NO_CEE_MSG and
fall back to {"msg":"..."} while preserving parsesuccess semantics.
- Expose per-worker scan counters via statsobj/impstats and rsyslogctl:
scan.attempted, scan.found, scan.failed, scan.truncated. Counters are
active only in find-json mode and are resettable.
- Use length-aware cookie parsing (getMSG/getMSGLen) and keep legacy
RS_RET codes. Cookie mode behavior remains unchanged.
- Update docs: module overview, parameter references, statistics section
(impstats usage), and examples incl. mixed-mode routing. Add developer
engine overview page.
- Add tests for basic scanning, trailing control, scan limit, invalid
JSON, invalid mode, and parser validation edge cases.
With the help of AI Agent: Copilot