From patchwork Mon Mar 8 11:57:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 3934 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384 client-signature ECDSA (P-384) client-digest SHA384) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4DvH3764tJz3wwp for ; Mon, 8 Mar 2021 12:00:19 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4DvH371mhCzwl; Mon, 8 Mar 2021 12:00:19 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4DvH3716g1z2y66; Mon, 8 Mar 2021 12:00:19 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4DvH360PdNz2xB7 for ; Mon, 8 Mar 2021 12:00:18 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4DvH344MMZzgB; Mon, 8 Mar 2021 12:00:16 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1615204816; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=iECO+8VD0hd3bUpPbeGO+KPvEEuCFXU3d4/H2PiCsUI=; b=i/psNJpYDijN4HGfWIlM6C1VsLnMAU+OAj732gmN4qywapE+YCAarsi/MrrQR6+y37A1gE NxVd/t3g150ZiICQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1615204816; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=iECO+8VD0hd3bUpPbeGO+KPvEEuCFXU3d4/H2PiCsUI=; b=lMD58M611DALn88tENE/ZuomQdBjGUdt05XpCmIlx9Vi7LQAg9Te8vX0sSbJjs5pSNqnzQ ffhRvlaulghP3nnPcaji+Mn/aEownAwe5cRi0d3cQdMOaVNIauldPgfX2nEv58zrPXn7Pp S1iklgJZnSCBCoNChzH1KcA3cynfgLbpUi5BD7HSx8PPZquJ947MLSnC9rlT8E1K9yhIkN ohfXVx95PWfCDzQIfatkJ8KwU8v+yiCK4H3IubRYLmWkT6xIVjlBIpv2Q/41BwTKc4UXIA 4xwsI7bOR6ZnYV60yhY1MyqeaSEY4tI1A2jC5+5UzDA9IRjLbhM9wuvy81RjTg== From: "Adolf Belka (ipfire)" To: development@lists.ipfire.org Subject: [PATCH 1/2] pmacct: New addon Date: Mon, 8 Mar 2021 12:57:51 +0100 Message-Id: <20210308115751.1987-1-adolf.belka@ipfire.org> MIME-Version: 1.0 X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: IPFire development talk List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: development-bounces@lists.ipfire.org Sender: "Development" From: Adolf Belka - What is it? pmacct is a monitoring tool for network management tasks. Data collected can be used for analysis and troubleshooting purposes to maintain the health of the network. pmacct can collect, replicate and export network information. It can cache in memory tables, store persistently to SQLite3 and output to flat-files like CSV, formatted, and JSON. - Why is it needed? To monitor data usage (IP-based or MAC-based data accounting) down to the client level. Net-Traffic will monitor traffic for the entire RED, GREEN, etc. networks, but it cannot pinpoint which client is using lots of data. Connections will take a snapshot but not show day by day sums. pmacct can help admins keep tabs on users that use too much data. - What are the use cases? An ISP may implement data caps and if the limit is over-run then you have to pay for every additional xxGB of data used. Typical charges can be around $10 per 50GB. With pmacct you can identify the high users and take action, hopefully before the limit is breached. - This is being introduced as a command line only tool. However, at a later date, if it is useful to enough additional users a WUI page could be developed as discussed in the development mailing list https://lists.ipfire.org/pipermail/development/2021-January/009174.html Co-authored-by: Jon Murphy Co-authored-by: Erik Kapfer Signed-off-by: Adolf Belka --- config/backup/includes/pmacct | 2 + config/pmacct/pmacct.conf | 24 +++++ config/pmacct/pmacct.init | 57 +++++++++++ config/pmacct/pmacct_memory_example.conf | 24 +++++ config/pmacct/pmacct_sqlite3_example.conf | 25 +++++ config/rootfiles/packages/pmacct | 111 ++++++++++++++++++++++ lfs/pmacct | 107 +++++++++++++++++++++ make.sh | 2 + src/paks/pmacct/install.sh | 36 +++++++ src/paks/pmacct/uninstall.sh | 33 +++++++ src/paks/pmacct/update.sh | 26 +++++ 11 files changed, 447 insertions(+) create mode 100644 config/backup/includes/pmacct create mode 100644 config/pmacct/pmacct.conf create mode 100644 config/pmacct/pmacct.init create mode 100644 config/pmacct/pmacct_memory_example.conf create mode 100644 config/pmacct/pmacct_sqlite3_example.conf create mode 100644 config/rootfiles/packages/pmacct create mode 100644 lfs/pmacct create mode 100644 src/paks/pmacct/install.sh create mode 100644 src/paks/pmacct/uninstall.sh create mode 100644 src/paks/pmacct/update.sh diff --git a/config/backup/includes/pmacct b/config/backup/includes/pmacct new file mode 100644 index 000000000..4359067ad --- /dev/null +++ b/config/backup/includes/pmacct @@ -0,0 +1,2 @@ +/etc/pmacct/ +/var/spool/pmacct/ diff --git a/config/pmacct/pmacct.conf b/config/pmacct/pmacct.conf new file mode 100644 index 000000000..3c1d47efa --- /dev/null +++ b/config/pmacct/pmacct.conf @@ -0,0 +1,24 @@ +! +! Pmacctd configuration file for IPFire environment +! + +syslog: daemon +daemonize: true +debug: false +promisc: true +interface: green0 + + +! +! "plugin1" plugin configuration +! +plugins: memory[plugin1] + +plugin_buffer_size[plugin1]: 102400 +plugin_pipe_size[plugin1]: 10240000 + +imt_mem_pools_number: 256 +imt_path[plugin1]: /var/spool/pmacct/plugin1.pipe + +aggregate[plugin1]: src_host, src_port, src_mac, dst_host, dst_port, dst_mac, proto +aggregate_filter[plugin1]: ip \ No newline at end of file diff --git a/config/pmacct/pmacct.init b/config/pmacct/pmacct.init new file mode 100644 index 000000000..31f9ce49b --- /dev/null +++ b/config/pmacct/pmacct.init @@ -0,0 +1,57 @@ +#!/bin/bash + +# Begin $rc_base/init.d/pmacct + +# Starts and stops pmacct daemon +# Date: 2021-02-25 12:25:30 (Thu, 25 Feb 2021) + +# Locations +CONF="/etc/pmacct/pmacct.conf" +CONTENT="/var/pmacct" +# Pmacctd binary +PMACCT="/usr/sbin/pmacctd" +# Pmacctd start options '-f' for the configuration file +OPT="-f ${CONF}" +DESC="pmacct daemon" +# Pmacctd syslog facilitiy +#SYSLOG="local1" + + +. /etc/sysconfig/rc +. $rc_functions + +case "$1" in + start) + boot_mesg "Starting the ${DESC}... " + loadproc ${PMACCT} ${OPT} + sleep 2 + if P=$(pgrep -fl pmacctd); then + echo -e "\n${P}" + else + echo -e "\n${PMACCT} is not running... " + fi + ;; + + stop) + boot_mesg "Stopping the ${DESC}... " + killproc ${PMACCT} + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + status) + statusproc ${PMACCT} + ;; + + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac + +# End $rc_base/init.d/pmacct + diff --git a/config/pmacct/pmacct_memory_example.conf b/config/pmacct/pmacct_memory_example.conf new file mode 100644 index 000000000..0babdaaf7 --- /dev/null +++ b/config/pmacct/pmacct_memory_example.conf @@ -0,0 +1,24 @@ +! +! Pmacctd configuration file for IPFire environment +! + +syslog: daemon +daemonize: true +debug: false +promisc: true +interface: green0 + + +! +! "plugin1" plugin configuration +! +plugins: memory[plugin1] + +plugin_buffer_size[plugin1]: 102400 +plugin_pipe_size[plugin1]: 10240000 + +imt_mem_pools_number: 256 +imt_path[plugin1]: /var/spool/pmacct/plugin1.pipe + +aggregate[plugin1]: src_host, src_port, src_mac, dst_host, dst_port, dst_mac, proto +aggregate_filter[plugin1]: ip diff --git a/config/pmacct/pmacct_sqlite3_example.conf b/config/pmacct/pmacct_sqlite3_example.conf new file mode 100644 index 000000000..7fb996408 --- /dev/null +++ b/config/pmacct/pmacct_sqlite3_example.conf @@ -0,0 +1,25 @@ +! +! Pmacctd configuration file for IPFire environment +! + +syslog: daemon +daemonize: true +debug: false +promisc: true +interface: green0 + + +! +! "plugin2" plugin configuration +! +plugins: sqlite3[plugin2] + +sql_db[plugin2]: /var/spool/pmacct/pmacct_sqlitev1.db +sql_table_version[plugin2]: 1 +sql_history[plugin2]: 5m +sql_refresh_time[plugin2]: 300 +sql_history_roundoff[plugin2]: m +sql_dont_try_update: true + +aggregate[plugin2]: src_host, src_port, src_mac, dst_host, dst_port, dst_mac, proto +aggregate_filter[plugin2]: ip diff --git a/config/rootfiles/packages/pmacct b/config/rootfiles/packages/pmacct new file mode 100644 index 000000000..fed83ee67 --- /dev/null +++ b/config/rootfiles/packages/pmacct @@ -0,0 +1,111 @@ +etc/pmacct +etc/pmacct/pmacct.conf +etc/pmacct/pmacct_memory_example.conf +etc/pmacct/pmacct_sqlite3_example.conf +etc/rc.d/init.d/pmacct +usr/bin/pmacct +#usr/lib/pmacct +#usr/lib/pmacct/examples +#usr/lib/pmacct/examples/custom +#usr/lib/pmacct/examples/custom/libcustom.la +#usr/lib/pmacct/examples/lg +#usr/lib/pmacct/examples/lg/pmbgp +usr/sbin/nfacctd +usr/sbin/pmacctd +usr/sbin/pmbgpd +usr/sbin/pmbmpd +usr/sbin/pmtelemetryd +usr/sbin/sfacctd +usr/share/pmacct +#usr/share/pmacct/CONFIG-KEYS +#usr/share/pmacct/FAQS +#usr/share/pmacct/QUICKSTART +#usr/share/pmacct/UPGRADE +#usr/share/pmacct/docs +#usr/share/pmacct/docs/IPFIX +#usr/share/pmacct/docs/LOOKING_GLASS_FORMAT +#usr/share/pmacct/docs/MSGLOG_DUMP_FORMATS +#usr/share/pmacct/docs/SIGNALS +#usr/share/pmacct/docs/TRIGGER_VARS +#usr/share/pmacct/examples +usr/share/pmacct/examples/allow.lst.example +#usr/share/pmacct/examples/amqp +usr/share/pmacct/examples/amqp/amqp_receiver.py +#usr/share/pmacct/examples/avro +usr/share/pmacct/examples/avro/avro_file_decoder.py +usr/share/pmacct/examples/bgp_agent.map.example +usr/share/pmacct/examples/bgp_md5.lst.example +usr/share/pmacct/examples/bgp_xconnects.map.example +usr/share/pmacct/examples/flow_to_rd.map.example +#usr/share/pmacct/examples/kafka +usr/share/pmacct/examples/kafka/kafka_consumer.py +#usr/share/pmacct/examples/lg +usr/share/pmacct/examples/lg/pmbgp.py +usr/share/pmacct/examples/networks.lst.example +usr/share/pmacct/examples/nfacctd-sql.conf.example +usr/share/pmacct/examples/pcap_interfaces.map.example +usr/share/pmacct/examples/peers.map.example +usr/share/pmacct/examples/pmacctd-imt.conf.example +usr/share/pmacct/examples/pmacctd-multiple-plugins.conf.example +usr/share/pmacct/examples/pmacctd-sql.conf.example +usr/share/pmacct/examples/pmacctd-sqlite3.conf.example +usr/share/pmacct/examples/ports.lst.example +usr/share/pmacct/examples/pretag.map.example +usr/share/pmacct/examples/primitives.lst.example +usr/share/pmacct/examples/probe_netflow.conf.example +usr/share/pmacct/examples/probe_sflow.conf.example +usr/share/pmacct/examples/sampling.map.example +usr/share/pmacct/examples/tee_receivers.lst.example +#usr/share/pmacct/sql +#usr/share/pmacct/sql/README.64bit +#usr/share/pmacct/sql/README.GeoIP +#usr/share/pmacct/sql/README.IPv6 +#usr/share/pmacct/sql/README.cos +#usr/share/pmacct/sql/README.custom_primitives +#usr/share/pmacct/sql/README.etype +#usr/share/pmacct/sql/README.export_proto +#usr/share/pmacct/sql/README.iface +#usr/share/pmacct/sql/README.label +#usr/share/pmacct/sql/README.mask +#usr/share/pmacct/sql/README.mpls +#usr/share/pmacct/sql/README.mysql +#usr/share/pmacct/sql/README.nat +#usr/share/pmacct/sql/README.pgsql +#usr/share/pmacct/sql/README.sampling +usr/share/pmacct/sql/README.sqlite3 +#usr/share/pmacct/sql/README.tag2 +#usr/share/pmacct/sql/README.timestamp +#usr/share/pmacct/sql/README.tunnel +#usr/share/pmacct/sql/pmacct-create-db.pgsql +#usr/share/pmacct/sql/pmacct-create-db_bgp_v1.mysql +#usr/share/pmacct/sql/pmacct-create-db_v1.mysql +#usr/share/pmacct/sql/pmacct-create-db_v2.mysql +#usr/share/pmacct/sql/pmacct-create-db_v3.mysql +#usr/share/pmacct/sql/pmacct-create-db_v4.mysql +#usr/share/pmacct/sql/pmacct-create-db_v5.mysql +#usr/share/pmacct/sql/pmacct-create-db_v6.mysql +#usr/share/pmacct/sql/pmacct-create-db_v7.mysql +#usr/share/pmacct/sql/pmacct-create-db_v8.mysql +#usr/share/pmacct/sql/pmacct-create-db_v9.mysql +#usr/share/pmacct/sql/pmacct-create-table_bgp_v1.pgsql +usr/share/pmacct/sql/pmacct-create-table_bgp_v1.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v1.pgsql +usr/share/pmacct/sql/pmacct-create-table_v1.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v2.pgsql +usr/share/pmacct/sql/pmacct-create-table_v2.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v3.pgsql +usr/share/pmacct/sql/pmacct-create-table_v3.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v4.pgsql +usr/share/pmacct/sql/pmacct-create-table_v4.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v5.pgsql +usr/share/pmacct/sql/pmacct-create-table_v5.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v6.pgsql +usr/share/pmacct/sql/pmacct-create-table_v6.sqlite3 +usr/share/pmacct/sql/pmacct-create-table_v7.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v7_v8.pgsql +usr/share/pmacct/sql/pmacct-create-table_v8.sqlite3 +#usr/share/pmacct/sql/pmacct-create-table_v9.pgsql +usr/share/pmacct/sql/pmacct-create-table_v9.sqlite3 +#usr/share/pmacct/sql/pmacct-grant-db.mysql +var/ipfire/backup/addons/includes/pmacct +var/spool/pmacct diff --git a/lfs/pmacct b/lfs/pmacct new file mode 100644 index 000000000..c6cc5270e --- /dev/null +++ b/lfs/pmacct @@ -0,0 +1,107 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2019 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.7.6 + +THISAPP = pmacct-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = pmacct +PAK_VER = 1 + +DEPS = libcdada + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = b829cfdc394d5acd6d32fb23de181a6b + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./autogen.sh + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --sysconfdir=/etc/pmacct \ + --enable-sqlite3 \ + --enable-l2 \ + --enable-jansson + + # Add directory for plugins and pipes + -mkdir -v /var/spool/pmacct + + # Add configuration folder and copy conf files to it + -mkdir -v /etc/pmacct + cp -vf $(DIR_CONF)/pmacct/*.conf /etc/pmacct + + # Copy initscript to dir + cp -vf $(DIR_CONF)/pmacct/pmacct.init /etc/rc.d/init.d/pmacct + chmod 754 /etc/rc.d/init.d/pmacct + chown root:root /etc/rc.d/init.d/pmacct + + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + + # Install backup definition + install -v -m 644 ${DIR_SRC}/config/backup/includes/pmacct \ + /var/ipfire/backup/addons/includes/pmacct + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 43cccaca0..d42c9b1e2 100755 --- a/make.sh +++ b/make.sh @@ -1646,6 +1646,8 @@ buildipfire() { lfsmake2 ncdu lfsmake2 lshw lfsmake2 socat + lfsmake2 libcdada + lfsmake2 pmacct } buildinstaller() { diff --git a/src/paks/pmacct/install.sh b/src/paks/pmacct/install.sh new file mode 100644 index 000000000..8178cc7bc --- /dev/null +++ b/src/paks/pmacct/install.sh @@ -0,0 +1,36 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2007 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh + +extract_files +restore_backup ${NAME} + +# Add symlinks for runlevels +ln -s ../init.d/${NAME} /etc/rc.d/rc0.d/K85${NAME} +ln -s ../init.d/${NAME} /etc/rc.d/rc3.d/S50${NAME} +ln -s ../init.d/${NAME} /etc/rc.d/rc6.d/K85${NAME} +start_service --background ${NAME} + + +# EOF diff --git a/src/paks/pmacct/uninstall.sh b/src/paks/pmacct/uninstall.sh new file mode 100644 index 000000000..51631e8c1 --- /dev/null +++ b/src/paks/pmacct/uninstall.sh @@ -0,0 +1,33 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2007 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh + +stop_service ${NAME} +make_backup ${NAME} +remove_files + +# Delete symlinks +rm -rfv /etc/rc.d/rc?.d/???${NAME} + +# EOF diff --git a/src/paks/pmacct/update.sh b/src/paks/pmacct/update.sh new file mode 100644 index 000000000..89c40d0d7 --- /dev/null +++ b/src/paks/pmacct/update.sh @@ -0,0 +1,26 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2007 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +./uninstall.sh +./install.sh From patchwork Mon Mar 8 12:00:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 3935 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4DvH3K5L74z3wwp for ; Mon, 8 Mar 2021 12:00:29 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4DvH3K2Tkvz4WD; Mon, 8 Mar 2021 12:00:29 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4DvH3K1qKGz2yDf; Mon, 8 Mar 2021 12:00:29 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4DvH3J1F9Jz2xJj for ; Mon, 8 Mar 2021 12:00:28 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4DvH3H3KtSz24d; Mon, 8 Mar 2021 12:00:27 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1615204827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=4K+dbbMUQAeS/8ietYYcvK7bqCB8cVhVoBedyscrFw8=; b=Of/XsmlvhlEz0o3PSMSs1yr3vq73LJ7zjPhiMyhN8W6/lEvVXhzP+ocO9rcrg7WBE7lFoL Y/nk9ZbajhXakhBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1615204827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=4K+dbbMUQAeS/8ietYYcvK7bqCB8cVhVoBedyscrFw8=; b=pSjmaDBUGgw9b5mFFS/759eDgLxtfJY21KSJ37nasToGDwwi4647y4fDmpgFnP36RvLrqy I39Sjit97v8rU6Fgp/qKKguAjTuMqR2O/AhrbY+Oao1tkm9gzC9o6y8alzu6W088eDMR1w kzsCnbPEBkzFqsp65DAPldd3qiKhtf7y7kLn/7hshrPOsJlaC4+uW0w5mwb6qklbgZsUAB Rduv10CQv/RlpGUFohpv+QoPy7Fh5792VPTup1lMUFrC8IjJnIjHdpUtVPBrWsCgXIJgfm 9+goqC7JzPm2D1NQeUoKysCUmwvybXRkWfVZVCvbkYPpVEJ3w5+LBZ1fLOE81w== From: "Adolf Belka (ipfire)" To: development@lists.ipfire.org Subject: [PATCH 2/2] libcdada: New addon - dependency for pmacct Date: Mon, 8 Mar 2021 13:00:25 +0100 Message-Id: <20210308120025.2100-1-adolf.belka@ipfire.org> MIME-Version: 1.0 X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: IPFire development talk List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: development-bounces@lists.ipfire.org Sender: "Development" From: Adolf Belka - This package is required for its library which is a dependency for pmacct - url for developer is https://msune.github.io/libcdada/ - patch is required to allow disabling of staic library Makefiles for tests and examples explicitly uses static library The patch changes all .a to .so Co-authored-by: Jon Murphy Co-authored-by: Erik Kapfer Signed-off-by: Adolf Belka --- config/rootfiles/packages/libcdada | 28 ++++++ lfs/libcdada | 87 +++++++++++++++++++ ...library-for-tests-and-examples-build.patch | 56 ++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 config/rootfiles/packages/libcdada create mode 100644 lfs/libcdada create mode 100644 src/patches/libcdada-0.3.4-use-shared-library-for-tests-and-examples-build.patch diff --git a/config/rootfiles/packages/libcdada b/config/rootfiles/packages/libcdada new file mode 100644 index 000000000..b3b1b99b1 --- /dev/null +++ b/config/rootfiles/packages/libcdada @@ -0,0 +1,28 @@ +#usr/bin/cdada-gen +#usr/include/cdada +#usr/include/cdada.h +#usr/include/cdada/__common_internal.h +#usr/include/cdada/__list_internal.h +#usr/include/cdada/__map_internal.h +#usr/include/cdada/__queue_internal.h +#usr/include/cdada/__set_internal.h +#usr/include/cdada/__stack_internal.h +#usr/include/cdada/bbitmap.h +#usr/include/cdada/list.h +#usr/include/cdada/list_custom_cc.h +#usr/include/cdada/map.h +#usr/include/cdada/map_custom_cc.h +#usr/include/cdada/queue.h +#usr/include/cdada/queue_custom_cc.h +#usr/include/cdada/set.h +#usr/include/cdada/set_custom_cc.h +#usr/include/cdada/stack.h +#usr/include/cdada/stack_custom_cc.h +#usr/include/cdada/str.h +#usr/include/cdada/utils.h +#usr/include/cdada/version.h +#usr/lib/libcdada.a +#usr/lib/libcdada.la +#usr/lib/libcdada.so +usr/lib/libcdada.so.0 +usr/lib/libcdada.so.0.0.0 diff --git a/lfs/libcdada b/lfs/libcdada new file mode 100644 index 000000000..a30b03333 --- /dev/null +++ b/lfs/libcdada @@ -0,0 +1,87 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2019 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 0.3.4 + +THISAPP = libcdada-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = libcdada +PAK_VER = 1 + +DEPS = + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = f5067835014e02d221af9754df8b140b + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libcdada-0.3.4-use-shared-library-for-tests-and-examples-build.patch + cd $(DIR_APP) && ./autogen.sh + cd $(DIR_APP)/build && ../configure \ + --prefix=/usr \ + --disable-static + cd $(DIR_APP)/build && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/src/patches/libcdada-0.3.4-use-shared-library-for-tests-and-examples-build.patch b/src/patches/libcdada-0.3.4-use-shared-library-for-tests-and-examples-build.patch new file mode 100644 index 000000000..adb06ad9d --- /dev/null +++ b/src/patches/libcdada-0.3.4-use-shared-library-for-tests-and-examples-build.patch @@ -0,0 +1,56 @@ +diff -ruN libcdada-0.3.4.orig/examples/Makefile.am libcdada-0.3.4/examples/Makefile.am +--- libcdada-0.3.4.orig/examples/Makefile.am 2021-01-15 00:01:59.000000000 +0100 ++++ libcdada-0.3.4/examples/Makefile.am 2021-02-28 15:41:13.940082099 +0100 +@@ -11,32 +11,32 @@ + + list_u32_SOURCES = list_u32.c + list_u32_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-list_u32_LDADD = ../src/.libs/libcdada.a -lstdc++ ++list_u32_LDADD = ../src/.libs/libcdada.so -lstdc++ + + map_struct_SOURCES = map_struct.c + map_struct_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-map_struct_LDADD = ../src/.libs/libcdada.a -lstdc++ ++map_struct_LDADD = ../src/.libs/libcdada.so -lstdc++ + + custom_gen_SOURCES = custom-gen/my_program_gen.c custom-gen/cdada.cc + custom_gen_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-custom_gen_LDADD = ../src/.libs/libcdada.a -lstdc++ ++custom_gen_LDADD = ../src/.libs/libcdada.so -lstdc++ + + custom_macro_SOURCES = custom-macro/my_program.c custom-macro/cdada.cc + custom_macro_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-custom_macro_LDADD = ../src/.libs/libcdada.a -lstdc++ ++custom_macro_LDADD = ../src/.libs/libcdada.so -lstdc++ + + str_SOURCES = str.c + str_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-str_LDADD = ../src/.libs/libcdada.a -lstdc++ ++str_LDADD = ../src/.libs/libcdada.so -lstdc++ + + bbitmap_SOURCES = bbitmap.c + bbitmap_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-bbitmap_LDADD = ../src/.libs/libcdada.a -lstdc++ ++bbitmap_LDADD = ../src/.libs/libcdada.so -lstdc++ + + queue_u32_SOURCES = queue_u32.c + queue_u32_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-queue_u32_LDADD = ../src/.libs/libcdada.a -lstdc++ ++queue_u32_LDADD = ../src/.libs/libcdada.so -lstdc++ + + stack_u32_SOURCES = stack_u32.c + stack_u32_CPPFLAGS = -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-stack_u32_LDADD = ../src/.libs/libcdada.a -lstdc++ ++stack_u32_LDADD = ../src/.libs/libcdada.so -lstdc++ +diff -ruN libcdada-0.3.4.orig/test/Makefile.am libcdada-0.3.4/test/Makefile.am +--- libcdada-0.3.4.orig/test/Makefile.am 2021-01-15 00:01:59.000000000 +0100 ++++ libcdada-0.3.4/test/Makefile.am 2021-02-28 15:40:37.458117227 +0100 +@@ -63,7 +63,7 @@ + benchmark_SOURCES= benchmark.cc + benchmark_CXXFLAGS= -O3 + benchmark_CPPFLAGS= -I$(top_builddir)/include/ -I$(top_srcdir)/include/ +-benchmark_LDADD= -lpthread ../src/.libs/libcdada.a ++benchmark_LDADD= -lpthread ../src/.libs/libcdada.so + + #Valgrind + if VALGRIND_ENABLED