From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka To: development@lists.ipfire.org Subject: Re: [PATCH 1/2] pmacct: New addon Date: Fri, 19 Mar 2021 10:20:05 +0100 Message-ID: <8374afaa-9bd1-0dcc-a426-40478bf16d09@ipfire.org> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6263448195891059814==" List-Id: --===============6263448195891059814== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Michael, On 18/03/2021 19:43, Adolf Belka wrote: > Hi Michael, > > On 18/03/2021 19:25, Michael Tremer wrote: >> Hey, >> >>> On 18 Mar 2021, at 13:34, Adolf Belka wrote: >>> >>> Hi Michael, >>> >>> On 18/03/2021 14:07, Michael Tremer wrote: >>>> Hello, >>>> I will split this email into two parts: >>>> The technical part: >>>> * The initscript isn=E2=80=99t based on our template and uses sleep to=20 >>>> check if starting a daemon has been successful. That should not be=20 >>>> necessary and will potentially slow down the boot process. >>> I will have another look at the initscript and see if it can use the=20 >>> standard IPFire template. >> >> Yes, it is not too different from your version: >> >> https://git.ipfire.org/?p=3Dipfire-2.x.git;a=3Dblob;f=3Dsrc/initscripts/sy= stem/template;h=3D69dc2a6a2202fb30da61a7fff6625aea531802e9;hb=3DHEAD >> >> There isn=E2=80=99t much documentation around it but there are loads of ot= her=20 >> scripts that will be helpful to figure out any convention or=20 >> boilerplate code to copy. >> >>>> * I am not very sure if the example configuration files are=20 >>>> helpful. Maybe someone can clear this up a little bit for me what=20 >>>> is the rationale is behind them. >>> The idea was that the two simplest config example scripts were=20 >>> provided that give a user the ability to get data into memory or=20 >>> into a sqlite file. The actual conf file provided is a copy of the=20 >>> memory version. These give a basic starting point that people can=20 >>> then add additional info to be recorded etc. >> >> Does anybody want to use anything else than SQLite in the context of=20 >> IPFire? > I think we weren't sure and the memory and sqlite options were the=20 > easiest to get going and give real data. There are also mysql and=20 > postgresql options but I think we need to see what the interest is. >> >>>> * There are loads of daemons being shipped and only one is being used. >>>> >>>> I looked through our conversations and it looks like these were=20 >>>> left there because we weren't sure if they would be used or not. >>>> >>>> pmacctd is the daemon being used by Jon. pmacct is the frontend to=20 >>>> pmacctd when being used in memory mode. >>>> >>>> For the others I looked in the pmacct website and found the following:- >>>> I looked through our conversations and it looks like these were left=20 there because we weren't sure if they would be used or not. pmacctd is the daemon being used by Jon. pmacct is the frontend to=20 pmacctd when being used in memory mode. For the others I looked in the pmacct website and found the following:- 'pmacctd' is the libpcap-based IPv4/IPv6 accounting daemon 'nfacctd' is the NetFlow (versions supported NetFlow v1, v5 and v9) and=20 IPFIX accounting daemon 'sfacctd' is the sFlow v2/v4 and v5 accounting daemon 'uacctd' is the Linux NFLOG-based accounting daemon (historically, it=20 was using ULOG, hence its name) 'pmtelemetryd' is the Streaming Telemetry collector, where "Streaming=20 telemetry [ .. ] data can be used for analysis and troubleshooting=20 purposes to maintain the health of the network. This is achieved by=20 leveraging the capabilities of machine-to-machine communication. [ .. ]"=20 (quoting Cisco IOS-XR Telemetry Configuration Guide at the time of this=20 writing) 'pmbgpd' is the pmacct BGP collector and 'pmbmpd'is the pmacct BMP=20 collector. I don't know what most of that means but it looks to be quite different=20 to what the addon was created for, so I would propose that I re-do the=20 rootfiles and remove those daemons from the install. If in future there=20 is demand for others we can add them back in with an update patch. I=20 will do that together with the other changes already discussed. Regards, Adolf. >>> I think Jon or Erik need to comment on this question. >>>> * How much load does this generate? How large is the captured data? >>> Jon needs to provide this feedback. >>>> Then there is the other part: >>>>> On 8 Mar 2021, at 11:57, Adolf Belka (ipfire)=20 >>>>> wrote: >>>>> >>>>> From: Adolf Belka >>>>> >>>>> - What is it? >>>>> =C2=A0=C2=A0 pmacct is a monitoring tool for network management tasks. = Data=20 >>>>> collected >>>>> =C2=A0=C2=A0 can be used for analysis and troubleshooting purposes to=20 >>>>> maintain the >>>>> =C2=A0=C2=A0 health of the network. pmacct can collect, replicate and e= xport=20 >>>>> network >>>>> =C2=A0=C2=A0 information. It can cache in memory tables, store persiste= ntly=20 >>>>> to SQLite3 >>>>> =C2=A0=C2=A0 and output to flat-files like CSV, formatted, and JSON. >>>> Okay. >>>>> - Why is it needed? >>>>> =C2=A0=C2=A0 To monitor data usage (IP-based or MAC-based data accounti= ng)=20 >>>>> down to the >>>>> =C2=A0=C2=A0 client level. Net-Traffic will monitor traffic for the ent= ire=20 >>>>> RED, GREEN, >>>>> =C2=A0=C2=A0 etc. networks, but it cannot pinpoint which client is usin= g=20 >>>>> lots of data. >>>>> =C2=A0=C2=A0 Connections will take a snapshot but not show day by day s= ums.=20 >>>>> pmacct can >>>>> =C2=A0=C2=A0 help admins keep tabs on users that use too much data. >>>> I agree with the goal of it. But how does this add-on achieve that? >>> Jon should comment on this as he had this use case and can give=20 >>> feedback how the data has helped him in his investigations. >>>> The data is being written to a (usually binary) file which cannot=20 >>>> be visualised in the web UI. Does this not want a CGI script that=20 >>>> allows people to see what is happening? >>> We all thought that this would ultimately need a CGI script to set=20 >>> up and visualise the data. We believed it was worth getting this=20 >>> running in actual use as a CLI tool to start with and then get more=20 >>> feedback on the best items that would need to be captured in the CGI=20 >>> script. The tool has a lot of capabilities and I think it will not=20 >>> be possible to do everything that it can do in a WUI page. So some=20 >>> form of file or db offload will need to be available anyway but the=20 >>> items identified as being commonly required would be the ones to be=20 >>> developed into a CGI WUI page. >>>> Sending manual SQL queries probably isn=E2=80=99t much fun :) >>>>> - What are the use cases? >>>>> =C2=A0=C2=A0 An ISP may implement data caps and if the limit is over-ru= n=20 >>>>> then you have >>>>> =C2=A0=C2=A0 to pay for every additional xxGB of data used. Typical cha= rges=20 >>>>> can be >>>>> =C2=A0=C2=A0 around $10 per 50GB. With pmacct you can identify the high= =20 >>>>> users and take >>>>> =C2=A0=C2=A0 action, hopefully before the limit is breached. >>>>> - This is being introduced as a command line only tool. However,=20 >>>>> at a later >>>>> =C2=A0=C2=A0 date, if it is useful to enough additional users a WUI pag= e=20 >>>>> could be >>>>> =C2=A0=C2=A0 developed as discussed in the development mailing list >>>>> https://lists.ipfire.org/pipermail/development/2021-January/009174.html= =20 >>>>> >>>> I have been thinking about this for a while now and would say that=20 >>>> I can approve merging this as a CLI tool. But it would not really=20 >>>> enhance IPFire=E2=80=99s functionality because it is only usable for peo= ple=20 >>>> who spend a lot of time writing their own scripts or SQL queries to=20 >>>> get information that can be used to make decisions. >>> We recognise that and had discussed the CGI WUI page as mentioned=20 >>> above. >> >> Was this here on the list or elsewhere? > This was in a private conversation on the IPFire Community forum. We=20 > thought it best to have all our back and forth discussions between=20 > ourselves to start with. We were all finding our feet with it as well=20 > and we thought it best not to swamp the development list with our=20 > musings and questions to each other. If you want to see all the=20 > discussion history, then we can add you to the members of that=20 > conversation. > If the addon gets accepted then any future discussions would be done=20 > on the Development mailing list to get everyones input. >> >>>> Adding another alternative to vnstat will result in us having to=20 >>>> maintain two things that roughly do the same - or where one=E2=80=99s=20 >>>> features are a subset of the other one. >>> I think Jon or Erik need to comment on any comparison with vnstat. >>>> I would like to avoid merging this and then see it abandoned=20 >>>> because it is too complicated to use. We already have a lot of=20 >>>> virtually unmaintained stuff around and I would really like to drop=20 >>>> a lot of it, although I know that there are a few people actually=20 >>>> using it. >>> Jon and Erik should comment on the complication of use or not. Jon=20 >>> especially has done quite a bit of work with it, installing the=20 >>> .ipfire package versions that I have created. >>> I intend to also have a play around with it but for me it is more=20 >>> some playful fun as I just have a home network with only myself as=20 >>> the user and admin. >>>> Thoughts? >>>> Best, >>>> -Michael >>>>> Co-authored-by: Jon Murphy >>>>> Co-authored-by: Erik Kapfer >>>>> >>>>> Signed-off-by: Adolf Belka >>>>> --- >>>>> config/backup/includes/pmacct=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 2 + >>>>> config/pmacct/pmacct.conf=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 24 +++++ >>>>> config/pmacct/pmacct.init=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 57 +++++++++++ >>>>> config/pmacct/pmacct_memory_example.conf=C2=A0 |=C2=A0 24 +++++ >>>>> config/pmacct/pmacct_sqlite3_example.conf |=C2=A0 25 +++++ >>>>> config/rootfiles/packages/pmacct=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 | 111=20 >>>>> ++++++++++++++++++++++ >>>>> lfs/pmacct=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 107 +++++++++++++++++++= ++ >>>>> make.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2= =A0 2 + >>>>> src/paks/pmacct/install.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 36 +++++++ >>>>> src/paks/pmacct/uninstall.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 33 +++++++ >>>>> src/paks/pmacct/update.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 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=20 >>>>> 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,=20 >>>>> 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=3D"/etc/pmacct/pmacct.conf" >>>>> +CONTENT=3D"/var/pmacct" >>>>> +# Pmacctd binary >>>>> +PMACCT=3D"/usr/sbin/pmacctd" >>>>> +# Pmacctd start options '-f' for the configuration file >>>>> +OPT=3D"-f ${CONF}" >>>>> +DESC=3D"pmacct daemon" >>>>> +# Pmacctd syslog facilitiy >>>>> +#SYSLOG=3D"local1" >>>>> + >>>>> + >>>>> +. /etc/sysconfig/rc >>>>> +. $rc_functions >>>>> + >>>>> +case "$1" in >>>>> +=C2=A0=C2=A0=C2=A0 start) >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 boot_mesg "Starting the ${D= ESC}... " >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 loadproc ${PMACCT} ${OPT} >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sleep 2 >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if P=3D$(pgrep -fl pmacctd)= ; then >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ech= o -e "\n${P}" >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ech= o -e "\n${PMACCT} is not running... " >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 stop) >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 boot_mesg "Stopping the ${D= ESC}... " >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 killproc ${PMACCT} >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 restart) >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $0 stop >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sleep 1 >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $0 start >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 status) >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 statusproc ${PMACCT} >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 *) >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo "Usage: $0 {start|stop= |restart|status}" >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit 1 >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>>>> +esac >>>>> + >>>>> +# End $rc_base/init.d/pmacct >>>>> + >>>>> diff --git a/config/pmacct/pmacct_memory_example.conf=20 >>>>> 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,=20 >>>>> dst_port, dst_mac, proto >>>>> +aggregate_filter[plugin1]: ip >>>>> diff --git a/config/pmacct/pmacct_sqlite3_example.conf=20 >>>>> 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,=20 >>>>> dst_port, dst_mac, proto >>>>> +aggregate_filter[plugin2]: ip >>>>> diff --git a/config/rootfiles/packages/pmacct=20 >>>>> 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 @@ >>>>> +######################################################################= #########=20 >>>>> >>>>> +# # >>>>> +# IPFire.org - A linux based=20 >>>>> firewall=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# Copyright (C) 2019=C2=A0 IPFire Team=20 >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# This program is free software: you can redistribute it and/or=20 >>>>> modify=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# it under the terms of the GNU General Public License as=20 >>>>> published by=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# the Free Software Foundation, either version 3 of the License,=20 >>>>> or=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# (at your option) any later=20 >>>>> version.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# This program is distributed in the hope that it will be=20 >>>>> useful,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 # >>>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty=20 >>>>> of=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 # >>>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=20 >>>>> the=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 # >>>>> +# GNU General Public License for more=20 >>>>> details.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# You should have received a copy of the GNU General Public=20 >>>>> License=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# along with this program.=C2=A0 If not, see=20 >>>>> .=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +######################################################################= #########=20 >>>>> >>>>> + >>>>> +######################################################################= #########=20 >>>>> >>>>> +# Definitions >>>>> +######################################################################= #########=20 >>>>> >>>>> + >>>>> +include Config >>>>> + >>>>> +VER=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D 1.7.6 >>>>> + >>>>> +THISAPP=C2=A0=C2=A0=C2=A0 =3D pmacct-$(VER) >>>>> +DL_FILE=C2=A0=C2=A0=C2=A0 =3D $(THISAPP).tar.gz >>>>> +DL_FROM=C2=A0=C2=A0=C2=A0 =3D $(URL_IPFIRE) >>>>> +DIR_APP=C2=A0=C2=A0=C2=A0 =3D $(DIR_SRC)/$(THISAPP) >>>>> +TARGET=C2=A0=C2=A0=C2=A0=C2=A0 =3D $(DIR_INFO)/$(THISAPP) >>>>> +PROG=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D pmacct >>>>> +PAK_VER=C2=A0=C2=A0=C2=A0 =3D 1 >>>>> + >>>>> +DEPS=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D libcdada >>>>> + >>>>> +######################################################################= #########=20 >>>>> >>>>> +# Top-level Rules >>>>> +######################################################################= #########=20 >>>>> >>>>> + >>>>> +objects =3D $(DL_FILE) >>>>> + >>>>> +$(DL_FILE) =3D $(DL_FROM)/$(DL_FILE) >>>>> + >>>>> +$(DL_FILE)_MD5 =3D b829cfdc394d5acd6d32fb23de181a6b >>>>> + >>>>> +install : $(TARGET) >>>>> + >>>>> +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) >>>>> + >>>>> +download :$(patsubst %,$(DIR_DL)/%,$(objects)) >>>>> + >>>>> +md5 : $(subst %,%_MD5,$(objects)) >>>>> + >>>>> +dist: >>>>> +=C2=A0=C2=A0=C2=A0 @$(PAK) >>>>> + >>>>> +######################################################################= #########=20 >>>>> >>>>> +# Downloading, checking, md5sum >>>>> +######################################################################= #########=20 >>>>> >>>>> + >>>>> +$(patsubst %,$(DIR_CHK)/%,$(objects)) : >>>>> +=C2=A0=C2=A0=C2=A0 @$(CHECK) >>>>> + >>>>> +$(patsubst %,$(DIR_DL)/%,$(objects)) : >>>>> +=C2=A0=C2=A0=C2=A0 @$(LOAD) >>>>> + >>>>> +$(subst %,%_MD5,$(objects)) : >>>>> +=C2=A0=C2=A0=C2=A0 @$(MD5) >>>>> + >>>>> +######################################################################= #########=20 >>>>> >>>>> +# Installation Details >>>>> +######################################################################= #########=20 >>>>> >>>>> + >>>>> +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) >>>>> +=C2=A0=C2=A0=C2=A0 @$(PREBUILD) >>>>> +=C2=A0=C2=A0=C2=A0 @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf=20 >>>>> $(DIR_DL)/$(DL_FILE) >>>>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && ./autogen.sh >>>>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && ./configure=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --prefix=3D/usr=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --sysconfdir=3D/etc/pmacct= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --enable-sqlite3=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --enable-l2=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --enable-jansson >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 # Add directory for plugins and pipes >>>>> +=C2=A0=C2=A0=C2=A0 -mkdir -v /var/spool/pmacct >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 # Add configuration folder and copy conf files to it >>>>> +=C2=A0=C2=A0=C2=A0 -mkdir -v /etc/pmacct >>>>> +=C2=A0=C2=A0=C2=A0 cp -vf $(DIR_CONF)/pmacct/*.conf /etc/pmacct >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 # Copy initscript to dir >>>>> +=C2=A0=C2=A0=C2=A0 cp -vf $(DIR_CONF)/pmacct/pmacct.init /etc/rc.d/ini= t.d/pmacct >>>>> +=C2=A0=C2=A0=C2=A0 chmod 754 /etc/rc.d/init.d/pmacct >>>>> +=C2=A0=C2=A0=C2=A0 chown root:root /etc/rc.d/init.d/pmacct >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && make $(MAKETUNING) >>>>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && make install >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 # Install backup definition >>>>> +=C2=A0=C2=A0=C2=A0 install -v -m 644 ${DIR_SRC}/config/backup/includes= /pmacct \ >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /va= r/ipfire/backup/addons/includes/pmacct >>>>> +=C2=A0=C2=A0=C2=A0 @rm -rf $(DIR_APP) >>>>> +=C2=A0=C2=A0=C2=A0 @$(POSTBUILD) >>>>> diff --git a/make.sh b/make.sh >>>>> index 43cccaca0..d42c9b1e2 100755 >>>>> --- a/make.sh >>>>> +++ b/make.sh >>>>> @@ -1646,6 +1646,8 @@ buildipfire() { >>>>> =C2=A0=C2=A0 lfsmake2 ncdu >>>>> =C2=A0=C2=A0 lfsmake2 lshw >>>>> =C2=A0=C2=A0 lfsmake2 socat >>>>> +=C2=A0 lfsmake2 libcdada >>>>> +=C2=A0 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 >>>>> +######################################################################= ######=20 >>>>> >>>>> +# # >>>>> +# This file is part of the IPFire=20 >>>>> Firewall.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is free software; you can redistribute it and/or=20 >>>>> modify=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# it under the terms of the GNU General Public License as=20 >>>>> published by=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# the Free Software Foundation; either version 2 of the License,=20 >>>>> or=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# (at your option) any later=20 >>>>> version.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is distributed in the hope that it will be=20 >>>>> useful,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty=20 >>>>> of=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=20 >>>>> the=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# GNU General Public License for more=20 >>>>> details.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# You should have received a copy of the GNU General Public=20 >>>>> License=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# along with IPFire; if not, write to the Free=20 >>>>> Software=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA=C2=A0=20 >>>>> 02111-1307 USA # >>>>> +# # >>>>> +# Copyright (C) 2007 IPFire-Team=20 >>>>> .=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 # >>>>> +# # >>>>> +######################################################################= ######=20 >>>>> >>>>> +# >>>>> +. /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=20 >>>>> 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 >>>>> +######################################################################= ######=20 >>>>> >>>>> +# # >>>>> +# This file is part of the IPFire=20 >>>>> Firewall.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is free software; you can redistribute it and/or=20 >>>>> modify=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# it under the terms of the GNU General Public License as=20 >>>>> published by=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# the Free Software Foundation; either version 2 of the License,=20 >>>>> or=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# (at your option) any later=20 >>>>> version.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is distributed in the hope that it will be=20 >>>>> useful,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty=20 >>>>> of=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=20 >>>>> the=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# GNU General Public License for more=20 >>>>> details.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# You should have received a copy of the GNU General Public=20 >>>>> License=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# along with IPFire; if not, write to the Free=20 >>>>> Software=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA=C2=A0=20 >>>>> 02111-1307 USA # >>>>> +# # >>>>> +# Copyright (C) 2007 IPFire-Team=20 >>>>> .=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 # >>>>> +# # >>>>> +######################################################################= ######=20 >>>>> >>>>> +# >>>>> +. /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 >>>>> +######################################################################= ######=20 >>>>> >>>>> +# # >>>>> +# This file is part of the IPFire=20 >>>>> Firewall.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is free software; you can redistribute it and/or=20 >>>>> modify=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# it under the terms of the GNU General Public License as=20 >>>>> published by=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# the Free Software Foundation; either version 2 of the License,=20 >>>>> or=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# (at your option) any later=20 >>>>> version.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 # >>>>> +# # >>>>> +# IPFire is distributed in the hope that it will be=20 >>>>> useful,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty=20 >>>>> of=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=20 >>>>> the=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# GNU General Public License for more=20 >>>>> details.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# # >>>>> +# You should have received a copy of the GNU General Public=20 >>>>> License=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# along with IPFire; if not, write to the Free=20 >>>>> Software=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # >>>>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA=C2=A0=20 >>>>> 02111-1307 USA # >>>>> +# # >>>>> +# Copyright (C) 2007 IPFire-Team=20 >>>>> .=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 # >>>>> +# # >>>>> +######################################################################= ######=20 >>>>> >>>>> +# >>>>> +. /opt/pakfire/lib/functions.sh >>>>> +./uninstall.sh >>>>> +./install.sh >>>>> --=20 >>>>> 2.30.1 >> --=20 Sent from my laptop --===============6263448195891059814==--