diff --git a/.gitignore b/.gitignore index c8548c8..f51584f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ SOURCES/qpid-proton-0.39.0.tar.gz -SOURCES/rsyslog-8.2412.0.tar.gz -SOURCES/rsyslog-doc-8.2412.0.tar.gz +SOURCES/rsyslog-8.2506.0.tar.gz +SOURCES/rsyslog-doc-8.2506.0.tar.gz diff --git a/.rsyslog.metadata b/.rsyslog.metadata index 41fee07..b1cc4f8 100644 --- a/.rsyslog.metadata +++ b/.rsyslog.metadata @@ -1,3 +1,3 @@ de593ff72792d70b9027dd67aaa2b830dc148574 SOURCES/qpid-proton-0.39.0.tar.gz -d2b48451c525a76a554acc3232605b67ee270aa9 SOURCES/rsyslog-8.2412.0.tar.gz -9b9e0379f368781b4bee17b2b117bf8234c4e9e6 SOURCES/rsyslog-doc-8.2412.0.tar.gz +67be4e7ccc309864c035c7dc1b982d126a1079f3 SOURCES/rsyslog-8.2506.0.tar.gz +f4f3ecd9ba870a747577c1873a53ca606fbba737 SOURCES/rsyslog-doc-8.2506.0.tar.gz diff --git a/SOURCES/imfile-delete-state-on-file-move.patch b/SOURCES/imfile-delete-state-on-file-move.patch new file mode 100644 index 0000000..ce8c2de --- /dev/null +++ b/SOURCES/imfile-delete-state-on-file-move.patch @@ -0,0 +1,101 @@ +diff -up a/plugins/imfile/imfile.c.orig b/plugins/imfile/imfile.c +--- a/plugins/imfile/imfile.c.orig 2025-07-29 15:54:35.659288215 +0200 ++++ b/plugins/imfile/imfile.c 2025-07-29 15:54:40.119329980 +0200 +@@ -157,6 +157,7 @@ struct instanceConf_s { + int readTimeout; + unsigned delay_perMsg; + sbool bRMStateOnDel; ++ sbool bRMStateOnMove; + uint8_t readMode; + uchar *startRegex; + uchar *endRegex; +@@ -253,6 +254,7 @@ struct modConfData_s { + instanceConf_t *root, *tail; + fs_node_t *conf_tree; + uint8_t opMode; ++ sbool bRMStateOnMove; + sbool configSetViaV2Method; + uchar *stateFileDirectory; + sbool sortFiles; +@@ -310,7 +312,8 @@ static struct cnfparamdescr modpdescr[] + { "sortfiles", eCmdHdlrBinary, 0 }, + { "statefile.directory", eCmdHdlrString, 0 }, + { "normalizepath", eCmdHdlrBinary, 0 }, +- { "mode", eCmdHdlrGetWord, 0 } ++ { "mode", eCmdHdlrGetWord, 0 }, ++ { "deletestateonfilemove", eCmdHdlrBinary, 0 }, + }; + static struct cnfparamblk modpblk = + { CNFPARAMBLK_VERSION, +@@ -350,7 +353,8 @@ static struct cnfparamdescr inppdescr[] + { "needparse", eCmdHdlrBinary, 0}, + { "ignoreolderthan", eCmdHdlrInt, 0}, + { "maxbytesperminute", eCmdHdlrInt, 0}, +- { "maxlinesperminute", eCmdHdlrInt, 0} ++ { "maxlinesperminute", eCmdHdlrInt, 0}, ++ { "deletestateonfilemove", eCmdHdlrBinary, 0} + }; + static struct cnfparamblk inppblk = + { CNFPARAMBLK_VERSION, +@@ -856,7 +860,7 @@ detect_updates(fs_edge_t *const edge) + */ + sbool is_file = act->edge->is_file; + if (!is_file || act->time_to_delete + FILE_DELETE_DELAY < ttNow) { +- DBGPRINTF("detect_updates obj gone away, unlinking: " ++ DBGPRINTF("detect_updates obj gone away, unlinking: " + "'%s', ttDelete: %"PRId64"s, ttNow:%"PRId64" isFile: %d\n", + act->name, (int64_t) ttNow - (act->time_to_delete + FILE_DELETE_DELAY), + (int64_t) ttNow, is_file); +@@ -1061,8 +1065,17 @@ act_obj_destroy(act_obj_t *const act, co + } + persistStrmState(act); + strm.Destruct(&act->pStrm); +- /* we delete state file after destruct in case strm obj initiated a write */ +- if(is_deleted && !act->in_move && inst->bRMStateOnDel) { ++ ++ /* ++ * We delete the state file after the destruct operation to ensure that any pending ++ * writes initiated by the stream object are completed before removal. The state file ++ * is deleted in the following scenarios: ++ * - If the file has not been moved and we are configured to delete the state file ++ * when the original file is removed. ++ * - If the configuration specifies not to preserve the state file after the file ++ * has been renamed. This prevents orphaned state files. ++ */ ++ if(is_deleted && ((!act->in_move && inst->bRMStateOnDel) || inst->bRMStateOnMove)) { + DBGPRINTF("act_obj_destroy: deleting state file %s\n", statefn); + unlink((char*)statefn); + } +@@ -1773,6 +1786,7 @@ createInstance(instanceConf_t **const pi + inst->discardTruncatedMsg = 0; + inst->msgDiscardingError = 1; + inst->bRMStateOnDel = 1; ++ inst->bRMStateOnMove = loadModConf->bRMStateOnMove; + inst->escapeLF = 1; + inst->escapeLFString = NULL; + inst->reopenOnTruncate = 0; +@@ -1932,6 +1946,7 @@ addInstance(void __attribute__((unused)) + inst->addMetadata = 0; + inst->addCeeTag = 0; + inst->bRMStateOnDel = 0; ++ inst->bRMStateOnMove = loadModConf->bRMStateOnMove; + inst->readTimeout = loadModConf->readTimeout; + inst->msgFlag = 0; + +@@ -2089,6 +2104,7 @@ CODESTARTbeginCnfLoad + /* init our settings */ + loadModConf->opMode = OPMODE_POLLING; + loadModConf->iPollInterval = DFLT_PollInterval; ++ loadModConf->bRMStateOnMove = 0; + loadModConf->configSetViaV2Method = 0; + loadModConf->readTimeout = 0; /* default: no timeout */ + loadModConf->timeoutGranularity = 1000; /* default: 1 second */ +@@ -2142,6 +2158,8 @@ CODESTARTsetModCnf + continue; + if(!strcmp(modpblk.descr[i].name, "pollinginterval")) { + loadModConf->iPollInterval = (int) pvals[i].val.d.n; ++ } else if(!strcmp(modpblk.descr[i].name, "deletestateonfilemove")) { ++ loadModConf->bRMStateOnMove = (sbool) pvals[i].val.d.n; + } else if(!strcmp(modpblk.descr[i].name, "readtimeout")) { + loadModConf->readTimeout = (int) pvals[i].val.d.n; + } else if(!strcmp(modpblk.descr[i].name, "timeoutgranularity")) { diff --git a/SOURCES/imfile-deleteStateOnFileMove.patch b/SOURCES/imfile-deleteStateOnFileMove.patch deleted file mode 100644 index 1c24241..0000000 --- a/SOURCES/imfile-deleteStateOnFileMove.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -up rsyslog-8.2412.0/plugins/imfile/imfile.c.orig rsyslog-8.2412.0/plugins/imfile/imfile.c ---- rsyslog-8.2412.0/plugins/imfile/imfile.c.orig 2024-12-06 13:42:53.855126447 +0100 -+++ rsyslog-8.2412.0/plugins/imfile/imfile.c 2024-12-06 13:44:43.990211090 +0100 -@@ -264,6 +264,7 @@ struct modConfData_s { - Must be manually reset to 0 if desired. Helper for - polling mode. - */ -+ sbool deleteStateOnFileMove; - }; - static modConfData_t *loadModConf = NULL;/* modConf ptr to use for the current load process */ - static modConfData_t *runModConf = NULL;/* modConf ptr to use for run process */ -@@ -2094,6 +2095,7 @@ CODESTARTbeginCnfLoad - loadModConf->timeoutGranularity = 1000; /* default: 1 second */ - loadModConf->haveReadTimeouts = 0; /* default: no timeout */ - loadModConf->normalizePath = 1; -+ loadModConf->deleteStateOnFileMove = 0; - loadModConf->sortFiles = GLOB_NOSORT; - loadModConf->stateFileDirectory = NULL; - loadModConf->conf_tree = calloc(1, sizeof(fs_node_t)); -@@ -2153,6 +2155,8 @@ CODESTARTsetModCnf - loadModConf->stateFileDirectory = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL); - } else if(!strcmp(modpblk.descr[i].name, "normalizepath")) { - loadModConf->normalizePath = (sbool) pvals[i].val.d.n; -+ } else if(!strcmp(modpblk.descr[i].name, "deletestateonfilemove")) { -+ loadModConf->deleteStateOnFileMove = (sbool) pvals[i].val.d.n; - } else if(!strcmp(modpblk.descr[i].name, "mode")) { - if(!es_strconstcmp(pvals[i].val.d.estr, "polling")) - loadModConf->opMode = OPMODE_POLLING; diff --git a/SOURCES/openssl-disable-engines.patch b/SOURCES/openssl-disable-engines.patch new file mode 100644 index 0000000..877f0a4 --- /dev/null +++ b/SOURCES/openssl-disable-engines.patch @@ -0,0 +1,62 @@ +diff --git a/plugins/imdtls/imdtls.c b/plugins/imdtls/imdtls.c +index f90e8ad61c..bfb63452c7 100644 +--- a/plugins/imdtls/imdtls.c ++++ b/plugins/imdtls/imdtls.c +@@ -41,7 +41,9 @@ + #if OPENSSL_VERSION_NUMBER >= 0x30000000L && !defined(LIBRESSL_VERSION_NUMBER) + # include + #endif +-#include ++#ifndef OPENSSL_NO_ENGINE ++# include ++#endif + // --- + + #include "rsyslog.h" +diff --git a/plugins/omdtls/omdtls.c b/plugins/omdtls/omdtls.c +index 2b28908030..693ff99c77 100644 +--- a/plugins/omdtls/omdtls.c ++++ b/plugins/omdtls/omdtls.c +@@ -52,7 +52,9 @@ + #if OPENSSL_VERSION_NUMBER >= 0x30000000L && !defined(LIBRESSL_VERSION_NUMBER) + # include + #endif +-#include ++#ifndef OPENSSL_NO_ENGINE ++# include ++#endif + // --- + + // Include rsyslog headers +diff --git a/runtime/net_ossl.h b/runtime/net_ossl.h +index af36ffe488..d66a422d4d 100644 +--- a/runtime/net_ossl.h ++++ b/runtime/net_ossl.h +@@ -31,7 +31,9 @@ + #if OPENSSL_VERSION_NUMBER >= 0x30000000L && !defined(LIBRESSL_VERSION_NUMBER) + # include + #endif +-#include ++#ifndef OPENSSL_NO_ENGINE ++# include ++#endif + #include + #include + +diff --git a/tests/tcpflood.c b/tests/tcpflood.c +index 4b2d98b2c8..7322aeb135 100644 +--- a/tests/tcpflood.c ++++ b/tests/tcpflood.c +@@ -129,8 +129,10 @@ + #ifdef ENABLE_OPENSSL + #include + #include +- #include +- #include ++ #include ++# ifndef OPENSSL_NO_ENGINE ++# include ++# endif + + /* OpenSSL API differences */ + #if OPENSSL_VERSION_NUMBER >= 0x10100000L diff --git a/SOURCES/rsyslog-tmpfiles.conf b/SOURCES/rsyslog-tmpfiles.conf new file mode 100644 index 0000000..1c82fd6 --- /dev/null +++ b/SOURCES/rsyslog-tmpfiles.conf @@ -0,0 +1 @@ +d /var/lib/rsyslog 0700 root root - - diff --git a/SPECS/rsyslog.spec b/SPECS/rsyslog.spec index dc660e9..4cacb41 100644 --- a/SPECS/rsyslog.spec +++ b/SPECS/rsyslog.spec @@ -1,12 +1,13 @@ %define rsyslog_statedir %{_sharedstatedir}/rsyslog %define rsyslog_pkidir %{_sysconfdir}/pki/rsyslog %define rsyslog_docdir %{_docdir}/rsyslog +%define qpid_proton_v 0.39.0 Summary: Enhanced system logging and kernel message trapping daemon Name: rsyslog -Version: 8.2412.0 -Release: 1%{?dist} -License: (GPLv3+ and ASL 2.0) +Version: 8.2506.0 +Release: 2%{?dist} +License: GPL-3.0-or-later AND Apache-2.0 URL: http://www.rsyslog.com/ Source0: http://www.rsyslog.com/files/download/rsyslog/%{name}-%{version}.tar.gz Source1: http://www.rsyslog.com/files/download/rsyslog/%{name}-doc-%{version}.tar.gz @@ -16,9 +17,11 @@ Source4: rsyslog.log Source5: rsyslog.service # Add qpid-proton as another source, enable omamqp1 module in a # separatae sub-package with it statically linked(see rhbz#1713427) -Source6: qpid-proton-0.39.0.tar.gz +Source6: https://archive.apache.org/dist/qpid/proton/%{qpid_proton_v}/qpid-proton-%{qpid_proton_v}.tar.gz +Source7: rsyslog-tmpfiles.conf -Patch0: imfile-deleteStateOnFileMove.patch +Patch0: openssl-disable-engines.patch +Patch1: imfile-delete-state-on-file-move.patch BuildRequires: make BuildRequires: gcc @@ -253,6 +256,7 @@ mv build doc # set up rsyslog sources %setup -q -D %patch -P 0 -p1 +%patch -P 1 -p1 # Unpack qpid-proton for rhel %setup -q -D -T -b 6 @@ -273,19 +277,18 @@ export CFLAGS="$RPM_OPT_FLAGS -fpic" %endif # build the proton first ( - cd %{_builddir}/qpid-proton-0.39.0 + cd %{_builddir}/qpid-proton-%{qpid_proton_v} mkdir bld cd bld # Need ENABLE_FUZZ_TESTING=NO to avoid a link failure - # Find python include dir and python library from - # https://stackoverflow.com/questions/24174394/cmake-is-not-able-to-find-python-libraries + # Modern approach for Python discovery in CMake cmake .. \ -DBUILD_BINDINGS="" \ -DBUILD_STATIC_LIBS=YES \ -DENABLE_FUZZ_TESTING=NO \ - -DPYTHON_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ - -DPYTHON_LIBRARY=$(python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \ + -DPython_FIND_STRATEGY=LOCATION \ + -DPython_ROOT_DIR=/usr \ -DCMAKE_AR="/usr/bin/gcc-ar" -DCMAKE_NM="/usr/bin/gcc-nm" -DCMAKE_RANLIB="/usr/bin/gcc-ranlib" make -j8 ) @@ -305,7 +308,7 @@ autoreconf -if --prefix=/usr \ --disable-static \ --disable-testbench \ - --enable-omamqp1 PROTON_LIBS="%{_builddir}/qpid-proton-0.39.0/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-0.39.0/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-0.39.0/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_CFLAGS="-I%{_builddir}/qpid-proton-0.39.0/bld/c/include" \ + --enable-omamqp1 PROTON_PROACTOR_LIBS="%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_PROACTOR_CFLAGS="-I%{_builddir}/qpid-proton-%{qpid_proton_v}/c/include -I%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/include" PROTON_LIBS="%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_CFLAGS="-I%{_builddir}/qpid-proton-%{qpid_proton_v}/c/include -I%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/include" \ --enable-elasticsearch \ --enable-generate-man-pages \ --enable-gnutls \ @@ -361,11 +364,13 @@ install -d -m 700 %{buildroot}%{rsyslog_statedir} install -d -m 700 %{buildroot}%{rsyslog_pkidir} install -d -m 755 %{buildroot}%{rsyslog_docdir}/html install -d -m 755 %{buildroot}%{_libexecdir}/%{name} +install -d -m 755 %{buildroot}%{_tmpfilesdir} install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/rsyslog.conf install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/rsyslog install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/rsyslog install -p -m 644 %{SOURCE5} %{buildroot}%{_unitdir}/rsyslog.service +install -p -m 644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/rsyslog.conf install -p -m 644 plugins/ommysql/createDB.sql %{buildroot}%{rsyslog_docdir}/mysql-createDB.sql install -p -m 644 plugins/ompgsql/createDB.sql %{buildroot}%{rsyslog_docdir}/pgsql-createDB.sql dos2unix tools/recover_qi.pl @@ -410,6 +415,7 @@ done %{_mandir}/man5/rsyslog.conf.5.gz %{_mandir}/man8/rsyslogd.8.gz %{_unitdir}/rsyslog.service +%{_tmpfilesdir}/rsyslog.conf %config(noreplace) %{_sysconfdir}/rsyslog.conf %config(noreplace) %{_sysconfdir}/sysconfig/rsyslog # plugins @@ -519,6 +525,23 @@ done %changelog +* Tue Jul 29 2025 Attila Lakatos 8.2506.0-2 +- imfile: reintroduce deleteStateOnFileMove parameter + Resolves: RHEL-92262 + +* Thu Jun 12 2025 Attila Lakatos - 8.2506.0-1 +- Rebase to 8.2506.0 +- imuxsock: track dropped messages by ratelimiting + Resolves: RHEL-66274 +- man page version update + Resolves: RHEL-78220 +- omfwd: do not hang forever in case of broken TLS handshake + Resolves: RHEL-67639 + +* Wed May 07 2025 Attila Lakatos - 8.2412.0-2 +- Add tmpfiles.d configuration + Resolves: RHEL-89982 + * Fri Dec 06 2024 Attila Lakatos - 8.2412.0-1 - Rebase to 8.2412.0 Resolves: RHEL-65177