diff --git a/flow-capture.service b/flow-capture.service new file mode 100644 index 0000000..546bddf --- /dev/null +++ b/flow-capture.service @@ -0,0 +1,13 @@ +[Unit] +Description=Flow-capture Capture Traffic Flow Data +After=network.target + +[Service] +User=flow-tools +Group=flow-tools +Type=simple +EnvironmentFile=-/etc/sysconfig/flow-capture +ExecStart=/usr/bin/flow-capture -D $OPTIONS + +[Install] +WantedBy=multi-user.target diff --git a/flow-tools-c99.patch b/flow-tools-c99.patch new file mode 100644 index 0000000..c9fd14e --- /dev/null +++ b/flow-tools-c99.patch @@ -0,0 +1,59 @@ +Add a new header file that provides function prototypes for flex/bison +integration. This avoids implicit function declarations and build +failures with future compilers. + +diff --git a/src/acllex.l b/src/acllex.l +index 74dd8882f2fed262..3ab5e3c0cd897f70 100644 +--- a/src/acllex.l ++++ b/src/acllex.l +@@ -11,6 +11,7 @@ + + #include "acl2.h" + #include "aclyacc.h" ++#include "aclparse.h" + %} + + byte ([0-9]+) +diff --git a/src/aclparse.h b/src/aclparse.h +new file mode 100644 +index 0000000000000000..f113fc26d7513042 +--- /dev/null ++++ b/src/aclparse.h +@@ -0,0 +1,3 @@ ++int yylex (void); ++void yyerror(const char *msg); ++int yyparse (void); +diff --git a/src/aclyacc.y b/src/aclyacc.y +index 60001b6e4c820271..711b7eb169b59aba 100644 +--- a/src/aclyacc.y ++++ b/src/aclyacc.y +@@ -2,6 +2,7 @@ + #include + #include "acl2.h" + #include /* XXX REMOVE */ ++#include "aclparse.h" + + /* XXX remove */ + unsigned char fmt_buf[32]; +diff --git a/src/flow-filter.c b/src/flow-filter.c +index 3c1bfea989b2a129..305e2ed4399ca33d 100644 +--- a/src/flow-filter.c ++++ b/src/flow-filter.c +@@ -47,6 +47,7 @@ + #endif + + #include "acl2.h" ++#include "aclparse.h" + + /* + * TODO +@@ -58,9 +59,7 @@ int ip_net_only; + + extern struct acl_list acl_list; + +-int yyparse (void); + void usage(void); +-void yyerror(const char *msg); + + extern FILE *yyin; + extern char *yytext; diff --git a/flow-tools-extern.patch b/flow-tools-extern.patch new file mode 100644 index 0000000..9c0afa9 --- /dev/null +++ b/flow-tools-extern.patch @@ -0,0 +1,12 @@ +diff -up flow-tools-0.68.5.1/src/flow-filter.c.extern flow-tools-0.68.5.1/src/flow-filter.c +--- flow-tools-0.68.5.1/src/flow-filter.c.extern 2008-01-27 13:48:55.000000000 -0700 ++++ flow-tools-0.68.5.1/src/flow-filter.c 2020-01-27 20:44:13.176636051 -0700 +@@ -56,7 +56,7 @@ + int debug; + int ip_net_only; + +-struct acl_list acl_list; ++extern struct acl_list acl_list; + + int yyparse (void); + void usage(void); diff --git a/flow-tools.spec b/flow-tools.spec index b294ac3..a6cf761 100644 --- a/flow-tools.spec +++ b/flow-tools.spec @@ -1,6 +1,10 @@ -%bcond_without fedora +# Does not support openssl 1.1 +%if 0%{?fedora} +%bcond_with openssl +%else +%bcond_without openssl +%endif -%global uid 40 %global username flow-tools %global homedir %{_localstatedir}/%{name} %global gecos "Network flow monitoring" @@ -8,23 +12,33 @@ Version: 0.68.5.1 Name: flow-tools Summary: Tool set for working with NetFlow data -Release: 1%{?dist} -Group: Applications/System -License: BSD +Release: 45%{?dist} +# Automatically converted from old format: BSD - review is highly recommended. +License: LicenseRef-Callaway-BSD URL: http://code.google.com/p/%{name}/ Source0: http://%{name}.googlecode.com/files/%{name}-%{version}.tar.bz2 -Source1: flow-capture.init +Source1: flow-capture.service Source2: flow-capture.sysconfig -BuildRequires: openssl-devel mysql-devel postgresql-devel zlib-devel -BuildRequires: bison flex tcp_wrappers-devel -BuildRequires: fedora-usermgmt-devel doxygen -%{?FE_USERADD_REQ} -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -Requires(post): initscripts chkconfig -Requires(preun): initscripts chkconfig -Requires(postun): initscripts -Provides: group(%username) = %uid -Provides: user(%username) = %uid +Patch0: flow-werror-fix.patch +# Fix extern usage +Patch1: flow-tools-extern.patch +Patch2: flow-tools-c99.patch + +BuildRequires: gcc +%if 0%{with openssl} +BuildRequires: openssl-devel +%endif +BuildRequires: mariadb-connector-c-devel +BuildRequires: libpq-devel +BuildRequires: zlib-devel +BuildRequires: bison +BuildRequires: flex +BuildRequires: doxygen +%if 0%{?fedora} >= 31 +BuildRequires: python3.12 +%endif +BuildRequires: systemd-rpm-macros +BuildRequires: make %description @@ -38,8 +52,8 @@ contributed and are included in the distribution. %package devel Summary: Development files for flow-tools -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} zlib-devel +Requires: %{name} = %{version}-%{release} +Requires: zlib-devel %description devel Flow-tools is library and a collection of programs used to collect, @@ -55,8 +69,12 @@ libft. %package rrdtool Summary: Scripts for flow-tools to build rrd graphs -Group: Applications/System -Requires: %{name} = %{version}-%{release} rrdtool-python +Requires: %{name} = %{version}-%{release} +%if 0%{?fedora} >= 31 +Requires: python3-rrdtool +%else +Requires: python2-rrdtool +%endif %description rrdtool Flow-tools is library and a collection of programs used to collect, @@ -72,7 +90,6 @@ from flow data. %package docs Summary: HTML and other redundant docs for flow-tools -Group: Applications/System Requires: %{name} = %{version}-%{release} %description docs @@ -87,61 +104,64 @@ contributed and are included in the distribution. This package contains additional documentation, such as man pages in html format. %prep -%setup -q +%autosetup -p1 +# Remove /bin/env deps +%if 0%{?fedora} >= 31 +sed -i '1s|^#!.*python|#!/usr/bin/python3|' bin/flow* +python3.12 -m lib2to3 --write --nobackups bin/flow* +%else +sed -i '1s|^#!.*python|#!/usr/bin/python2|' bin/flow* +%endif +sed -i '1s|^#!.*perl|#!/usr/bin/perl|' utils/* +# Fix mariadb-connector-c detection +sed -i s/my_init/mysql_init/g configure + +# Create a sysusers.d config file +cat >flow-tools.sysusers.conf </dev/null || : -%__fe_useradd %uid -r -s /sbin/nologin -d %homedir -M \ - -c '%gecos' -g %username %username &>/dev/null || : %post /sbin/ldconfig -/sbin/chkconfig --add flow-capture +%systemd_post flow-capture.service %preun -if [ $1 = 0 ]; then - /sbin/service flow-capture stop >/dev/null 2>&1 - /sbin/chkconfig --del flow-capture -fi +%systemd_preun flow-capture.service %postun -/sbin/ldconfig -if [ "$1" -ge "1" ]; then - /sbin/service flow-capture condrestart >/dev/null 2>&1 || : -fi - -%__fe_userdel %username &>/dev/null || : -%__fe_groupdel %username &>/dev/null || : +%systemd_postun flow-capture.service %files -%defattr(-,root,root) %doc README README.fork COPYING ChangeLog %{_mandir}/man1/flow-capture.1* %{_mandir}/man1/flow-cat.1* @@ -196,28 +216,165 @@ fi %config(noreplace) %{_sysconfdir}/%{name}/cfg/* %config(noreplace) %{_sysconfdir}/%{name}/sym/* %config(noreplace) %{_sysconfdir}/sysconfig/flow-capture -%{_initrddir}/flow-capture +%{_unitdir}/flow-capture.service %attr(-,flow-tools,flow-tools) %{_localstatedir}/%{name}/ %dir %{_datadir}/%{name}/ %{_datadir}/%{name}/* +%{_sysusersdir}/flow-tools.conf %files devel -%defattr(-,root,root,-) %{_libdir}/*.so %{_includedir}/*.h %files rrdtool -%defattr(-,root,root) %{_bindir}/flow-rpt2rrd %{_bindir}/flow-log2rrd %{_mandir}/man1/flow-rpt2rrd.1* %{_mandir}/man1/flow-log2rrd.1* %files docs -%defattr(-,root,root) %doc docs/*.html ChangeLog.old TODO INSTALL SECURITY %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 0.68.5.1-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 0.68.5.1-44 +- Add sysusers.d config file to allow rpm to create users/groups automatically + +* Thu Jan 16 2025 Fedora Release Engineering - 0.68.5.1-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Aug 28 2024 Miroslav Suchý - 0.68.5.1-42 +- convert license to SPDX + +* Wed Jul 17 2024 Fedora Release Engineering - 0.68.5.1-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 0.68.5.1-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 0.68.5.1-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 0.68.5.1-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Florian Weimer - 0.68.5.1-37 +- C99 compatibility fixes (#2162330) + +* Thu Jan 19 2023 Fedora Release Engineering - 0.68.5.1-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 0.68.5.1-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 0.68.5.1-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 0.68.5.1-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Feb 08 2021 Pavel Raiskup - 0.68.5.1-32 +- rebuild for libpq ABI fix rhbz#1908268 + +* Tue Jan 26 2021 Fedora Release Engineering - 0.68.5.1-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 0.68.5.1-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Orion Poplawski - 0.68.5.1-29 +- Add patch to fix extern usage for gcc 10 + +* Wed Aug 21 2019 Orion Poplawski - 0.68.5.1-28 +- Use python 3 for Fedora 31+ (bugz#1737952) + +* Tue Jul 30 2019 Orion Poplawski - 0.68.5.1-27 +- Fix systemd macro usage + +* Thu Jul 25 2019 Fedora Release Engineering - 0.68.5.1-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 0.68.5.1-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 0.68.5.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Feb 27 2018 Orion Poplawski - 0.68.5.1-23 +- Remove /bin/env deps (bug #1512889) +- Drop tcp_wrappers support (bug #1518764) +- Use mariadb-connector-c-devel (bug #1494095) +- Add BR gcc + +* Fri Feb 09 2018 Igor Gnatenko - 0.68.5.1-22 +- Escape macros in %%changelog + +* Wed Feb 07 2018 Fedora Release Engineering - 0.68.5.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 0.68.5.1-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.68.5.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Orion Poplawski - 0.68.5.1-19 +- Build with openssl support - does not work with openssl 1.1 + +* Fri Feb 10 2017 Fedora Release Engineering - 0.68.5.1-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 0.68.5.1-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 0.68.5.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Aug 16 2014 Fedora Release Engineering - 0.68.5.1-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jun 17 2014 Marcin Juszkiewicz - 0.68.5.1-14 +- fix syslog() calls to have string format + +* Sat Jun 07 2014 Fedora Release Engineering - 0.68.5.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Dec 21 2013 Paul Komkoff - 0.68.5.1-12 +- bz#850114 + +* Sat Sep 28 2013 Paul Komkoff - 0.68.5.1-11 +- Try to fix bz#1013218 as per https://fedoraproject.org/wiki/Packaging:UsersAndGroups + +* Fri Aug 23 2013 i@stingr.net - 0.68.5.1-10 +- Try to fix bz#929362 + +* Sat Aug 03 2013 Fedora Release Engineering - 0.68.5.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Apr 10 2013 Jon Ciesla - 0.68.5.1-8 +- Migrate from fedora-usermgmt to guideline scriptlets. + +* Wed Feb 13 2013 Fedora Release Engineering - 0.68.5.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 0.68.5.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Apr 24 2012 Jon Ciesla - 0.68.5.1-5 +- Migrate to systemd, BZ 767392. + +* Fri Jan 13 2012 Fedora Release Engineering - 0.68.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Mar 28 2011 Orion Poplawski - 0.68.5.1-3 +- Rebuild for new mysql +- Add LDFLAGS for mysql on 64-bit + +* Tue Feb 08 2011 Fedora Release Engineering - 0.68.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Fri Aug 27 2010 Paul P. Komkoff Jr - 0.68.5.1 - fix for EINTR while reading/writing in ftio. @@ -324,7 +481,7 @@ fi - simplify %%files - use more macros - change Group to Application/System -- own/create %{_localstatedir}/ft/ +- own/create %%{_localstatedir}/ft/ - add BR: autoconf - don't need generic INSTALL - mark config files as such @@ -338,10 +495,10 @@ fi - Make libft shared library - Split to plain/devel -* Fri Jan 7 2004 William Emmanuel S. Yu +* Fri Jan 9 2004 William Emmanuel S. Yu - updated RPM file for version 0.67 -* Tue Aug 8 2003 William Emmanuel S. Yu +* Tue Aug 5 2003 William Emmanuel S. Yu - fixed SQL bug - update flow-export documentation diff --git a/flow-werror-fix.patch b/flow-werror-fix.patch new file mode 100644 index 0000000..59b1349 --- /dev/null +++ b/flow-werror-fix.patch @@ -0,0 +1,49 @@ +diff --git a/lib/fterr.c b/lib/fterr.c +index 1bb5c89..5b47207 100644 +--- a/lib/fterr.c ++++ b/lib/fterr.c +@@ -112,7 +112,7 @@ void fterr_info(const char *fmt, ...) + fprintf(((fterr_file) ? fterr_file : stderr), "%s\n", buf2); + + if (fterr_flags & FTERR_SYSLOG) +- syslog(LOG_INFO, buf); ++ syslog(LOG_INFO, "%s", buf); + + } /* fterr_info */ + +@@ -134,7 +134,7 @@ void fterr_err(int code, const char *fmt, ...) + + if (fterr_flags & FTERR_SYSLOG) { + snprintf(buf2, 1024, "%s: %s", buf, strerror(errno)); +- syslog(LOG_INFO, buf2); ++ syslog(LOG_INFO, "%s", buf2); + } + + if (fterr_exit) +@@ -159,7 +159,7 @@ void fterr_errx(int code, const char *fmt, ...) + } + + if (fterr_flags & FTERR_SYSLOG) +- syslog(LOG_INFO, buf); ++ syslog(LOG_INFO, "%s", buf); + + if (fterr_exit) + fterr_exit(code); +@@ -183,7 +183,7 @@ void fterr_warnx(const char *fmt, ...) + } + + if (fterr_flags & FTERR_SYSLOG) +- syslog(LOG_INFO, buf); ++ syslog(LOG_INFO, "%s", buf); + + } /* fterr_warnx */ + +@@ -205,7 +205,7 @@ void fterr_warn(const char *fmt, ...) + + if (fterr_flags & FTERR_SYSLOG) { + snprintf(buf2, 1024, "%s: %s", buf, strerror(errno)); +- syslog(LOG_INFO, buf2); ++ syslog(LOG_INFO, "%s", buf2); + } + + } /* fterr_warn */