public inbox for ipfire-scm@lists.ipfire.org
 help / color / mirror / Atom feed
* [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 0cbb9835fe27b6d99663a1b9e9d19414537ba388
@ 2025-09-03 18:00 Michael Tremer
  0 siblings, 0 replies; only message in thread
From: Michael Tremer @ 2025-09-03 18:00 UTC (permalink / raw)
  To: ipfire-scm

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 226374 bytes --]

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".

The branch, next has been updated
       via  0cbb9835fe27b6d99663a1b9e9d19414537ba388 (commit)
       via  48c401ea406d7508f85316be6433625e12cb09a6 (commit)
       via  06b8a198a1df9dfb760f531be7ebef28407f9afd (commit)
       via  757937c728ea7c4092aa52fdd639e197134cf544 (commit)
       via  518d05d9929433767c53cffe4600912228e0344f (commit)
       via  620eaa5e2219ee714d0e8b2568e7296f866124ba (commit)
       via  40a1dc20172e374c33bbdbbd5fae0675d7f8bfe5 (commit)
       via  c2c0f0b2de1164a012f1426a29c6bdb7c2ffde2a (commit)
       via  c777f8a801c97f88701b61046550ef957ee38cf2 (commit)
       via  d667c52a0550adb314977aedc5139307fba3018e (commit)
       via  49cf90dd6d0c1d271df1e946beadf026d18c6e49 (commit)
       via  6d541160462ecdbae89d95be156a792c6afcd432 (commit)
       via  64f9f56be56f5838c249c4ae8439e64f2b04c162 (commit)
       via  cde22e11b1ba763056029e86d80a933925f7a9eb (commit)
       via  a0424a85aadedcf96a3cc5e0c23ac0f2fd55d5d2 (commit)
       via  401351dfe47590c477d338a8e3918bcd628fe0b7 (commit)
       via  c5a5eae15a002eb5d851554a13f3862f3993250b (commit)
       via  09e6c2141c8112af2e7aa49f953e4654692d5519 (commit)
       via  dce3ae8784d72013f10eeb77d16869a79bd89e47 (commit)
       via  2d1c7c81e248aed9dc1e114a7c978ce7d9555603 (commit)
       via  275fbf7e723c077db1f559c61c2045639a1cb1b6 (commit)
       via  141d3dd7047ceb41706f1b6cd34eb39a34e4b8bc (commit)
       via  29ef4c53b05f40b2452722e192451bc104487dfb (commit)
       via  30dd4d3e6bbbeb25a3083b60ab21a3afc6742a06 (commit)
       via  1276dfd2793c3142509863e5c89802ef49319dd1 (commit)
       via  c4d57cfc8033271fd066090c42db4c40bb2baff2 (commit)
       via  648b5328f57a20c604bb2c205b6be4dfb3d3def1 (commit)
       via  7be9123884f7c977e8922b296711b357dd8b3556 (commit)
       via  d82de6453c62e9c63eeb8f8cad27675dfa464c15 (commit)
       via  3e45cba9a793b256c541c6eebac1468a293eeb48 (commit)
       via  2be51fcc86cb34cf8914ca17db23ff59da15bc83 (commit)
       via  9217f70203ea6dd740e263857f8065990341208d (commit)
       via  971867309e39f1c670d011495df2407949cfe05b (commit)
       via  cccb6ff9901dc4d501e676685d46286e0668d7f6 (commit)
       via  6cc2d2bfac1eaa9c0349e84ba07082936ea83db8 (commit)
       via  611f4d670c7cc33c38afee682e664cfc8e367af9 (commit)
       via  1e610a9cff32a6bc695efebd56bf0f15d7afe931 (commit)
       via  959abb02c74bb8c56ce2e8980606bbd7dc224048 (commit)
       via  aadcd09363ba908d8ca73b41b72b9aad99a12624 (commit)
       via  47c89384dafe74d5280f46352debb6afeadda0a0 (commit)
       via  522255c67089aa66dc32435a20fc83c0de9d176b (commit)
       via  67534d62a913e046cc6d6740d568feeeca0e968a (commit)
       via  273cb17f61f1e696edf496206482d7f32452b238 (commit)
       via  cb74cb11e84b9f89f8a4a2481a6eeee1e2701415 (commit)
       via  131d09cf88db5c0d257a81d79269da4b578dd913 (commit)
       via  438deca0081c58eec331e1e1490fefae70f26138 (commit)
       via  a7366da0e2688fed862f7e2eddd04332ae2902f0 (commit)
       via  f8c7f8c52b924c0fb7cb20edb61a0c2563fc8924 (commit)
       via  4d5c29531168be7b109053367e333c5ac556f7cd (commit)
       via  27ed0b7a61df30440e93b2ad4cf9123a9750e2a8 (commit)
       via  4fea4ffd5b74b0fd6a7709796bc4d009aa9f867e (commit)
       via  f87d9532828e096b5c898ccf2f698af42579a5f2 (commit)
       via  bcd0e317d55f3de8adee59e6f82272946f9d933f (commit)
       via  990ba3634f1509c4fa31e53dea96346bb3ba9af4 (commit)
       via  da6d9291663e576e792a1e582dbeea920aa78cbf (commit)
       via  87d0e312cec11b22af6bfa9d61320aa1d9a8d200 (commit)
       via  3656eac2d7b38ecd877e2773146aa719d794b4c8 (commit)
       via  0d59a4a0822ab6ae5e189c1e540432d64caa5948 (commit)
       via  d0831c07693abb93e511e40dacc34a37fae8e6dd (commit)
       via  99f9175ee04d302050709d38d906227c68af0590 (commit)
       via  a940e906832c7838d1be16fda4e00c90cc6a3413 (commit)
       via  d95a1ee37e514a2efa706ece609b0aeb117e249a (commit)
       via  4a90715ba353fd6f4de7444b56236275b79f5ae8 (commit)
       via  49fe4efad57f7707cfbb006e1f9b7e1b3f2be4c8 (commit)
      from  962a028dccdc14facb82bcd34b7654c22e47c29e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0cbb9835fe27b6d99663a1b9e9d19414537ba388
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Sep 3 18:00:02 2025 +0000

    suricata-reporter: Update to 0.2
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 48c401ea406d7508f85316be6433625e12cb09a6
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Sep 3 17:57:48 2025 +0000

    core198: Ship Suricata changes
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 06b8a198a1df9dfb760f531be7ebef28407f9afd
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Sep 2 13:00:28 2025 +0000

    web-user-interface: Create the fonts directory
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 757937c728ea7c4092aa52fdd639e197134cf544
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Sep 1 15:34:08 2025 +0000

    suricata: Remove the bundled reporter
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 518d05d9929433767c53cffe4600912228e0344f
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Sep 1 15:32:02 2025 +0000

    suricata-reporter: Move the configuration from suricata
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 620eaa5e2219ee714d0e8b2568e7296f866124ba
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Sep 1 15:24:36 2025 +0000

    suricata-reporter: Import package
    
    This is now being packaged and distributed externally.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 40a1dc20172e374c33bbdbbd5fae0675d7f8bfe5
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Sun Aug 31 14:47:12 2025 +0000

    web-user-interface: Use the fonts from the separate package
    
    We should not ship anything binary in the sources anyways.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit c2c0f0b2de1164a012f1426a29c6bdb7c2ffde2a
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Sun Aug 31 14:40:19 2025 +0000

    prompt: New package
    
    This ships our current font.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit c777f8a801c97f88701b61046550ef957ee38cf2
Merge: 962a028dc d667c52a0
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Sep 3 17:49:58 2025 +0000

    Merge remote-tracking branch 'ms/suricata-8' into next

commit d667c52a0550adb314977aedc5139307fba3018e
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Sep 3 14:40:38 2025 +0100

    ids.cgi: Add some spacing
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 49cf90dd6d0c1d271df1e946beadf026d18c6e49
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Sep 3 14:25:09 2025 +0100

    ids.cgi: Allow to choose which alerts to send by email
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 6d541160462ecdbae89d95be156a792c6afcd432
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 13 10:34:46 2025 +0100

    ids.cgi: Update wording and checkbox order
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 64f9f56be56f5838c249c4ae8439e64f2b04c162
Author: Stefan Schantl <stefan.schantl@ipfire.org>
Date:   Mon Aug 11 19:39:01 2025 +0200

    ids.cgi: Auto fill form inputs with their temporary stored values in
    error case
    
    If an user provides any invalid input in the form an error message will be
    displayed. In this case, all the form elements (inputs) will be filled
    with their temporary stored values from the cgiparams hash.
    
    Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit cde22e11b1ba763056029e86d80a933925f7a9eb
Author: Stefan Schantl <stefan.schantl@ipfire.org>
Date:   Mon Aug 11 19:38:13 2025 +0200

    ids.cgi: Allow to configure report summary feature
    
    Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit a0424a85aadedcf96a3cc5e0c23ac0f2fd55d5d2
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 14:28:24 2025 +0100

    suricata-report-generator: Implement sending reports via email
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 401351dfe47590c477d338a8e3918bcd628fe0b7
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 14:28:00 2025 +0100

    suricata-report-generator: Don't print rows
    
    This is a left-over debug statement.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit c5a5eae15a002eb5d851554a13f3862f3993250b
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 12:47:55 2025 +0100

    suricata: Automatically email reports once per month/week/day
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 09e6c2141c8112af2e7aa49f953e4654692d5519
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 12:04:06 2025 +0100

    ids.cgi: Fix regular expression to check for valid email addresses
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit dce3ae8784d72013f10eeb77d16869a79bd89e47
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 11:56:39 2025 +0100

    langs: Capitalize "Sender Address"
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 2d1c7c81e248aed9dc1e114a7c978ce7d9555603
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 11:55:55 2025 +0100

    ids.cgi: Remove placeholders
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 275fbf7e723c077db1f559c61c2045639a1cb1b6
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 11:54:52 2025 +0100

    ids.cgi: Update translations
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 141d3dd7047ceb41706f1b6cd34eb39a34e4b8bc
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 11:47:49 2025 +0100

    ids.cgi: Fix table flows
    
    This slightly changes how we list interfaces, but since that got a
    little bit tight if lots of interfaces were available (and which
    language has been used), this is probably a good idea to change it to
    rows.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 29ef4c53b05f40b2452722e192451bc104487dfb
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Mon Aug 11 10:04:21 2025 +0100

    ids-functions.pl: Don't detect number of CPU cores
    
    This value is no longer being used in the configuration.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 30dd4d3e6bbbeb25a3083b60ab21a3afc6742a06
Author: Stefan Schantl <stefan.schantl@ipfire.org>
Date:   Sat Aug 9 16:46:37 2025 +0200

    ids-functions.pl: Add generate_report_generator_config() function
    
    This function is used to genereate the config file for the newly
    introduced suricata-report-generator.
    
    Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 1276dfd2793c3142509863e5c89802ef49319dd1
Author: Stefan Schantl <stefan.schantl@ipfire.org>
Date:   Sat Aug 9 17:50:48 2025 +0200

    ids.cgi: Add code for e-mail input validation
    
    Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit c4d57cfc8033271fd066090c42db4c40bb2baff2
Author: Stefan Schantl <stefan.schantl@ipfire.org>
Date:   Sat Aug 9 13:28:35 2025 +0200

    ids.cgi: Allow to configure new mail alert system
    
    Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 648b5328f57a20c604bb2c205b6be4dfb3d3def1
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Sat Aug 9 15:17:09 2025 +0100

    suricata: Reload the reporter process, too
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 7be9123884f7c977e8922b296711b357dd8b3556
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Sat Aug 9 15:14:53 2025 +0100

    suricata-reporter: Add ability to reload the configuration
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit d82de6453c62e9c63eeb8f8cad27675dfa464c15
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 17:15:01 2025 +0000

    python3-MarkupSafe: Update rootfile
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 3e45cba9a793b256c541c6eebac1468a293eeb48
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 17:32:13 2025 +0100

    suricata-report-generator: Add all alerts in full detail
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 2be51fcc86cb34cf8914ca17db23ff59da15bc83
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 15:07:29 2025 +0100

    suricata-report-generator: Render a PDF document and give it a title page
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 9217f70203ea6dd740e263857f8065990341208d
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 11:28:20 2025 +0100

    suricata-report-generator: Allow span selection
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 971867309e39f1c670d011495df2407949cfe05b
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 11:04:44 2025 +0100

    suricata-report-generator: Create some scaffolding
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit cccb6ff9901dc4d501e676685d46286e0668d7f6
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 16:00:48 2025 +0000

    make.sh: Change the order of building Python packages
    
    This way, we should have all the build tools available as early as
    possible.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 6cc2d2bfac1eaa9c0349e84ba07082936ea83db8
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 09:51:03 2025 +0000

    python3-pillow: New package
    
    This is required by reportlab.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 611f4d670c7cc33c38afee682e664cfc8e367af9
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 09:42:24 2025 +0000

    python3-more_itertools: New package
    
    This is required by setuptools to run.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 1e610a9cff32a6bc695efebd56bf0f15d7afe931
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 09:35:58 2025 +0000

    python3-setuptools: Update to 80.9.0
    
    This patch also removes this as a package. There is no point to ship
    this package as the dependencies are not available and there should not
    be enough tools around to actually build anything.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 959abb02c74bb8c56ce2e8980606bbd7dc224048
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 09:35:27 2025 +0000

    python3-packaging: Update to 25.0
    
    This is required by setuptools and therefore built before.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit aadcd09363ba908d8ca73b41b72b9aad99a12624
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 09:34:31 2025 +0000

    python3-wheel: New package
    
    Required to build wheels (at least sometimes).
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 47c89384dafe74d5280f46352debb6afeadda0a0
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Thu Aug 7 08:37:58 2025 +0000

    python3-reportlab: New package
    
    This package can generate PDF reports.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 522255c67089aa66dc32435a20fc83c0de9d176b
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:56:34 2025 +0100

    suricata-reporter: Create a example configuration file
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 67534d62a913e046cc6d6740d568feeeca0e968a
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:20:22 2025 +0100

    suricata: Rename this to an IPS at boot time
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 273cb17f61f1e696edf496206482d7f32452b238
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:19:30 2025 +0100

    initscripts: Fix lots of whitespace issues in the suricata script
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit cb74cb11e84b9f89f8a4a2481a6eeee1e2701415
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:17:48 2025 +0100

    suricata: Start the reporter daemon
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 131d09cf88db5c0d257a81d79269da4b578dd913
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:11:20 2025 +0100

    suricata: Install the reporter
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 438deca0081c58eec331e1e1490fefae70f26138
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:03:56 2025 +0100

    suricata-reporter: Add source/destination ports to the emails, too
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit a7366da0e2688fed862f7e2eddd04332ae2902f0
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 17:00:02 2025 +0100

    suricata-reporter: Don't let workers terminate if something goes wrong
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit f8c7f8c52b924c0fb7cb20edb61a0c2563fc8924
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 16:58:21 2025 +0100

    suricata-reporter: Log any alerts to a database
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 4d5c29531168be7b109053367e333c5ac556f7cd
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 16:24:29 2025 +0100

    suricata-reporter: Make ownership of the socket configurable
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 27ed0b7a61df30440e93b2ad4cf9123a9750e2a8
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 16:09:02 2025 +0100

    suricata-reporter: Make the socket path configurable
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 4fea4ffd5b74b0fd6a7709796bc4d009aa9f867e
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 16:06:23 2025 +0100

    suricata-reporter: Make the number of workers configurable
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit f87d9532828e096b5c898ccf2f698af42579a5f2
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 16:01:56 2025 +0100

    suricata-reporter: Create capability to send alerts to syslog
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit bcd0e317d55f3de8adee59e6f82272946f9d933f
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 15:31:51 2025 +0100

    suricata-reporter: Read the email configuration from file
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 990ba3634f1509c4fa31e53dea96346bb3ba9af4
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 15:12:14 2025 +0100

    suricata-reporter: Read a configuration file
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit da6d9291663e576e792a1e582dbeea920aa78cbf
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 15:04:31 2025 +0100

    suricata-reporter: Parse alerts and generate emails
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 87d0e312cec11b22af6bfa9d61320aa1d9a8d200
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Aug 6 11:13:14 2025 +0100

    suricata: Enable EVE logging to the reporter
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 3656eac2d7b38ecd877e2773146aa719d794b4c8
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 18:15:40 2025 +0100

    suricata: Fix path to the magic file
    
    Aparently it does not automatically append the suffix.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 0d59a4a0822ab6ae5e189c1e540432d64caa5948
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 18:07:57 2025 +0100

    suricata-reporter: Replace logic on termination signals
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit d0831c07693abb93e511e40dacc34a37fae8e6dd
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 18:07:30 2025 +0100

    suricata-reporter: Close the queue on termination
    
    This will allow us to not have an extra signal to check across
    processes.
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 99f9175ee04d302050709d38d906227c68af0590
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 16:04:52 2025 +0100

    suricata-reporter: Create a listening socket
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit a940e906832c7838d1be16fda4e00c90cc6a3413
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 15:33:47 2025 +0100

    suricata-reporter: Handle signals to gracefully terminate
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit d95a1ee37e514a2efa706ece609b0aeb117e249a
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 15:25:04 2025 +0100

    suricata-reporter: Create a queue we can push events into the workers with
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 4a90715ba353fd6f4de7444b56236275b79f5ae8
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 15:18:15 2025 +0100

    suricata-reporter: Create a couple of worker processes
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

commit 49fe4efad57f7707cfbb006e1f9b7e1b3f2be4c8
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Tue Aug 5 15:03:14 2025 +0100

    suricata-reporter: Create some scaffolding
    
    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

-----------------------------------------------------------------------

Summary of changes:
 config/cfgroot/ids-functions.pl                    |  46 +++
 config/cron/crontab                                |   5 +
 config/rootfiles/common/prompt                     |  19 +
 config/rootfiles/common/python3-MarkupSafe         |   1 +
 config/rootfiles/common/python3-more_itertools     |  13 +
 config/rootfiles/common/python3-pillow             | 119 ++++++
 config/rootfiles/common/python3-reportlab          | 208 ++++++++++
 config/rootfiles/common/python3-setuptools         | 427 +++++++++++++++++++++
 config/rootfiles/common/python3-wheel              |  44 +++
 config/rootfiles/common/suricata-reporter          |  11 +
 config/rootfiles/core/198/filelists/files          |   2 +
 config/rootfiles/core/198/filelists/prompt         |   1 +
 .../core/198/filelists/python3-MarkupSafe          |   1 +
 .../core/198/filelists/python3-more_itertools      |   1 +
 config/rootfiles/core/198/filelists/python3-pillow |   1 +
 .../rootfiles/core/198/filelists/python3-reportlab |   1 +
 .../core/198/filelists/python3-setuptools          |   1 +
 config/rootfiles/core/198/filelists/python3-wheel  |   1 +
 .../rootfiles/core/198/filelists/suricata-reporter |   1 +
 .../112 => core/198}/filelists/web-user-interface  |   0
 config/rootfiles/packages/python3-packaging        |  43 ++-
 config/rootfiles/packages/python3-setuptools       | 263 -------------
 config/suricata/suricata-report-cron               | 144 +++++++
 config/suricata/suricata.yaml                      |   8 +-
 doc/language_issues.en                             |  16 +-
 doc/language_issues.es                             |  15 +
 doc/language_issues.fr                             |  15 +
 doc/language_issues.it                             |  15 +
 doc/language_issues.nl                             |  15 +
 doc/language_issues.pl                             |  15 +
 doc/language_issues.ru                             |  15 +
 doc/language_issues.tr                             |  15 +
 doc/language_issues.tw                             |  15 +
 doc/language_issues.zh                             |  15 +
 doc/language_missings                              | 135 +++++++
 html/cgi-bin/ids.cgi                               | 232 +++++++++--
 .../themes/ipfire/include/fonts/Prompt-Bold.ttf    | Bin 178804 -> 0 bytes
 .../themes/ipfire/include/fonts/Prompt-Medium.ttf  | Bin 176444 -> 0 bytes
 .../themes/ipfire/include/fonts/Prompt-Regular.ttf | Bin 168932 -> 0 bytes
 langs/de/cgi-bin/de.pl                             |  16 +-
 langs/en/cgi-bin/en.pl                             |  16 +-
 langs/es/cgi-bin/es.pl                             |   1 -
 langs/fr/cgi-bin/fr.pl                             |   1 -
 langs/it/cgi-bin/it.pl                             |   1 -
 langs/nl/cgi-bin/nl.pl                             |   1 -
 langs/pl/cgi-bin/pl.pl                             |   1 -
 langs/ru/cgi-bin/ru.pl                             |   1 -
 langs/tr/cgi-bin/tr.pl                             |   1 -
 langs/tw/cgi-bin/tw.pl                             |   1 -
 langs/zh/cgi-bin/zh.pl                             |   1 -
 lfs/{wsdd => prompt}                               |  26 +-
 lfs/{python3-toml => python3-more_itertools}       |  12 +-
 lfs/python3-packaging                              |   6 +-
 lfs/{python3-Jinja2 => python3-pillow}             |  11 +-
 lfs/{python3-build => python3-reportlab}           |   6 +-
 lfs/python3-setuptools                             |  11 +-
 lfs/{python3-toml => python3-wheel}                |   8 +-
 lfs/{bird => suricata-reporter}                    |  37 +-
 lfs/web-user-interface                             |   9 +
 make.sh                                            |  32 +-
 src/initscripts/system/suricata                    |  51 ++-
 .../python3-pillow-11.3.0-fix-license.patch        |  13 +
 62 files changed, 1718 insertions(+), 424 deletions(-)
 create mode 100644 config/rootfiles/common/prompt
 create mode 100644 config/rootfiles/common/python3-more_itertools
 create mode 100644 config/rootfiles/common/python3-pillow
 create mode 100644 config/rootfiles/common/python3-reportlab
 create mode 100644 config/rootfiles/common/python3-setuptools
 create mode 100644 config/rootfiles/common/python3-wheel
 create mode 100644 config/rootfiles/common/suricata-reporter
 create mode 120000 config/rootfiles/core/198/filelists/prompt
 create mode 120000 config/rootfiles/core/198/filelists/python3-MarkupSafe
 create mode 120000 config/rootfiles/core/198/filelists/python3-more_itertools
 create mode 120000 config/rootfiles/core/198/filelists/python3-pillow
 create mode 120000 config/rootfiles/core/198/filelists/python3-reportlab
 create mode 120000 config/rootfiles/core/198/filelists/python3-setuptools
 create mode 120000 config/rootfiles/core/198/filelists/python3-wheel
 create mode 120000 config/rootfiles/core/198/filelists/suricata-reporter
 copy config/rootfiles/{oldcore/112 => core/198}/filelists/web-user-interface (100%)
 delete mode 100644 config/rootfiles/packages/python3-setuptools
 create mode 100644 config/suricata/suricata-report-cron
 delete mode 100644 html/html/themes/ipfire/include/fonts/Prompt-Bold.ttf
 delete mode 100644 html/html/themes/ipfire/include/fonts/Prompt-Medium.ttf
 delete mode 100644 html/html/themes/ipfire/include/fonts/Prompt-Regular.ttf
 copy lfs/{wsdd => prompt} (85%)
 copy lfs/{python3-toml => python3-more_itertools} (89%)
 copy lfs/{python3-Jinja2 => python3-pillow} (87%)
 copy lfs/{python3-build => python3-reportlab} (93%)
 copy lfs/{python3-toml => python3-wheel} (92%)
 copy lfs/{bird => suricata-reporter} (82%)
 create mode 100644 src/patches/python3-pillow-11.3.0-fix-license.patch

Difference in files:
diff --git a/config/cfgroot/ids-functions.pl b/config/cfgroot/ids-functions.pl
index 1a72e4c3e2..14212930e6 100644
--- a/config/cfgroot/ids-functions.pl
+++ b/config/cfgroot/ids-functions.pl
@@ -113,9 +113,15 @@ our $whitelist_file = "$rulespath/whitelist.rules";
 # (Sourcefire, Emergingthreads, etc..)
 our $rulesetsourcesfile = "$settingsdir/ruleset-sources";
 
+# File which contains the configuration for the suricata-report-generator.
+our $report_generator_config_file = "$settingsdir/reporter.conf";
+
 # The pidfile of the IDS.
 our $idspidfile = "/var/run/suricata.pid";
 
+# The pidfile of the report-generator.
+our $report_generator_pid = "/var/run/suricata/reporter.pid";
+
 # Location of suricatactrl.
 my $suricatactrl = "/usr/local/bin/suricatactrl";
 
@@ -1743,4 +1749,44 @@ sub unlock_ids_page() {
 	unlink($ids_page_lock_file);
 }
 
+#
+## Function to generate to configuration for the suricata-report-generator.
+#
+sub generate_report_generator_config() {
+	my %idssettings = ();
+
+	# Read-in IDS settings.
+	&General::readhash("$ids_settings_file", \%idssettings);
+
+	# Open config file for writing.
+	open(FILE, ">", "$report_generator_config_file") or die "Could not write to $report_generator_config_file. $!\n";
+
+	# Print notice about autogenerated file.
+	print FILE "#Autogenerated file. Any custom changes will be overwritten!\n\n";
+	
+	# Sylog settings.
+	print FILE "[syslog]\n";
+	print FILE "enabled = true\n\n";
+
+	# Mail settings.
+	print FILE "[email]\n";
+
+	# Check if mail alerts are enabled.
+	if ($idssettings{'ENABLE_EMAIL'} eq "on") {
+		print FILE "enabled = true\n";
+	} else {
+		print FILE "enabled = false\n";
+	}
+
+	print FILE "sender = $idssettings{'EMAIL_SENDER'}\n";
+	print FILE "recipients = $idssettings{'EMAIL_RECIPIENTS'}\n";
+
+	# Optionally add the severity
+	if ($idssettings{'EMAIL_ALERT_SEVERITY'}) {
+		print FILE "severity = $idssettings{'EMAIL_ALERT_SEVERITY'}\n";
+	}
+
+	close(FILE);
+}
+
 1;
diff --git a/config/cron/crontab b/config/cron/crontab
index 7088e0b750..f516bcf357 100644
--- a/config/cron/crontab
+++ b/config/cron/crontab
@@ -65,6 +65,11 @@ HOME=/
 # Perform a surciata rules update every 12 hours.
 @ 12h [ -f "/var/ipfire/red/active" ] && /usr/local/bin/update-ids-ruleset >/dev/null 2>&1
 
+# Send IPS reports
+&nice(5),bootrun	0 9 * * *   /usr/bin/suricata-report-cron daily
+&nice(5),bootrun	0 9 * * MON	/usr/bin/suricata-report-cron weekly
+&nice(5),bootrun	0 9 1 * *   /usr/bin/suricata-report-cron monthly
+
 # Update Lists for IP-based blocking every 15 minutes.
 @ 15 [ -f "/var/ipfire/red/active" ] && /usr/local/bin/update-ipblocklists >/dev/null 2>&1
 
diff --git a/config/rootfiles/common/prompt b/config/rootfiles/common/prompt
new file mode 100644
index 0000000000..bbceb84d7e
--- /dev/null
+++ b/config/rootfiles/common/prompt
@@ -0,0 +1,19 @@
+#usr/share/fonts
+usr/share/fonts/Prompt-Black.ttf
+usr/share/fonts/Prompt-BlackItalic.ttf
+usr/share/fonts/Prompt-Bold.ttf
+usr/share/fonts/Prompt-BoldItalic.ttf
+usr/share/fonts/Prompt-ExtraBold.ttf
+usr/share/fonts/Prompt-ExtraBoldItalic.ttf
+usr/share/fonts/Prompt-ExtraLight.ttf
+usr/share/fonts/Prompt-ExtraLightItalic.ttf
+usr/share/fonts/Prompt-Italic.ttf
+usr/share/fonts/Prompt-Light.ttf
+usr/share/fonts/Prompt-LightItalic.ttf
+usr/share/fonts/Prompt-Medium.ttf
+usr/share/fonts/Prompt-MediumItalic.ttf
+usr/share/fonts/Prompt-Regular.ttf
+usr/share/fonts/Prompt-SemiBold.ttf
+usr/share/fonts/Prompt-SemiBoldItalic.ttf
+usr/share/fonts/Prompt-Thin.ttf
+usr/share/fonts/Prompt-ThinItalic.ttf
diff --git a/config/rootfiles/common/python3-MarkupSafe b/config/rootfiles/common/python3-MarkupSafe
index 452ae293b2..c94e00e09a 100644
--- a/config/rootfiles/common/python3-MarkupSafe
+++ b/config/rootfiles/common/python3-MarkupSafe
@@ -14,3 +14,4 @@
 #usr/lib/python3.10/site-packages/MarkupSafe-2.1.3-py3.10-linux-xxxMACHINExxx.egg/markupsafe/_speedups.py
 #usr/lib/python3.10/site-packages/MarkupSafe-2.1.3-py3.10-linux-xxxMACHINExxx.egg/markupsafe/_speedups.pyi
 #usr/lib/python3.10/site-packages/MarkupSafe-2.1.3-py3.10-linux-xxxMACHINExxx.egg/markupsafe/py.typed
+#usr/lib/python3.10/site-packages/easy-install.pth
diff --git a/config/rootfiles/common/python3-more_itertools b/config/rootfiles/common/python3-more_itertools
new file mode 100644
index 0000000000..54e0f1e369
--- /dev/null
+++ b/config/rootfiles/common/python3-more_itertools
@@ -0,0 +1,13 @@
+#usr/lib/python3.10/site-packages/more_itertools
+#usr/lib/python3.10/site-packages/more_itertools-10.7.0.dist-info
+#usr/lib/python3.10/site-packages/more_itertools-10.7.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/more_itertools-10.7.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/more_itertools-10.7.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/more_itertools-10.7.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/more_itertools/__init__.py
+#usr/lib/python3.10/site-packages/more_itertools/__init__.pyi
+#usr/lib/python3.10/site-packages/more_itertools/more.py
+#usr/lib/python3.10/site-packages/more_itertools/more.pyi
+#usr/lib/python3.10/site-packages/more_itertools/py.typed
+#usr/lib/python3.10/site-packages/more_itertools/recipes.py
+#usr/lib/python3.10/site-packages/more_itertools/recipes.pyi
diff --git a/config/rootfiles/common/python3-pillow b/config/rootfiles/common/python3-pillow
new file mode 100644
index 0000000000..67314e6b9e
--- /dev/null
+++ b/config/rootfiles/common/python3-pillow
@@ -0,0 +1,119 @@
+usr/lib/python3.10/site-packages/PIL
+#usr/lib/python3.10/site-packages/PIL/AvifImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/BdfFontFile.py
+#usr/lib/python3.10/site-packages/PIL/BlpImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/BmpImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/ContainerIO.py
+#usr/lib/python3.10/site-packages/PIL/CurImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/DcxImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/DdsImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/EpsImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/ExifTags.py
+#usr/lib/python3.10/site-packages/PIL/FitsImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/FliImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/FontFile.py
+#usr/lib/python3.10/site-packages/PIL/FpxImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/FtexImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/GbrImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/GdImageFile.py
+#usr/lib/python3.10/site-packages/PIL/GifImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/GimpGradientFile.py
+#usr/lib/python3.10/site-packages/PIL/GimpPaletteFile.py
+#usr/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/IcoImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/ImImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/Image.py
+#usr/lib/python3.10/site-packages/PIL/ImageChops.py
+#usr/lib/python3.10/site-packages/PIL/ImageCms.py
+#usr/lib/python3.10/site-packages/PIL/ImageColor.py
+#usr/lib/python3.10/site-packages/PIL/ImageDraw.py
+#usr/lib/python3.10/site-packages/PIL/ImageDraw2.py
+#usr/lib/python3.10/site-packages/PIL/ImageEnhance.py
+#usr/lib/python3.10/site-packages/PIL/ImageFile.py
+#usr/lib/python3.10/site-packages/PIL/ImageFilter.py
+#usr/lib/python3.10/site-packages/PIL/ImageFont.py
+#usr/lib/python3.10/site-packages/PIL/ImageGrab.py
+#usr/lib/python3.10/site-packages/PIL/ImageMath.py
+#usr/lib/python3.10/site-packages/PIL/ImageMode.py
+#usr/lib/python3.10/site-packages/PIL/ImageMorph.py
+#usr/lib/python3.10/site-packages/PIL/ImageOps.py
+#usr/lib/python3.10/site-packages/PIL/ImagePalette.py
+#usr/lib/python3.10/site-packages/PIL/ImagePath.py
+#usr/lib/python3.10/site-packages/PIL/ImageQt.py
+#usr/lib/python3.10/site-packages/PIL/ImageSequence.py
+#usr/lib/python3.10/site-packages/PIL/ImageShow.py
+#usr/lib/python3.10/site-packages/PIL/ImageStat.py
+#usr/lib/python3.10/site-packages/PIL/ImageTk.py
+#usr/lib/python3.10/site-packages/PIL/ImageTransform.py
+#usr/lib/python3.10/site-packages/PIL/ImageWin.py
+#usr/lib/python3.10/site-packages/PIL/ImtImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/IptcImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/JpegImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/JpegPresets.py
+#usr/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/MicImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/MpegImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/MpoImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/MspImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PSDraw.py
+#usr/lib/python3.10/site-packages/PIL/PaletteFile.py
+#usr/lib/python3.10/site-packages/PIL/PalmImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PcdImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PcfFontFile.py
+#usr/lib/python3.10/site-packages/PIL/PcxImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PdfImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PdfParser.py
+#usr/lib/python3.10/site-packages/PIL/PixarImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PngImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PpmImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/PsdImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/QoiImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/SgiImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/SunImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/TarIO.py
+#usr/lib/python3.10/site-packages/PIL/TgaImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/TiffImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/TiffTags.py
+#usr/lib/python3.10/site-packages/PIL/WalImageFile.py
+#usr/lib/python3.10/site-packages/PIL/WebPImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/WmfImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/XbmImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/XpmImagePlugin.py
+#usr/lib/python3.10/site-packages/PIL/__init__.py
+#usr/lib/python3.10/site-packages/PIL/__main__.py
+#usr/lib/python3.10/site-packages/PIL/_avif.pyi
+#usr/lib/python3.10/site-packages/PIL/_binary.py
+#usr/lib/python3.10/site-packages/PIL/_deprecate.py
+#usr/lib/python3.10/site-packages/PIL/_imaging.cpython-310-xxxMACHINExxx-linux-gnu.so
+#usr/lib/python3.10/site-packages/PIL/_imaging.pyi
+#usr/lib/python3.10/site-packages/PIL/_imagingcms.pyi
+#usr/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-xxxMACHINExxx-linux-gnu.so
+#usr/lib/python3.10/site-packages/PIL/_imagingft.pyi
+#usr/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-xxxMACHINExxx-linux-gnu.so
+#usr/lib/python3.10/site-packages/PIL/_imagingmath.pyi
+#usr/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-xxxMACHINExxx-linux-gnu.so
+#usr/lib/python3.10/site-packages/PIL/_imagingmorph.pyi
+#usr/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-xxxMACHINExxx-linux-gnu.so
+#usr/lib/python3.10/site-packages/PIL/_imagingtk.pyi
+#usr/lib/python3.10/site-packages/PIL/_tkinter_finder.py
+#usr/lib/python3.10/site-packages/PIL/_typing.py
+#usr/lib/python3.10/site-packages/PIL/_util.py
+#usr/lib/python3.10/site-packages/PIL/_version.py
+#usr/lib/python3.10/site-packages/PIL/_webp.pyi
+#usr/lib/python3.10/site-packages/PIL/features.py
+#usr/lib/python3.10/site-packages/PIL/py.typed
+#usr/lib/python3.10/site-packages/PIL/report.py
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/licenses/LICENSE
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/pillow-11.3.0.dist-info/zip-safe
diff --git a/config/rootfiles/common/python3-reportlab b/config/rootfiles/common/python3-reportlab
new file mode 100644
index 0000000000..f1372c6629
--- /dev/null
+++ b/config/rootfiles/common/python3-reportlab
@@ -0,0 +1,208 @@
+#usr/lib/python3.10/site-packages/reportlab
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info/PKG-INFO
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info/SOURCES.txt
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info/dependency_links.txt
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info/requires.txt
+#usr/lib/python3.10/site-packages/reportlab-4.4.3-py3.10.egg-info/top_level.txt
+usr/lib/python3.10/site-packages/reportlab/__init__.py
+usr/lib/python3.10/site-packages/reportlab/fonts
+usr/lib/python3.10/site-packages/reportlab/fonts/00readme.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGarden-changelog.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGarden-copying-gpl.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGarden-copying.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGarden-readme.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGarden.sfd
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGardenMK.afm
+usr/lib/python3.10/site-packages/reportlab/fonts/DarkGardenMK.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/Vera.ttf
+usr/lib/python3.10/site-packages/reportlab/fonts/VeraBI.ttf
+usr/lib/python3.10/site-packages/reportlab/fonts/VeraBd.ttf
+usr/lib/python3.10/site-packages/reportlab/fonts/VeraIt.ttf
+usr/lib/python3.10/site-packages/reportlab/fonts/_a______.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_ab_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_abi____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_ai_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_eb_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_ebi____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_ei_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/_er_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/bitstream-vera-license.txt
+usr/lib/python3.10/site-packages/reportlab/fonts/callig15.afm
+usr/lib/python3.10/site-packages/reportlab/fonts/callig15.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/cob_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/cobo____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/com_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/coo_____.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/hb-test.ttf
+usr/lib/python3.10/site-packages/reportlab/fonts/sy______.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/zd______.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/zx______.pfb
+usr/lib/python3.10/site-packages/reportlab/fonts/zy______.pfb
+usr/lib/python3.10/site-packages/reportlab/graphics
+usr/lib/python3.10/site-packages/reportlab/graphics/__init__.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/__init__.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/code128.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/code39.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/code93.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/common.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/dmtx.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/eanbc.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/ecc200datamatrix.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/fourstate.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/lto.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/qr.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/qrencoder.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/test.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/usps.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/usps4s.py
+usr/lib/python3.10/site-packages/reportlab/graphics/barcode/widgets.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/__init__.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/areas.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/axes.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/barcharts.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/dotbox.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/doughnut.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/legends.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/linecharts.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/lineplots.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/markers.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/piecharts.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/slidebox.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/spider.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/textlabels.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/utils.py
+usr/lib/python3.10/site-packages/reportlab/graphics/charts/utils3d.py
+usr/lib/python3.10/site-packages/reportlab/graphics/renderPDF.py
+usr/lib/python3.10/site-packages/reportlab/graphics/renderPM.py
+usr/lib/python3.10/site-packages/reportlab/graphics/renderPS.py
+usr/lib/python3.10/site-packages/reportlab/graphics/renderSVG.py
+usr/lib/python3.10/site-packages/reportlab/graphics/renderbase.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/__init__.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/bubble.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/clustered_bar.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/clustered_column.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/excelcolors.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/exploded_pie.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/filled_radar.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/line_chart.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/linechart_with_markers.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/radar.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/runall.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/scatter.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/scatter_lines.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/scatter_lines_markers.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/simple_pie.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/stacked_bar.py
+usr/lib/python3.10/site-packages/reportlab/graphics/samples/stacked_column.py
+usr/lib/python3.10/site-packages/reportlab/graphics/shapes.py
+usr/lib/python3.10/site-packages/reportlab/graphics/svgpath.py
+usr/lib/python3.10/site-packages/reportlab/graphics/testdrawings.py
+usr/lib/python3.10/site-packages/reportlab/graphics/testshapes.py
+usr/lib/python3.10/site-packages/reportlab/graphics/transform.py
+usr/lib/python3.10/site-packages/reportlab/graphics/utils.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgetbase.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/__init__.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/adjustableArrow.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/eventcal.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/flags.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/grids.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/markers.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/signsandsymbols.py
+usr/lib/python3.10/site-packages/reportlab/graphics/widgets/table.py
+usr/lib/python3.10/site-packages/reportlab/lib
+usr/lib/python3.10/site-packages/reportlab/lib/PyFontify.py
+usr/lib/python3.10/site-packages/reportlab/lib/__init__.py
+usr/lib/python3.10/site-packages/reportlab/lib/abag.py
+usr/lib/python3.10/site-packages/reportlab/lib/arciv.py
+usr/lib/python3.10/site-packages/reportlab/lib/attrmap.py
+usr/lib/python3.10/site-packages/reportlab/lib/boxstuff.py
+usr/lib/python3.10/site-packages/reportlab/lib/codecharts.py
+usr/lib/python3.10/site-packages/reportlab/lib/colors.py
+usr/lib/python3.10/site-packages/reportlab/lib/corp.py
+usr/lib/python3.10/site-packages/reportlab/lib/enums.py
+usr/lib/python3.10/site-packages/reportlab/lib/extformat.py
+usr/lib/python3.10/site-packages/reportlab/lib/fontfinder.py
+usr/lib/python3.10/site-packages/reportlab/lib/fonts.py
+usr/lib/python3.10/site-packages/reportlab/lib/formatters.py
+usr/lib/python3.10/site-packages/reportlab/lib/geomutils.py
+usr/lib/python3.10/site-packages/reportlab/lib/logger.py
+usr/lib/python3.10/site-packages/reportlab/lib/normalDate.py
+usr/lib/python3.10/site-packages/reportlab/lib/pagesizes.py
+usr/lib/python3.10/site-packages/reportlab/lib/pdfencrypt.py
+usr/lib/python3.10/site-packages/reportlab/lib/pygments2xpre.py
+usr/lib/python3.10/site-packages/reportlab/lib/randomtext.py
+usr/lib/python3.10/site-packages/reportlab/lib/rl_accel.py
+usr/lib/python3.10/site-packages/reportlab/lib/rl_safe_eval.py
+usr/lib/python3.10/site-packages/reportlab/lib/rltempfile.py
+usr/lib/python3.10/site-packages/reportlab/lib/rparsexml.py
+usr/lib/python3.10/site-packages/reportlab/lib/sequencer.py
+usr/lib/python3.10/site-packages/reportlab/lib/styles.py
+usr/lib/python3.10/site-packages/reportlab/lib/testutils.py
+usr/lib/python3.10/site-packages/reportlab/lib/textsplit.py
+usr/lib/python3.10/site-packages/reportlab/lib/units.py
+usr/lib/python3.10/site-packages/reportlab/lib/utils.py
+usr/lib/python3.10/site-packages/reportlab/lib/validators.py
+usr/lib/python3.10/site-packages/reportlab/lib/yaml.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase
+usr/lib/python3.10/site-packages/reportlab/pdfbase/__init__.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_can_cmap_data.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_cidfontdata.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_macexpert.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_macroman.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_pdfdoc.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_standard.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_symbol.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_winansi.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_enc_zapfdingbats.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_courier.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_courierbold.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_courierboldoblique.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_courieroblique.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_helvetica.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_helveticabold.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_helveticaboldoblique.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_helveticaoblique.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_symbol.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_timesbold.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_timesbolditalic.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_timesitalic.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_timesroman.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_fontdata_widths_zapfdingbats.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/_glyphlist.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/acroform.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/cidfonts.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/pdfdoc.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/pdfform.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/pdfmetrics.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/pdfpattern.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/pdfutils.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/rl_codecs.py
+usr/lib/python3.10/site-packages/reportlab/pdfbase/ttfonts.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen
+usr/lib/python3.10/site-packages/reportlab/pdfgen/__init__.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen/canvas.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen/pathobject.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen/pdfgeom.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen/pdfimages.py
+usr/lib/python3.10/site-packages/reportlab/pdfgen/textobject.py
+usr/lib/python3.10/site-packages/reportlab/platypus
+usr/lib/python3.10/site-packages/reportlab/platypus/__init__.py
+usr/lib/python3.10/site-packages/reportlab/platypus/doctemplate.py
+usr/lib/python3.10/site-packages/reportlab/platypus/figures.py
+usr/lib/python3.10/site-packages/reportlab/platypus/flowables.py
+usr/lib/python3.10/site-packages/reportlab/platypus/frames.py
+usr/lib/python3.10/site-packages/reportlab/platypus/multicol.py
+usr/lib/python3.10/site-packages/reportlab/platypus/para.py
+usr/lib/python3.10/site-packages/reportlab/platypus/paragraph.py
+usr/lib/python3.10/site-packages/reportlab/platypus/paraparser.py
+usr/lib/python3.10/site-packages/reportlab/platypus/tableofcontents.py
+usr/lib/python3.10/site-packages/reportlab/platypus/tables.py
+usr/lib/python3.10/site-packages/reportlab/platypus/xpreformatted.py
+usr/lib/python3.10/site-packages/reportlab/rl_config.py
+usr/lib/python3.10/site-packages/reportlab/rl_settings.py
diff --git a/config/rootfiles/common/python3-setuptools b/config/rootfiles/common/python3-setuptools
new file mode 100644
index 0000000000..b405aad889
--- /dev/null
+++ b/config/rootfiles/common/python3-setuptools
@@ -0,0 +1,427 @@
+#usr/lib/python3.10/site-packages/pkg_resources/api_tests.txt
+#usr/lib/python3.10/site-packages/pkg_resources/py.typed
+#usr/lib/python3.10/site-packages/pkg_resources/tests
+#usr/lib/python3.10/site-packages/pkg_resources/tests/__init__.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.cfg
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-zip
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-zip/my-test-package.zip
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/PKG-INFO
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/SOURCES.txt
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/dependency_links.txt
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/top_level.txt
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/zip-safe
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_zipped-egg
+#usr/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package_zipped-egg/my_test_package-1.0-py3.7.egg
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_find_distributions.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_integration_zope_interface.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_markers.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_pkg_resources.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_resources.py
+#usr/lib/python3.10/site-packages/pkg_resources/tests/test_working_set.py
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/PKG-INFO
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/SOURCES.txt
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/dependency_links.txt
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/entry_points.txt
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/requires.txt
+#usr/lib/python3.10/site-packages/setuptools-80.9.0-py3.10.egg-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_core_metadata.py
+#usr/lib/python3.10/site-packages/setuptools/_discovery.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/_log.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/_modified.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compat
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compat/numpy.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compat/py39.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/base.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/cygwin.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/errors.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/msvc.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests/test_base.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests/test_cygwin.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests/test_mingw.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/unix.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/compilers/C/zos.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/compat
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/compat/py39.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/support.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_archive_util.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_bdist.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build_clib.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build_ext.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build_py.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_build_scripts.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_check.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_clean.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_cmd.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_config_cmd.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_core.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_dir_util.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_dist.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_extension.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_file_util.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_filelist.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install_data.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install_headers.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install_lib.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_install_scripts.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_log.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_modified.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_sdist.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_spawn.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_sysconfig.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_text_file.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_util.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_version.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/test_versionpredicate.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/tests/unix_compat.py
+#usr/lib/python3.10/site-packages/setuptools/_distutils/zosccompiler.py
+#usr/lib/python3.10/site-packages/setuptools/_normalization.py
+#usr/lib/python3.10/site-packages/setuptools/_scripts.py
+#usr/lib/python3.10/site-packages/setuptools/_shutil.py
+#usr/lib/python3.10/site-packages/setuptools/_static.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/autoasync.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/autocommand.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/automain.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/autoparse.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/autocommand/errors.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile/__main__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile/compat
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/compat
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect/compat
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect/compat/py38.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/inflect/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/collections
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/collections/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/collections/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/Lorem ipsum.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/layouts.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.pyi
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.pyi
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.pyi
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/LICENSE.APACHE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/LICENSE.BSD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging-24.2.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/_elffile.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/_parser.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/_tokenizer.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/licenses
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/licenses/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/metadata.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/packaging/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/licenses
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/licenses/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/__main__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/android.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/api.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/macos.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/unix.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/version.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/platformdirs/windows.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/tomli/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/entry_points.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_checkers.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_config.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_decorators.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_exceptions.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_functions.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_importhook.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_memo.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_suppression.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_transformer.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_union_transformer.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/_utils.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typeguard/py.typed
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/LICENSE.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel-0.45.1.dist-info/entry_points.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/__main__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/bdist_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli/convert.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli/pack.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli/tags.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/cli/unpack.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/macosx_libfile.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/metadata.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/util.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/LICENSE.APACHE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/LICENSE.BSD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/vendored/vendor.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/wheel/wheelfile.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/INSTALLER
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/LICENSE
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/METADATA
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/RECORD
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/REQUESTED
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/top_level.txt
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp/compat
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp/compat/py310.py
+#usr/lib/python3.10/site-packages/setuptools/_vendor/zipp/glob.py
+#usr/lib/python3.10/site-packages/setuptools/command/_requirestxt.py
+#usr/lib/python3.10/site-packages/setuptools/command/bdist_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/command/editable_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/compat
+#usr/lib/python3.10/site-packages/setuptools/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/compat/py310.py
+#usr/lib/python3.10/site-packages/setuptools/compat/py311.py
+#usr/lib/python3.10/site-packages/setuptools/compat/py312.py
+#usr/lib/python3.10/site-packages/setuptools/compat/py39.py
+#usr/lib/python3.10/site-packages/setuptools/config/NOTICE
+#usr/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/NOTICE
+#usr/lib/python3.10/site-packages/setuptools/config/distutils.schema.json
+#usr/lib/python3.10/site-packages/setuptools/config/setuptools.schema.json
+#usr/lib/python3.10/site-packages/setuptools/modified.py
+#usr/lib/python3.10/site-packages/setuptools/tests
+#usr/lib/python3.10/site-packages/setuptools/tests/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/tests/compat
+#usr/lib/python3.10/site-packages/setuptools/tests/compat/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/tests/compat/py39.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config
+#usr/lib/python3.10/site-packages/setuptools/tests/config/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/downloads
+#usr/lib/python3.10/site-packages/setuptools/tests/config/downloads/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/downloads/preload.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/setupcfg_examples.txt
+#usr/lib/python3.10/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/test_expand.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/test_pyprojecttoml.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py
+#usr/lib/python3.10/site-packages/setuptools/tests/config/test_setupcfg.py
+#usr/lib/python3.10/site-packages/setuptools/tests/contexts.py
+#usr/lib/python3.10/site-packages/setuptools/tests/environment.py
+#usr/lib/python3.10/site-packages/setuptools/tests/fixtures.py
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes/test_links_priority
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes/test_links_priority/external.html
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes/test_links_priority/simple
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes/test_links_priority/simple/foobar
+#usr/lib/python3.10/site-packages/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
+#usr/lib/python3.10/site-packages/setuptools/tests/integration
+#usr/lib/python3.10/site-packages/setuptools/tests/integration/__init__.py
+#usr/lib/python3.10/site-packages/setuptools/tests/integration/helpers.py
+#usr/lib/python3.10/site-packages/setuptools/tests/integration/test_pbr.py
+#usr/lib/python3.10/site-packages/setuptools/tests/integration/test_pip_install_sdist.py
+#usr/lib/python3.10/site-packages/setuptools/tests/mod_with_constant.py
+#usr/lib/python3.10/site-packages/setuptools/tests/namespaces.py
+#usr/lib/python3.10/site-packages/setuptools/tests/script-with-bom.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_archive_util.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_bdist_deprecations.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_bdist_egg.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_bdist_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_build.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_build_clib.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_build_ext.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_build_meta.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_build_py.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_config_discovery.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_core_metadata.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_depends.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_develop.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_dist.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_dist_info.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_distutils_adoption.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_editable_install.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_egg_info.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_extern.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_find_packages.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_find_py_modules.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_glob.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_install_scripts.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_logging.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_manifest.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_namespaces.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_scripts.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_sdist.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_setopt.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_setuptools.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_shutil_wrapper.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_unicode_utils.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_virtualenv.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_warnings.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_wheel.py
+#usr/lib/python3.10/site-packages/setuptools/tests/test_windows_wrappers.py
+#usr/lib/python3.10/site-packages/setuptools/tests/text.py
+#usr/lib/python3.10/site-packages/setuptools/tests/textwrap.py
+#usr/lib/python3.10/site-packages/setuptools/warnings.py
diff --git a/config/rootfiles/common/python3-wheel b/config/rootfiles/common/python3-wheel
new file mode 100644
index 0000000000..14e3f61e65
--- /dev/null
+++ b/config/rootfiles/common/python3-wheel
@@ -0,0 +1,44 @@
+#usr/bin/wheel
+#usr/lib/python3.10/site-packages/wheel
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/PKG-INFO
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/SOURCES.txt
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/dependency_links.txt
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/entry_points.txt
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/requires.txt
+#usr/lib/python3.10/site-packages/wheel-0.45.1-py3.10.egg-info/top_level.txt
+#usr/lib/python3.10/site-packages/wheel/__init__.py
+#usr/lib/python3.10/site-packages/wheel/__main__.py
+#usr/lib/python3.10/site-packages/wheel/_bdist_wheel.py
+#usr/lib/python3.10/site-packages/wheel/_setuptools_logging.py
+#usr/lib/python3.10/site-packages/wheel/bdist_wheel.py
+#usr/lib/python3.10/site-packages/wheel/cli
+#usr/lib/python3.10/site-packages/wheel/cli/__init__.py
+#usr/lib/python3.10/site-packages/wheel/cli/convert.py
+#usr/lib/python3.10/site-packages/wheel/cli/pack.py
+#usr/lib/python3.10/site-packages/wheel/cli/tags.py
+#usr/lib/python3.10/site-packages/wheel/cli/unpack.py
+#usr/lib/python3.10/site-packages/wheel/macosx_libfile.py
+#usr/lib/python3.10/site-packages/wheel/metadata.py
+#usr/lib/python3.10/site-packages/wheel/util.py
+#usr/lib/python3.10/site-packages/wheel/vendored
+#usr/lib/python3.10/site-packages/wheel/vendored/__init__.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/LICENSE
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/LICENSE.APACHE
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/LICENSE.BSD
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/__init__.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_elffile.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_manylinux.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_musllinux.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_parser.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_structures.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/_tokenizer.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/markers.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/requirements.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/specifiers.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/tags.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/utils.py
+#usr/lib/python3.10/site-packages/wheel/vendored/packaging/version.py
+#usr/lib/python3.10/site-packages/wheel/vendored/vendor.txt
+#usr/lib/python3.10/site-packages/wheel/wheelfile.py
diff --git a/config/rootfiles/common/suricata-reporter b/config/rootfiles/common/suricata-reporter
new file mode 100644
index 0000000000..b2416625f9
--- /dev/null
+++ b/config/rootfiles/common/suricata-reporter
@@ -0,0 +1,11 @@
+etc/suricata/reporter.conf
+usr/bin/suricata-reporter
+usr/bin/suricata-report-cron
+usr/bin/suricata-report-generator
+#usr/share/doc/suricata-reporter
+#usr/share/doc/suricata-reporter/COPYING
+#usr/share/doc/suricata-reporter/README.md
+usr/share/locale/de_DE
+usr/share/locale/de_DE/LC_MESSAGES
+usr/share/locale/de_DE/LC_MESSAGES/suricata-reporter.mo
+var/ipfire/suricata/reporter.conf
diff --git a/config/rootfiles/core/198/filelists/files b/config/rootfiles/core/198/filelists/files
index 9a71c3df6d..ff40a305f9 100644
--- a/config/rootfiles/core/198/filelists/files
+++ b/config/rootfiles/core/198/filelists/files
@@ -1 +1,3 @@
+etc/rc.d/init.d/suricata
 var/ipfire/graphs.pl
+var/ipfire/ids-functions.pl
diff --git a/config/rootfiles/core/198/filelists/prompt b/config/rootfiles/core/198/filelists/prompt
new file mode 120000
index 0000000000..ac8ac24ec4
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/prompt
@@ -0,0 +1 @@
+../../../common/prompt
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-MarkupSafe b/config/rootfiles/core/198/filelists/python3-MarkupSafe
new file mode 120000
index 0000000000..373a01865b
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-MarkupSafe
@@ -0,0 +1 @@
+../../../common/python3-MarkupSafe
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-more_itertools b/config/rootfiles/core/198/filelists/python3-more_itertools
new file mode 120000
index 0000000000..0e4ea81fad
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-more_itertools
@@ -0,0 +1 @@
+../../../common/python3-more_itertools
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-pillow b/config/rootfiles/core/198/filelists/python3-pillow
new file mode 120000
index 0000000000..f13b4f9f3f
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-pillow
@@ -0,0 +1 @@
+../../../common/python3-pillow
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-reportlab b/config/rootfiles/core/198/filelists/python3-reportlab
new file mode 120000
index 0000000000..075d3e119b
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-reportlab
@@ -0,0 +1 @@
+../../../common/python3-reportlab
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-setuptools b/config/rootfiles/core/198/filelists/python3-setuptools
new file mode 120000
index 0000000000..26db0b44aa
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-setuptools
@@ -0,0 +1 @@
+../../../common/python3-setuptools
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/python3-wheel b/config/rootfiles/core/198/filelists/python3-wheel
new file mode 120000
index 0000000000..85e26b254d
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/python3-wheel
@@ -0,0 +1 @@
+../../../common/python3-wheel
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/suricata-reporter b/config/rootfiles/core/198/filelists/suricata-reporter
new file mode 120000
index 0000000000..23f2cd87d4
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/suricata-reporter
@@ -0,0 +1 @@
+../../../common/suricata-reporter
\ No newline at end of file
diff --git a/config/rootfiles/core/198/filelists/web-user-interface b/config/rootfiles/core/198/filelists/web-user-interface
new file mode 120000
index 0000000000..70c74b4382
--- /dev/null
+++ b/config/rootfiles/core/198/filelists/web-user-interface
@@ -0,0 +1 @@
+../../../common/web-user-interface
\ No newline at end of file
diff --git a/config/rootfiles/packages/python3-packaging b/config/rootfiles/packages/python3-packaging
index 6c1ee4773f..c0854af638 100644
--- a/config/rootfiles/packages/python3-packaging
+++ b/config/rootfiles/packages/python3-packaging
@@ -1,21 +1,24 @@
 usr/lib/python3.10/site-packages/packaging
-#usr/lib/python3.10/site-packages/packaging-23.2-py3.10.egg-info
-#usr/lib/python3.10/site-packages/packaging-23.2-py3.10.egg-info/PKG-INFO
-#usr/lib/python3.10/site-packages/packaging-23.2-py3.10.egg-info/SOURCES.txt
-#usr/lib/python3.10/site-packages/packaging-23.2-py3.10.egg-info/dependency_links.txt
-#usr/lib/python3.10/site-packages/packaging-23.2-py3.10.egg-info/top_level.txt
-usr/lib/python3.10/site-packages/packaging/__init__.py
-usr/lib/python3.10/site-packages/packaging/_elffile.py
-usr/lib/python3.10/site-packages/packaging/_manylinux.py
-usr/lib/python3.10/site-packages/packaging/_musllinux.py
-usr/lib/python3.10/site-packages/packaging/_parser.py
-usr/lib/python3.10/site-packages/packaging/_structures.py
-usr/lib/python3.10/site-packages/packaging/_tokenizer.py
-usr/lib/python3.10/site-packages/packaging/markers.py
-usr/lib/python3.10/site-packages/packaging/metadata.py
-usr/lib/python3.10/site-packages/packaging/py.typed
-usr/lib/python3.10/site-packages/packaging/requirements.py
-usr/lib/python3.10/site-packages/packaging/specifiers.py
-usr/lib/python3.10/site-packages/packaging/tags.py
-usr/lib/python3.10/site-packages/packaging/utils.py
-usr/lib/python3.10/site-packages/packaging/version.py
+#usr/lib/python3.10/site-packages/packaging-25.0-py3.10.egg-info
+#usr/lib/python3.10/site-packages/packaging-25.0-py3.10.egg-info/PKG-INFO
+#usr/lib/python3.10/site-packages/packaging-25.0-py3.10.egg-info/SOURCES.txt
+#usr/lib/python3.10/site-packages/packaging-25.0-py3.10.egg-info/dependency_links.txt
+#usr/lib/python3.10/site-packages/packaging-25.0-py3.10.egg-info/top_level.txt
+#usr/lib/python3.10/site-packages/packaging/__init__.py
+#usr/lib/python3.10/site-packages/packaging/_elffile.py
+#usr/lib/python3.10/site-packages/packaging/_manylinux.py
+#usr/lib/python3.10/site-packages/packaging/_musllinux.py
+#usr/lib/python3.10/site-packages/packaging/_parser.py
+#usr/lib/python3.10/site-packages/packaging/_structures.py
+#usr/lib/python3.10/site-packages/packaging/_tokenizer.py
+#usr/lib/python3.10/site-packages/packaging/licenses
+#usr/lib/python3.10/site-packages/packaging/licenses/__init__.py
+#usr/lib/python3.10/site-packages/packaging/licenses/_spdx.py
+#usr/lib/python3.10/site-packages/packaging/markers.py
+#usr/lib/python3.10/site-packages/packaging/metadata.py
+#usr/lib/python3.10/site-packages/packaging/py.typed
+#usr/lib/python3.10/site-packages/packaging/requirements.py
+#usr/lib/python3.10/site-packages/packaging/specifiers.py
+#usr/lib/python3.10/site-packages/packaging/tags.py
+#usr/lib/python3.10/site-packages/packaging/utils.py
+#usr/lib/python3.10/site-packages/packaging/version.py
diff --git a/config/rootfiles/packages/python3-setuptools b/config/rootfiles/packages/python3-setuptools
deleted file mode 100644
index be2f13a44b..0000000000
--- a/config/rootfiles/packages/python3-setuptools
+++ /dev/null
@@ -1,263 +0,0 @@
-#usr/lib/python3.10/site-packages/easy-install.pth
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/PKG-INFO
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/SOURCES.txt
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/dependency_links.txt
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/entry_points.txt
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/not-zip-safe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/requires.txt
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/EGG-INFO/top_level.txt
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/_distutils_hack
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/_distutils_hack/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/_distutils_hack/override.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/_adapters.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/_common.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/_compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/_itertools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/_legacy.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/abc.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/readers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/importlib_resources/simple.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco/context.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco/functools.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco/text
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/jaraco/text/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/more_itertools
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/more_itertools/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/more_itertools/more.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/more_itertools/recipes.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_elffile.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_manylinux.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_musllinux.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_parser.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_structures.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/_tokenizer.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/markers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/requirements.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/specifiers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/tags.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/utils.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/packaging/version.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/__main__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/android.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/api.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/macos.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/unix.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/version.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/platformdirs/windows.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/typing_extensions.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/_vendor/zipp.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/extern
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/pkg_resources/extern/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_deprecation_warning.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/_collections.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/_functools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/_log.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/_macos_compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/_msvccompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/archive_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/bcppcompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/ccompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/cmd.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/_framework_compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/bdist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/bdist_dumb.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/bdist_rpm.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/build.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/build_clib.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/build_ext.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/build_py.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/build_scripts.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/check.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/clean.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/config.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install_data.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install_egg_info.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install_headers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install_lib.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/install_scripts.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/py37compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/register.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/sdist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/command/upload.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/config.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/core.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/cygwinccompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/debug.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/dep_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/dir_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/dist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/errors.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/extension.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/fancy_getopt.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/file_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/filelist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/log.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/msvc9compiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/msvccompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/py38compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/py39compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/spawn.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/sysconfig.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/text_file.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/unixccompiler.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/version.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_distutils/versionpredicate.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_entry_points.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_imp.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_importlib.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_itertools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_normalization.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_path.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_reqs.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_adapters.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_collections.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_functools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_itertools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_meta.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_py39compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_metadata/_text.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/_adapters.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/_common.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/_compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/_itertools.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/_legacy.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/abc.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/readers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/importlib_resources/simple.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco/context.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco/functools.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco/text
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/jaraco/text/__init__.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/more_itertools
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/more_itertools/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/more_itertools/more.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/more_itertools/recipes.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/ordered_set.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_elffile.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_manylinux.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_musllinux.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_parser.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_structures.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/_tokenizer.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/markers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/requirements.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/specifiers.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/tags.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/utils.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/packaging/version.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/tomli
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/tomli/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/tomli/_parser.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/tomli/_re.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/tomli/_types.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/typing_extensions.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/_vendor/zipp.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/archive_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/build_meta.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/cli-32.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/cli-64.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/cli-arm64.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/cli.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/alias.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/bdist_egg.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/bdist_rpm.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/build.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/build_clib.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/build_ext.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/build_py.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/develop.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/dist_info.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/easy_install.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/editable_wheel.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/egg_info.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/install.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/install_egg_info.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/install_lib.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/install_scripts.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/launcher manifest.xml
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/py36compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/register.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/rotate.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/saveopts.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/sdist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/setopt.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/test.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/upload.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/command/upload_docs.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_apply_pyprojecttoml.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/error_reporting.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/extra_validations.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/fastjsonschema_validations.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/_validate_pyproject/formats.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/expand.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/pyprojecttoml.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/config/setupcfg.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/dep_util.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/depends.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/discovery.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/dist.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/errors.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/extension.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/extern
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/extern/__init__.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/glob.py
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/gui-32.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/gui-64.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/gui-arm64.exe
-#usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/gui.exe
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/installer.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/launch.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/logging.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/monkey.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/msvc.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/namespaces.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/package_index.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/py34compat.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/sandbox.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/script (dev).tmpl
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/script.tmpl
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/unicode_utils.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/version.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/wheel.py
-usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/windows_support.py
-#usr/lib/python3.10/site-packages/setuptools.pth
diff --git a/config/suricata/suricata-report-cron b/config/suricata/suricata-report-cron
new file mode 100644
index 0000000000..3aa4cc8f89
--- /dev/null
+++ b/config/suricata/suricata-report-cron
@@ -0,0 +1,144 @@
+#!/bin/bash
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2025  Michael Tremer                                          #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+. /etc/sysconfig/rc
+. "${rc_functions}"
+
+# Read the IPS settings
+readhash CONFIG "/var/ipfire/suricata/settings"
+
+send_report() {
+	local args=( "$@" )
+	local address
+
+	# Add the email sender
+	if [ -n "${CONFIG[EMAIL_SENDER]}" ]; then
+		args+=( "--email-sender=${CONFIG[EMAIL_SENDER]}" )
+
+	# Fail if we don't have a sender
+	else
+		echo "${0}: Cannot send reports with EMAIL_SENDER being set" >&2
+		return 2
+	fi
+
+	local IFS=','
+
+	# Append the email recipients
+	for address in ${CONFIG[EMAIL_RECIPIENTS]}; do
+		args+=( "--email-recipient=${address}" )
+	done
+
+	# Generate the report
+	if ! suricata-report-generator "${args[@]}"; then
+		return 1
+	fi
+
+	return 0
+}
+
+send_monthly_report() {
+	# Check if we are supposed to send monthly reports
+	case "${CONFIG[ENABLE_REPORT_MONTHLY]}" in
+		on)
+			;;
+		*)
+			return 0
+			;;
+	esac
+
+	# Determine the last month
+	local y="$(date --date="last month" +"%Y")"
+	local m="$(date --date="last month" +"%m")"
+
+	# Send the report
+	send_report --year="${y}" --month="${m}"
+}
+
+send_weekly_report() {
+	# Check if we are supposed to send weekly reports
+	case "${CONFIG[ENABLE_REPORT_WEEKLY]}" in
+		on)
+			;;
+		*)
+			return 0
+			;;
+	esac
+
+	# Determine last week
+	local y="$(date --date="last week" +"%Y")"
+	local w="$(date --date="last week" +"%V")"
+
+	# Send the report
+	send_report --year="${y}" --week="${w}"
+}
+
+# Sends a daily report for "yesterday"
+send_daily_report() {
+	# Check if we are supposed to send daily reports
+	case "${CONFIG[ENABLE_REPORT_DAILY]}" in
+		on)
+			;;
+		*)
+			return 0
+			;;
+	esac
+
+	# Determine yesterday's date
+	local y="$(date --date="yesterday" +"%Y")"
+	local m="$(date --date="yesterday" +"%m")"
+	local d="$(date --date="yesterday" +"%d")"
+
+	# Send the report
+	send_report --year="${y}" --month="${m}" --day="${d}"
+}
+
+main() {
+	local interval="${1}"
+	shift
+
+	case "${interval}" in
+		monthly)
+			if ! send_monthly_report "$@"; then
+				return $?
+			fi
+			;;
+
+		weekly)
+			if ! send_weekly_report "$@"; then
+				return $?
+			fi
+			;;
+
+		daily)
+			if ! send_daily_report "$@"; then
+				return $?
+			fi
+			;;
+		*)
+			echo "${0}: Unknown interval '${interval}'" >&2
+			return 2
+			;;
+	esac
+
+	return 0
+}
+
+main "$@" || exit 1
diff --git a/config/suricata/suricata.yaml b/config/suricata/suricata.yaml
index 6a4f31eac8..31c8d38977 100644
--- a/config/suricata/suricata.yaml
+++ b/config/suricata/suricata.yaml
@@ -94,9 +94,9 @@ outputs:
 
   # Extensible Event Format (nicknamed EVE) event log in JSON format
   - eve-log:
-      enabled: no
-      filetype: regular #regular|syslog|unix_dgram|unix_stream|redis
-      filename: eve.json
+      enabled: yes
+      filetype: unix_dgram #regular|syslog|unix_dgram|unix_stream|redis
+      filename: /var/run/suricata/reporter.socket
       # Enable for multi-threaded eve.json output; output files are amended with
       # an identifier, e.g., eve.9.json
       #threaded: false
@@ -1144,7 +1144,7 @@ unix-command:
   #filename: custom.socket
 
 # Magic file. The extension .mgc is added to the value here.
-magic-file: /usr/share/misc/magic
+magic-file: /usr/share/misc/magic.mgc
 
 # GeoIP2 database file. Specify path and filename of GeoIP2 database
 # if using rules with "geoip" rule option.
diff --git a/doc/language_issues.en b/doc/language_issues.en
index 2fec840757..6dfada328b 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -719,7 +719,6 @@ WARNING: untranslated string: enable ignore filter = Enable ignore filter
 WARNING: untranslated string: enable otp = Enable OTP
 WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
 WARNING: untranslated string: enabled = Enabled:
-WARNING: untranslated string: enabled on = Enabled on
 WARNING: untranslated string: encapsulation = Encapsulation
 WARNING: untranslated string: encryption = Encryption:
 WARNING: untranslated string: end address = End address:
@@ -1032,6 +1031,7 @@ WARNING: untranslated string: idle timeout = Idle timeout (mins; 0 to disable):
 WARNING: untranslated string: idle timeout not set = Idle timeout not set.
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1039,13 +1039,21 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids log viewer = IPS Log Viewer
 WARNING: untranslated string: ids logs = IPS Logs
@@ -1053,16 +1061,22 @@ WARNING: untranslated string: ids merge classifications = Merging classification
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.es b/doc/language_issues.es
index 6863eda0ef..cadfaf5d66 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -1056,7 +1056,22 @@ WARNING: untranslated string: guardian logtarget_file = unknown string
 WARNING: untranslated string: guardian logtarget_syslog = unknown string
 WARNING: untranslated string: guardian no entries = unknown string
 WARNING: untranslated string: guardian service = unknown string
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids provider eol = (EOL)
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: mdstat = Mdstat
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index 750463098e..a03241bcea 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -1044,8 +1044,23 @@ WARNING: untranslated string: guardian logtarget_syslog = unknown string
 WARNING: untranslated string: guardian no entries = unknown string
 WARNING: untranslated string: guardian service = unknown string
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids provider eol = (EOL)
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: import connection = Import a Connection
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: invalid endpoint = Invalid Endpoint
diff --git a/doc/language_issues.it b/doc/language_issues.it
index 139bd96574..d5fdcd55e0 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -1155,6 +1155,7 @@ WARNING: untranslated string: hostile networks out = To Hostile Networks
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1162,28 +1163,42 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids merge classifications = Merging classifications...
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index d489dccff1..72af4fba50 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -1161,6 +1161,7 @@ WARNING: untranslated string: hostile networks out = To Hostile Networks
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1168,28 +1169,42 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids merge classifications = Merging classifications...
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index d5285e233e..c89dd9966a 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -1280,6 +1280,7 @@ WARNING: untranslated string: hostile networks out = To Hostile Networks
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1287,28 +1288,42 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids merge classifications = Merging classifications...
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index a2f6929a6c..2377115ab3 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -1278,6 +1278,7 @@ WARNING: untranslated string: hostile networks out = To Hostile Networks
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1285,28 +1286,42 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids merge classifications = Merging classifications...
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 2137b2a042..dfabd029eb 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -1099,6 +1099,7 @@ WARNING: untranslated string: hostile networks out = To Hostile Networks
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids add provider = Add provider
 WARNING: untranslated string: ids adjust ruleset = Adjust rules and add user defined customizations...
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
 WARNING: untranslated string: ids apply = Apply
 WARNING: untranslated string: ids apply ruleset changes = The ruleset changes are being applied. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids autoupdates = Automatic updates
@@ -1106,28 +1107,42 @@ WARNING: untranslated string: ids cleanup tmp dir = Cleanup temporary directory.
 WARNING: untranslated string: ids could not add provider = Could not add provider
 WARNING: untranslated string: ids customize ruleset = Customize ruleset
 WARNING: untranslated string: ids download new ruleset = Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
 WARNING: untranslated string: ids enable = Enable Intrusion Prevention System
 WARNING: untranslated string: ids enable automatic updates = Enable automatic updates
 WARNING: untranslated string: ids extract ruleset = Extracting ruleset for provider:
 WARNING: untranslated string: ids finished = Finished...
 WARNING: untranslated string: ids force ruleset update = Force ruleset update
 WARNING: untranslated string: ids hide = Hide
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
 WARNING: untranslated string: ids ignored hosts = Whitelisted Hosts
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
 WARNING: untranslated string: ids log hits = Total of number of activated rules for
 WARNING: untranslated string: ids merge classifications = Merging classifications...
 WARNING: untranslated string: ids merge sid files = Merging sid to message files...
 WARNING: untranslated string: ids monitor traffic only = Monitor traffic only
 WARNING: untranslated string: ids monitored interfaces = Monitored Interfaces
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
 WARNING: untranslated string: ids no enabled ruleset provider = No enabled ruleset is available. Please activate or add one first.
 WARNING: untranslated string: ids no network zone = Please select at least one network zone to be monitored
 WARNING: untranslated string: ids provider = Provider
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids provider settings = Provider settings
 WARNING: untranslated string: ids remove rule structures = Remove old rule structures...
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids reset provider = Reset provider
 WARNING: untranslated string: ids ruleset autoupdate in progress = Ruleset update in progress. Please wait until all operations have completed successfully...
 WARNING: untranslated string: ids ruleset is up to date = No update required - The ruleset is up to date.
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: ids show = Show
 WARNING: untranslated string: ids subscription code required = The selected ruleset requires a subscription code
 WARNING: untranslated string: ids the choosen provider is already in use = The choosen provider is already in use.
diff --git a/doc/language_issues.tw b/doc/language_issues.tw
index 53f97d670a..2745a25baf 100644
--- a/doc/language_issues.tw
+++ b/doc/language_issues.tw
@@ -1065,6 +1065,21 @@ WARNING: untranslated string: guardian logtarget_file = unknown string
 WARNING: untranslated string: guardian logtarget_syslog = unknown string
 WARNING: untranslated string: guardian no entries = unknown string
 WARNING: untranslated string: guardian service = unknown string
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: max bandwidth = Maximum bandwidth
diff --git a/doc/language_issues.zh b/doc/language_issues.zh
index 53f97d670a..2745a25baf 100644
--- a/doc/language_issues.zh
+++ b/doc/language_issues.zh
@@ -1065,6 +1065,21 @@ WARNING: untranslated string: guardian logtarget_file = unknown string
 WARNING: untranslated string: guardian logtarget_syslog = unknown string
 WARNING: untranslated string: guardian no entries = unknown string
 WARNING: untranslated string: guardian service = unknown string
+WARNING: untranslated string: ids all including informational = All, Including Informational Alerts
+WARNING: untranslated string: ids email alert severity = Severity
+WARNING: untranslated string: ids email alerts = Email Alerts
+WARNING: untranslated string: ids email recipients = Recipients
+WARNING: untranslated string: ids email sender = Sender Address
+WARNING: untranslated string: ids high and medium severity = High and Medium Severity
+WARNING: untranslated string: ids high severity only = High Severity Only
+WARNING: untranslated string: ids high, medium and low severity = High, Medium, and Low Severity
+WARNING: untranslated string: ids invalid mail address = Is or contains an invalid mail address.
+WARNING: untranslated string: ids no email recipients = No email recipients given
+WARNING: untranslated string: ids no email sender = No sender email address specified
+WARNING: untranslated string: ids reports daily = Send a daily report
+WARNING: untranslated string: ids reports monthly = Send a monthly report
+WARNING: untranslated string: ids reports weekly = Send a weekly report
+WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: max bandwidth = Maximum bandwidth
diff --git a/doc/language_missings b/doc/language_missings
index 80b0fbb038..03c286f5a2 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -156,7 +156,22 @@
 < AES-256-GCM
 < CHACHA20-POLY1305
 < dns servers
+< ids all including informational
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
+< ids invalid mail address
+< ids no email recipients
+< ids no email sender
 < ids provider eol
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
+< ids send email on alert
 < indirect target selection
 < mdstat
 < offloaded
@@ -207,8 +222,23 @@
 < g.dtm
 < g.lite
 < hostile networks total
+< ids all including informational
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
+< ids invalid mail address
+< ids no email recipients
+< ids no email sender
 < ids provider eol
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids rulesets
+< ids send email on alert
 < ids unsupported provider
 < import connection
 < indirect target selection
@@ -552,6 +582,7 @@
 < hostile networks total
 < ids add provider
 < ids adjust ruleset
+< ids all including informational
 < ids apply
 < ids apply ruleset changes
 < ids automatic rules update
@@ -560,29 +591,43 @@
 < ids could not add provider
 < ids customize ruleset
 < ids download new ruleset
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
 < ids enable
 < ids enable automatic updates
 < ids extract ruleset
 < ids finished
 < ids force ruleset update
 < ids hide
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
 < ids ignored hosts
+< ids invalid mail address
 < ids log hits
 < ids merge classifications
 < ids merge sid files
 < ids monitored interfaces
 < ids monitor traffic only
+< ids no email recipients
+< ids no email sender
 < ids no enabled ruleset provider
 < ids no network zone
 < ids provider
 < ids provider eol
 < ids provider settings
 < ids remove rule structures
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids reset provider
 < ids ruleset autoupdate in progress
 < ids ruleset is up to date
 < ids rulesets
 < ids ruleset settings
+< ids send email on alert
 < ids show
 < ids subscription code required
 < ids the choosen provider is already in use
@@ -1196,6 +1241,7 @@
 < hostile networks total
 < ids add provider
 < ids adjust ruleset
+< ids all including informational
 < ids apply
 < ids apply ruleset changes
 < ids automatic rules update
@@ -1204,29 +1250,43 @@
 < ids could not add provider
 < ids customize ruleset
 < ids download new ruleset
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
 < ids enable
 < ids enable automatic updates
 < ids extract ruleset
 < ids finished
 < ids force ruleset update
 < ids hide
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
 < ids ignored hosts
+< ids invalid mail address
 < ids log hits
 < ids merge classifications
 < ids merge sid files
 < ids monitored interfaces
 < ids monitor traffic only
+< ids no email recipients
+< ids no email sender
 < ids no enabled ruleset provider
 < ids no network zone
 < ids provider
 < ids provider eol
 < ids provider settings
 < ids remove rule structures
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids reset provider
 < ids ruleset autoupdate in progress
 < ids ruleset is up to date
 < ids rulesets
 < ids ruleset settings
+< ids send email on alert
 < ids show
 < ids subscription code required
 < ids the choosen provider is already in use
@@ -2142,6 +2202,7 @@
 < hostile networks total
 < ids add provider
 < ids adjust ruleset
+< ids all including informational
 < ids apply
 < ids apply ruleset changes
 < ids automatic rules update
@@ -2150,29 +2211,43 @@
 < ids could not add provider
 < ids customize ruleset
 < ids download new ruleset
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
 < ids enable
 < ids enable automatic updates
 < ids extract ruleset
 < ids finished
 < ids force ruleset update
 < ids hide
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
 < ids ignored hosts
+< ids invalid mail address
 < ids log hits
 < ids merge classifications
 < ids merge sid files
 < ids monitored interfaces
 < ids monitor traffic only
+< ids no email recipients
+< ids no email sender
 < ids no enabled ruleset provider
 < ids no network zone
 < ids provider
 < ids provider eol
 < ids provider settings
 < ids remove rule structures
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids reset provider
 < ids ruleset autoupdate in progress
 < ids ruleset is up to date
 < ids rulesets
 < ids ruleset settings
+< ids send email on alert
 < ids show
 < ids subscription code required
 < ids the choosen provider is already in use
@@ -3256,6 +3331,7 @@
 < hour-graph
 < ids add provider
 < ids adjust ruleset
+< ids all including informational
 < ids apply
 < ids apply ruleset changes
 < ids automatic rules update
@@ -3264,29 +3340,43 @@
 < ids could not add provider
 < ids customize ruleset
 < ids download new ruleset
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
 < ids enable
 < ids enable automatic updates
 < ids extract ruleset
 < ids finished
 < ids force ruleset update
 < ids hide
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
 < ids ignored hosts
+< ids invalid mail address
 < ids log hits
 < ids merge classifications
 < ids merge sid files
 < ids monitored interfaces
 < ids monitor traffic only
+< ids no email recipients
+< ids no email sender
 < ids no enabled ruleset provider
 < ids no network zone
 < ids provider
 < ids provider eol
 < ids provider settings
 < ids remove rule structures
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids reset provider
 < ids ruleset autoupdate in progress
 < ids ruleset is up to date
 < ids rulesets
 < ids ruleset settings
+< ids send email on alert
 < ids show
 < ids subscription code required
 < ids the choosen provider is already in use
@@ -3964,6 +4054,7 @@
 < hostile networks total
 < ids add provider
 < ids adjust ruleset
+< ids all including informational
 < ids apply
 < ids apply ruleset changes
 < ids automatic rules update
@@ -3972,29 +4063,43 @@
 < ids could not add provider
 < ids customize ruleset
 < ids download new ruleset
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
 < ids enable
 < ids enable automatic updates
 < ids extract ruleset
 < ids finished
 < ids force ruleset update
 < ids hide
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
 < ids ignored hosts
+< ids invalid mail address
 < ids log hits
 < ids merge classifications
 < ids merge sid files
 < ids monitored interfaces
 < ids monitor traffic only
+< ids no email recipients
+< ids no email sender
 < ids no enabled ruleset provider
 < ids no network zone
 < ids provider
 < ids provider eol
 < ids provider settings
 < ids remove rule structures
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
 < ids reset provider
 < ids ruleset autoupdate in progress
 < ids ruleset is up to date
 < ids rulesets
 < ids ruleset settings
+< ids send email on alert
 < ids show
 < ids subscription code required
 < ids the choosen provider is already in use
@@ -4295,6 +4400,21 @@
 < CHACHA20-POLY1305
 < dns servers
 < guaranteed bandwidth
+< ids all including informational
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
+< ids invalid mail address
+< ids no email recipients
+< ids no email sender
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
+< ids send email on alert
 < indirect target selection
 < max bandwidth
 < offloaded
@@ -4343,6 +4463,21 @@
 < CHACHA20-POLY1305
 < dns servers
 < guaranteed bandwidth
+< ids all including informational
+< ids email alerts
+< ids email alert severity
+< ids email recipients
+< ids email sender
+< ids high and medium severity
+< ids high, medium and low severity
+< ids high severity only
+< ids invalid mail address
+< ids no email recipients
+< ids no email sender
+< ids reports daily
+< ids reports monthly
+< ids reports weekly
+< ids send email on alert
 < indirect target selection
 < max bandwidth
 < offloaded
diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi
index 960e72ef1c..30a1613c72 100644
--- a/html/cgi-bin/ids.cgi
+++ b/html/cgi-bin/ids.cgi
@@ -574,6 +574,30 @@ if ($cgiparams{'RULESET'} eq $Lang::tr{'ids apply'}) {
 		}
 	}
 
+	# Check if the e-mail feature should be used.
+	if (($cgiparams{'ENABLE_EMAIL'} eq "on") || ($cgiparams{'ENABLE_REPORT_DAILY'} eq "on") ||
+	    ($cgiparams{'ENABLE_REPORT_WEEKLY'} eq "on") || ($cgiparams{'ENABLE_REPORT_MONTLY'} eq "on")) {
+		# Check if a sender mail address has been provided.
+		unless($cgiparams{'EMAIL_SENDER'}) {
+			$errormessage = $Lang::tr{'ids no email sender'};
+		}
+
+		# Check if the given sender mail address is valid.
+		if (&_validate_mail_address($cgiparams{'EMAIL_SENDER'})) {
+			$errormessage = "$cgiparams{'EMAIL_SENDER'} - $Lang::tr{'ids invalid mail address'}";
+		}
+
+		# Check if at least one mail recipient has been given.
+		unless($cgiparams{'EMAIL_RECIPIENTS'}) {
+			$errormessage = $Lang::tr{'ids no email recipients'};
+		}
+
+		# Check if the given recipient mail address or addresses are valid.
+		if (&_validate_mail_address($cgiparams{'EMAIL_RECIPIENTS'})) {
+			$errormessage = "$cgiparams{'EMAIL_RECIPIENTS'} - $Lang::tr{'ids invalid mail address'}";
+		}
+	}
+
 	# Go on if there are no error messages.
 	if (!$errormessage) {
 		# Store settings into settings file.
@@ -589,6 +613,9 @@ if ($cgiparams{'RULESET'} eq $Lang::tr{'ids apply'}) {
 	# Generate file to store the HTTP ports.
 	&IDS::generate_http_ports_file();
 
+	# Generate report generator config file.
+	&IDS::generate_report_generator_config();
+
 	# Check if the IDS currently is running.
 	if(&IDS::ids_is_running()) {
 		# Check if ENABLE_IDS is set to on.
@@ -1006,6 +1033,37 @@ sub show_mainpage() {
 	$checked{'ENABLE_IDS'}{'off'} = '';
 	$checked{'ENABLE_IDS'}{'on'} = '';
 	$checked{'ENABLE_IDS'}{$idssettings{'ENABLE_IDS'}} = "checked='checked'";
+	$checked{'ENABLE_EMAIL'}{'off'} = '';
+	$checked{'ENABLE_EMAIL'}{'on'} = '';
+	$checked{'ENABLE_EMAIL'}{$idssettings{'ENABLE_EMAIL'}} = "checked='checked'";
+
+	$selected{'EMAIL_ALERT_SEVERITY'}{$idssettings{'EMAIL_ALERT_SEVERITY'}} = "selected";
+
+	$checked{'ENABLE_REPORT_DAILY'}{'off'} = '';
+	$checked{'ENABLE_REPORT_DAILY'}{'on'} = '';
+	$checked{'ENABLE_REPORT_DAILY'}{$idssettings{'ENABLE_REPORT_DAILY'}} = "checked='checked'";
+	$checked{'ENABLE_REPORT_WEEKLY'}{'off'} = '';
+	$checked{'ENABLE_REPORT_WEEKLY'}{'on'} = '';
+	$checked{'ENABLE_REPORT_WEEKLY'}{$idssettings{'ENABLE_REPORT_WEEKLY'}} = "checked='checked'";
+	$checked{'ENABLE_REPORT_MONTHLY'}{'off'} = '';
+	$checked{'ENABLE_REPORT_MONTHLY'}{'on'} = '';
+	$checked{'ENABLE_REPORT_MONTHLY'}{$idssettings{'ENABLE_REPORT_MONTHLY'}} = "checked='checked'";
+
+	# Set E-Mail settings from settings hash.
+	my $email_sender = $idssettings{'EMAIL_SENDER'};
+	my $email_recipients = $idssettings{'EMAIL_RECIPIENTS'};
+
+	# Set form values to cgiparams state in error case.
+	if ($errormessage) {
+		$checked{'ENABLE_IDS'}{$cgiparams{'ENABLE_IDS'}} = "checked='checked'";
+		$checked{'ENABLE_EMAIL'}{$cgiparams{'ENABLE_EMAIL'}} = "checked='checked'";
+		$checked{'ENABLE_REPORT_DAILY'}{$cgiparams{'ENABLE_REPORT_DAILY'}} = "checked='checked'";
+		$checked{'ENABLE_REPORT_WEEKLY'}{$cgiparams{'ENABLE_REPORT_WEEKLY'}} = "checked='checked'";
+		$checked{'ENABLE_REPORT_MONTHLY'}{$cgiparams{'ENABLE_REPORT_MONTHLY'}} = "checked='checked'";
+
+		$email_sender = $cgiparams{'EMAIL_SENDER'};
+		$email_recipients = $cgiparams{'EMAIL_RECIPIENTS'};
+	}
 
 	# Draw current state of the IDS
 	&Header::opensection();
@@ -1024,26 +1082,23 @@ print <<END
 		<br>
 
 		<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-			<table width='100%' border='0'>
+			<table class='form'>
 				<tr>
-					<td colspan='$num_zones'>
-						<input type='checkbox' name='ENABLE_IDS' $checked{'ENABLE_IDS'}{'on'}>&nbsp;$Lang::tr{'ids enable'}
+					<td>
+						$Lang::tr{'ids enable'}
 					</td>
-				</tr>
 
-				<tr> <!-- empty row for spacing -->
-					<td colspan='$num_zones'>
-						&nbsp;
+					<td>
+						<input type='checkbox' name='ENABLE_IDS' $checked{'ENABLE_IDS'}{'on'}>
 					</td>
 				</tr>
+			</table>
 
-				<tr>
-					<td colspan='$num_zones'>
-						<b>$Lang::tr{'ids monitored interfaces'}</b>
-					</td>
-				</tr>
+			<h6>
+				$Lang::tr{'ids monitored interfaces'}
+			</h6>
 
-				<tr>
+			<table class="form">
 END
 ;
 
@@ -1068,27 +1123,135 @@ END
 				$checked_input = "checked = 'checked'";
 			}
 
+			# Set the checkbox status to the cgiparams state in error case.
+			if ($errormessage) {
+				$checked_input = "checked = 'checked'" if ($cgiparams{"ENABLE_IDS_$zone_upper"} eq "on");
+			}
+
 			print <<END;
-				<td>
-					<label>
+				<tr>
+					<td>
+						&nbsp; &nbsp; <font color='$colourhash{$zone}'> $Lang::tr{$zone_name}</font>
+					</td>
+
+					<td>
 						<input type='checkbox' name='ENABLE_IDS_$zone_upper' $checked_input>
-						&nbsp; $Lang::tr{'enabled on'}<font color='$colourhash{$zone}'> $Lang::tr{$zone_name}</font>
-					</label>
-				</td>
+					</td>
+				</tr>
 END
 		}
 
 print <<END
+			</table>
+
+			<h6>
+				$Lang::tr{'ids email alerts'}
+			</h6>
+
+			<table class="form">
+				<tr>
+					<td>
+						<label for='EMAIL_SENDER'>$Lang::tr{'ids email sender'}</label>
+					</td>
+
+					<td>
+						<input type="text" name="EMAIL_SENDER" value="$email_sender">
+					<td>
+				</tr>
+
+				<tr>
+					<td>
+						<label for='EMAIL_RECIPIENTS'>$Lang::tr{'ids email recipients'}</label>
+					</td>
+
+					<td>
+						<input type="text" name="EMAIL_RECIPIENTS" value="$email_recipients">
+					</td>
+				</tr>
+
+				<tr>
+					<td colspan="2">&nbsp;</td>
+				</tr>
+
+				<tr>
+					<td>
+						<label for="ENABLE_EMAIL">
+							$Lang::tr{'ids send email on alert'}
+						</label>
+					</td>
+
+					<td>
+						<input type='checkbox' name='ENABLE_EMAIL' id="ENABLED_EMAIL" $checked{'ENABLE_EMAIL'}{'on'}>
+					</td>
+				</tr>
+
+				<tr>
+					<td>
+						<label for="EMAIL_ALERT_SEVERITY">
+							$Lang::tr{'ids email alert severity'}
+						</label>
+					</td>
+
+					<td>
+						<select name="EMAIL_ALERT_SEVERITY">
+							<option value="4" $selected{'EMAIL_ALERT_SEVERITY'}{'4'}>
+								$Lang::tr{'ids all including informational'}
+							</option>
+							<option value="3" $selected{'EMAIL_ALERT_SEVERITY'}{'3'}>
+								$Lang::tr{'ids high, medium and low severity'}
+							</option>
+							<option value="2" $selected{'EMAIL_ALERT_SEVERITY'}{'2'}>
+								$Lang::tr{'ids high and medium severity'}
+							</option>
+							<option value="1" $selected{'EMAIL_ALERT_SEVERITY'}{'1'}>
+								$Lang::tr{'ids high severity only'}
+							</option>
+						</select>
+					</td>
+				</tr>
+
+				<tr>
+					<td colspan="2">&nbsp;</td>
+				</tr>
+
+				<tr>
+					<td>
+						<label for="ENABLE_REPORT_DAILY">
+							$Lang::tr{'ids reports daily'}
+						</label>
+					</td>
+
+					<td>
+						<input type='checkbox' name='ENABLE_REPORT_DAILY' id="ENABLE_REPORT_DAILY" $checked{'ENABLE_REPORT_DAILY'}{'on'}>
+					</td>
 				</tr>
 
-				<tr> <!-- empty row for spacing -->
-					<td colspan='$num_zones'>
-						&nbsp;
+				<tr>
+					<td>
+						<label for="ENABLE_REPORT_WEEKLY">
+							$Lang::tr{'ids reports weekly'}
+						</label>
+					</td>
+
+					<td>
+						<input type='checkbox' name='ENABLE_REPORT_WEEKLY' id="ENABLE_REPORT_WEEKLY" $checked{'ENABLE_REPORT_WEEKLY'}{'on'}>
 					</td>
 				</tr>
 
 				<tr>
-					<td colspan='$num_zones' align='right'>
+					<td>
+						<label for="ENABLE_REPORT_MONTHLY">
+							$Lang::tr{'ids reports monthly'}
+						</label>
+					</td>
+
+					<td>
+						<input type='checkbox' name='ENABLE_REPORT_MONTHLY' id="ENABLE_REPORT_MONTHLY" $checked{'ENABLE_REPORT_MONTHLY'}{'on'}>
+					</td>
+				</tr>
+
+				<tr class="action">
+					<td colspan="2">
 						<input type='submit' name='IDS' value='$Lang::tr{'save'}' />
 					</td>
 				</tr>
@@ -2050,3 +2213,28 @@ sub _rulefile_to_category($) {
 	# Return the converted filename.
         return $category;
 }
+
+#
+## Private function to validate if a given string contains one or
+## more valid mail addresses.
+#
+sub _validate_mail_address($) {
+	my ($address) = @_;
+
+	# Temporary array, which holds the single mail addresses.
+	my @temp;
+
+	# Split the string of mail addresses into single pieces and
+	# store them into the temporary array.
+	@temp = split(/\,/, $address);
+
+	# Loop through the array of mail addresses.
+	foreach my $addr (@temp) {
+		# If the address contains a '@' with at least one character before and after,
+		# we consider it valid.
+		return 1 unless ($address =~ m/.@./);
+	}
+
+	# Return nothing if the address is valid.
+	return;
+}
diff --git a/html/html/themes/ipfire/include/fonts/Prompt-Bold.ttf b/html/html/themes/ipfire/include/fonts/Prompt-Bold.ttf
deleted file mode 100644
index 6cdd89b451..0000000000
Binary files a/html/html/themes/ipfire/include/fonts/Prompt-Bold.ttf and /dev/null differ
diff --git a/html/html/themes/ipfire/include/fonts/Prompt-Medium.ttf b/html/html/themes/ipfire/include/fonts/Prompt-Medium.ttf
deleted file mode 100644
index adf72c9f63..0000000000
Binary files a/html/html/themes/ipfire/include/fonts/Prompt-Medium.ttf and /dev/null differ
diff --git a/html/html/themes/ipfire/include/fonts/Prompt-Regular.ttf b/html/html/themes/ipfire/include/fonts/Prompt-Regular.ttf
deleted file mode 100644
index 2a736dbba7..0000000000
Binary files a/html/html/themes/ipfire/include/fonts/Prompt-Regular.ttf and /dev/null differ
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index c2a6c30433..b997ff9a73 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -982,7 +982,6 @@
 'enable smt' => 'Simultaneous Multi-Threading (SMT) einschalten',
 'enable wildcards' => 'Wildcards erlauben:',
 'enabled' => 'Aktiviert:',
-'enabled on' => 'Aktiviert auf',
 'enabledtitle' => 'Aktiviert',
 'encapsulation' => 'Kapselung',
 'encrypted' => 'Verschlüsselt',
@@ -1384,6 +1383,7 @@
 'idle timeout not set' => 'Leerlaufwartezeit nicht angegeben.',
 'ids add provider' => 'Provider hinzufügen',
 'ids adjust ruleset' => 'Regelset anpassen und Benutzermodifikationen übernehmen...',
+'ids all including informational' => 'Alle, inklusive Informationsalarmen',
 'ids apply' => 'Übernehmen',
 'ids apply ruleset changes' => 'Regeländerungen werden übernommen. Bitte warten Sie, bis dieser Vorgang erfolgreich beendet wurde...',
 'ids autoupdates' => 'Automatische Updates',
@@ -1391,13 +1391,21 @@
 'ids could not add provider' => 'Provider konnte nicht hinzugefügt werden',
 'ids customize ruleset' => 'Regelset anpassen',
 'ids download new ruleset' => 'Das neue Regelset wird heruntergeladen und entpackt. Bitte warten Sie, bis dieser Vorgang erfolgreich beendet wurde...',
+'ids email alert severity' => 'Schweregrad',
+'ids email alerts' => 'E-Mail-Benachrichtigungen',
+'ids email recipients' => 'Empfänger-Addressen',
+'ids email sender' => 'Sender-Addresse',
 'ids enable' => 'Einbruchsverhinderungssystem aktivieren',
 'ids enable automatic updates' => 'Automatische Updates aktivieren',
 'ids extract ruleset' => 'Entpacke Regelset von:',
 'ids finished' => 'Fertig...',
 'ids force ruleset update' => 'Regelset jetzt aktualisieren',
 'ids hide' => 'Verstecken',
+'ids high and medium severity' => 'Hoher and mittlerer Schweregrad',
+'ids high severity only' => 'Nur hoher Schweregrad',
+'ids high, medium and low severity' => 'Hoher, mittlerer, und niedriger Schweregrad',
 'ids ignored hosts' => 'Ausnahmeliste',
+'ids invalid mail address' => 'Ist oder enthält eine ungültige E-Mail Addresse',
 'ids log hits' => 'Gesamtanzahl der Regeltreffer für',
 'ids log viewer' => 'Protokoll des Einbruchsverhinderungssystems',
 'ids logs' => 'IPS-Protokolldateien',
@@ -1405,18 +1413,24 @@
 'ids merge sid files' => 'Sid-to-message Dateien zusammenführen...',
 'ids monitor traffic only' => 'Netzwerkpakete nur überprüfen (nicht verwerfen)',
 'ids monitored interfaces' => 'Überwachte Netzwerkzonen',
+'ids no email recipients' => 'Keine Empfänger-Addresse angegeben',
+'ids no email sender' => 'Keine Sender-Addresse angegeben',
 'ids no enabled ruleset provider' => 'Es ist kein aktivierter Provider verfügbar. Bitte aktivieren Sie einen oder fügen Sie einen Provider hinzu.',
 'ids no network zone' => 'Bitte wählen Sie mindestens eine zu überwachende Netzwerkzone aus',
 'ids oinkcode required' => 'Für den ausgewählten Regelsatz wird ein Abonnement oder ein Oinkcode benötigt',
 'ids provider' => 'Regelset-Anbieter',
 'ids provider settings' => 'Regelset-Anbieter-Einstellungen',
 'ids remove rule structures' => 'Entferne alte Regelstrukturen...',
+'ids reports daily' => 'Einen täglichen Bericht schicken',
+'ids reports monthly' => 'Einen monatlichen Bericht schicken',
+'ids reports weekly' => 'Einen wöchentlichen Bericht schicken',
 'ids reset provider' => 'Providereinstellungen zurücksetzen',
 'ids rules update' => 'Regelsatz',
 'ids ruleset autoupdate in progress' => 'Der Regelsatz wird gerade aktualisiert. Bitte warten Sie, bis dieser Vorgang erfolgreich beendet wurde...',
 'ids ruleset is up to date' => 'Regelset ist aktuell - Keine Aktualisierung notwendig.',
 'ids ruleset settings' => 'Regelsatzeinstellungen',
 'ids rulesets' => 'Regelsätze',
+'ids send email on alert' => 'Alarme per Email melden',
 'ids show' => 'Anzeigen',
 'ids the choosen provider is already in use' => 'Der gewhählte Provider wird bereits verwendet.',
 'ids unable to download the ruleset' => 'Das Regelset konnte nicht heruntergeladen werden.',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 3450fe6d78..35e9da184c 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -1032,7 +1032,6 @@
 'enable smt' => 'Enable Simultaneous Multi-Threading (SMT)',
 'enable wildcards' => 'Enable wildcards:',
 'enabled' => 'Enabled:',
-'enabled on' => 'Enabled on',
 'enabledtitle' => 'Enabled',
 'encapsulation' => 'Encapsulation',
 'encrypted' => 'Encrypted',
@@ -1441,6 +1440,7 @@
 'idle timeout not set' => 'Idle timeout not set.',
 'ids add provider' => 'Add provider',
 'ids adjust ruleset' => 'Adjust rules and add user defined customizations...',
+'ids all including informational' => 'All, Including Informational Alerts',
 'ids apply' => 'Apply',
 'ids apply ruleset changes' => 'The ruleset changes are being applied. Please wait until all operations have completed successfully...',
 'ids automatic rules update' => 'Automatic Rule Update',
@@ -1449,13 +1449,21 @@
 'ids could not add provider' => 'Could not add provider',
 'ids customize ruleset' => 'Customize ruleset',
 'ids download new ruleset' => 'Downloading and unpacking new ruleset. Please wait until all operations have completed successfully...',
+'ids email alert severity' => 'Severity',
+'ids email alerts' => 'Email Alerts',
+'ids email recipients' => 'Recipients',
+'ids email sender' => 'Sender Address',
 'ids enable' => 'Enable Intrusion Prevention System',
 'ids enable automatic updates' => 'Enable automatic updates',
 'ids extract ruleset' => 'Extracting ruleset for provider:',
 'ids finished' => 'Finished...',
 'ids force ruleset update' => 'Force ruleset update',
 'ids hide' => 'Hide',
+'ids high and medium severity' => 'High and Medium Severity',
+'ids high severity only' => 'High Severity Only',
+'ids high, medium and low severity' => 'High, Medium, and Low Severity',
 'ids ignored hosts' => 'Whitelisted Hosts',
+'ids invalid mail address' => 'Is or contains an invalid mail address.',
 'ids log hits' => 'Total of number of activated rules for',
 'ids log viewer' => 'IPS Log Viewer',
 'ids logs' => 'IPS Logs',
@@ -1463,18 +1471,24 @@
 'ids merge sid files' => 'Merging sid to message files...',
 'ids monitor traffic only' => 'Monitor traffic only',
 'ids monitored interfaces' => 'Monitored Interfaces',
+'ids no email recipients' => 'No email recipients given',
+'ids no email sender' => 'No sender email address specified',
 'ids no enabled ruleset provider' => 'No enabled ruleset is available. Please activate or add one first.',
 'ids no network zone' => 'Please select at least one network zone to be monitored',
 'ids provider' => 'Provider',
 'ids provider eol' => '(EOL)',
 'ids provider settings' => 'Provider settings',
 'ids remove rule structures' => 'Remove old rule structures...',
+'ids reports daily' => 'Send a daily report',
+'ids reports monthly' => 'Send a monthly report',
+'ids reports weekly' => 'Send a weekly report',
 'ids reset provider' => 'Reset provider',
 'ids rules update' => 'Ruleset',
 'ids ruleset autoupdate in progress' => 'Ruleset update in progress. Please wait until all operations have completed successfully...',
 'ids ruleset is up to date' => 'No update required - The ruleset is up to date.',
 'ids ruleset settings' => 'Ruleset Settings',
 'ids rulesets' => 'Rulesets',
+'ids send email on alert' => 'Send email on alert',
 'ids show' => 'Show',
 'ids subscription code required' => 'The selected ruleset requires a subscription code',
 'ids the choosen provider is already in use' => 'The choosen provider is already in use.',
diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
index 466bf75338..bd19932c5a 100644
--- a/langs/es/cgi-bin/es.pl
+++ b/langs/es/cgi-bin/es.pl
@@ -1030,7 +1030,6 @@
 'enable smt' => 'Habilitar subprocesos múltiples simultáneos (SMT)',
 'enable wildcards' => 'Activar comodines',
 'enabled' => 'Activado:',
-'enabled on' => 'Activado en',
 'enabledtitle' => 'Activado',
 'encapsulation' => 'Encapsulamiento',
 'encrypted' => 'Encriptado',
diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
index b208ff1ae4..7949b3e856 100644
--- a/langs/fr/cgi-bin/fr.pl
+++ b/langs/fr/cgi-bin/fr.pl
@@ -1028,7 +1028,6 @@
 'enable smt' => 'Activer le partage d\'un cœur de processeur (SMT)',
 'enable wildcards' => 'Activer les cartes d\'invitations :',
 'enabled' => 'Activé :',
-'enabled on' => 'Activé sur',
 'enabledtitle' => 'Activé',
 'encapsulation' => 'Encapsulation',
 'encrypted' => 'Chiffré',
diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl
index ad9a4582dc..842d67950f 100644
--- a/langs/it/cgi-bin/it.pl
+++ b/langs/it/cgi-bin/it.pl
@@ -843,7 +843,6 @@
 'enable javascript' => 'Enable javascript',
 'enable wildcards' => 'Enable wildcards:',
 'enabled' => 'abilitato:',
-'enabled on' => 'abilitato su',
 'enabledtitle' => 'abilitato',
 'encapsulation' => 'Encapsulation',
 'encrypted' => 'Encrypted',
diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
index 840c432d71..975f98e598 100644
--- a/langs/nl/cgi-bin/nl.pl
+++ b/langs/nl/cgi-bin/nl.pl
@@ -839,7 +839,6 @@
 'enable javascript' => 'Inschakelen javascript',
 'enable wildcards' => 'Inschakelen wildcards:',
 'enabled' => 'Ingeschakeld:',
-'enabled on' => 'Ingeschakeld op',
 'enabledtitle' => 'Ingeschakeld',
 'encapsulation' => 'Inkapseling',
 'encrypted' => 'Gecodeerd',
diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
index c6eb76fe38..d21d9b241c 100644
--- a/langs/pl/cgi-bin/pl.pl
+++ b/langs/pl/cgi-bin/pl.pl
@@ -751,7 +751,6 @@
 'enable javascript' => 'Włącz javascript',
 'enable wildcards' => 'Enable wildcards:',
 'enabled' => 'Włączony:',
-'enabled on' => 'Włączony na',
 'enabledtitle' => 'Włączony',
 'encapsulation' => 'Encapsulacja',
 'encrypted' => 'Encrypted',
diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
index 6d915586b5..4fa316e2c2 100644
--- a/langs/ru/cgi-bin/ru.pl
+++ b/langs/ru/cgi-bin/ru.pl
@@ -747,7 +747,6 @@
 'enable javascript' => 'Разрешить javascript',
 'enable wildcards' => 'Разрешить wildcards:',
 'enabled' => 'Включено:',
-'enabled on' => 'Разрешено на',
 'enabledtitle' => 'Включено',
 'encapsulation' => 'Инкапсуляция',
 'encrypted' => 'Зашифровано',
diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
index c352cd7571..946c81db59 100644
--- a/langs/tr/cgi-bin/tr.pl
+++ b/langs/tr/cgi-bin/tr.pl
@@ -936,7 +936,6 @@
 'enable javascript' => 'Javascripti aktifleştir',
 'enable wildcards' => 'Joker karakterleri aktifleştir:',
 'enabled' => 'Aktif:',
-'enabled on' => 'Aktif olacağı yer',
 'enabledtitle' => 'Aktif',
 'encapsulation' => 'Kapsülleme',
 'encrypted' => 'Şifre',
diff --git a/langs/tw/cgi-bin/tw.pl b/langs/tw/cgi-bin/tw.pl
index 90fa81af05..9e0e609157 100644
--- a/langs/tw/cgi-bin/tw.pl
+++ b/langs/tw/cgi-bin/tw.pl
@@ -1030,7 +1030,6 @@
 'enable smt' => '啟用同時多線程(SMT)',
 'enable wildcards' => '啟用通配符:',
 'enabled' => '啟用:',
-'enabled on' => '啟用接口',
 'enabledtitle' => '啟用',
 'encapsulation' => '封裝形式',
 'encrypted' => '加密',
diff --git a/langs/zh/cgi-bin/zh.pl b/langs/zh/cgi-bin/zh.pl
index 9ba8a2caba..d298682c40 100644
--- a/langs/zh/cgi-bin/zh.pl
+++ b/langs/zh/cgi-bin/zh.pl
@@ -1030,7 +1030,6 @@
 'enable smt' => '启用同时多线程(SMT)',
 'enable wildcards' => '启用通配符:',
 'enabled' => '启用:',
-'enabled on' => '启用接口',
 'enabledtitle' => '启用',
 'encapsulation' => '封装形式',
 'encrypted' => '加密',
diff --git a/lfs/prompt b/lfs/prompt
new file mode 100644
index 0000000000..0fc9db19f0
--- /dev/null
+++ b/lfs/prompt
@@ -0,0 +1,82 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2025 IPFire Team  <info@ipfire.org>                           #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+# Downloaded as follows:
+# wget https://github.com/cadsondemak/prompt/archive/$(VER).tar.gz \
+# 	-O prompt-$(VER).tar.gz
+
+VER        = 18f813a4dea16a7ecc6f944053d3ce2cd4d7e824
+
+THISAPP    = prompt-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 9087b7dd043e7c483f73e2cd6f94f081940d3b679725ad458e5042dd0bd3455288659b125285c278890d78488fcd64250854ebc89dd6f6fc8057d6d353ca51d7
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+
+	-mkdir -pv /usr/share/fonts
+	cd $(DIR_APP) && cp -vf font/*.ttf /usr/share/fonts/
+
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/python3-more_itertools b/lfs/python3-more_itertools
new file mode 100644
index 0000000000..9778df685c
--- /dev/null
+++ b/lfs/python3-more_itertools
@@ -0,0 +1,79 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 10.7.0
+
+THISAPP    = more_itertools-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 0540d13c0dc2918ea612a1f8ca651f6a0a27d1ab3b6b13160f0bca07fc8b80c0d4b5c175c466cde59d24d54d8ed1cc99f1765d1a559064b82e19ead196ae515c
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist:
+	@$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && python3 -m build --wheel --no-isolation
+	cd $(DIR_APP) && python3 -m install --destdir=/ dist/*.whl
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/python3-packaging b/lfs/python3-packaging
index e98c9e2835..28671cb185 100644
--- a/lfs/python3-packaging
+++ b/lfs/python3-packaging
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 23.2
+VER        = 25.0
 
 THISAPP    = packaging-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = python3-packaging
-PAK_VER    = 4
+PAK_VER    = 5
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = cf7986a07312fd82a2a0ee738088993b9570d95cd0b573afa7a1f911bf335de7084e3d40d961adea7f5a8369738688f9d0a4265ef26a393f2d30769bc13f752a
+$(DL_FILE)_BLAKE2 = ad665526339ccc63bbca1e21649f773e626b13f984f0800c6362d5642e8de701d88f7793015bc406f3dc39fa6ce2784f099f925b08d7b5c1d3614d390470080c
 
 install : $(TARGET)
 
diff --git a/lfs/python3-pillow b/lfs/python3-pillow
new file mode 100644
index 0000000000..5418f519e0
--- /dev/null
+++ b/lfs/python3-pillow
@@ -0,0 +1,80 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 11.3.0
+
+THISAPP    = pillow-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = bde2d91943ca39cef342733f57d5c4b4e1fcb4e20b145fea1606018f255d70311e7f09d02321aede10ea1b0ae73cc86e3932d213718eb081f6961cf36174282f
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist: 
+	@$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# 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 < $(DIR_SRC)/src/patches/python3-pillow-11.3.0-fix-license.patch
+	cd $(DIR_APP) && python3 -m build --wheel --no-isolation
+	cd $(DIR_APP) && python3 -m install --destdir=/ dist/*.whl
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/python3-reportlab b/lfs/python3-reportlab
new file mode 100644
index 0000000000..b5e9096ee7
--- /dev/null
+++ b/lfs/python3-reportlab
@@ -0,0 +1,79 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 4.4.3
+
+THISAPP    = reportlab-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 30b2dd2160b3d9370ef9ad701da8bf52c640c2f94268bf3459d14d441cfc82b0d1fe5401ebbcfb7110faec9d1d5d03cd024b6be5f088d926f79cf3b4760539c3
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist: 
+	@$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && python3 setup.py build
+	cd $(DIR_APP) && python3 setup.py install --root=/
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/python3-setuptools b/lfs/python3-setuptools
index 0630a769dc..05e702a7e2 100644
--- a/lfs/python3-setuptools
+++ b/lfs/python3-setuptools
@@ -24,20 +24,13 @@
 
 include Config
 
-VER        = 67.5.1
-SUMMARY    = Enhancements to distutils for building and distributing Python packages
+VER        = 80.9.0
 
 THISAPP    = setuptools-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = python3-setuptools
-PAK_VER    = 7
-
-DEPS       =
-
-SERVICES   =
 
 ###############################################################################
 # Top-level Rules
@@ -47,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = ed063a287787e56850cd4f20a8f07cc8670138bdbbb934a0684ead355f234312e6d3cebabffbbc41fb2dd2df27c493878c6660ea073ea00e65d31cef8a6568c0
+$(DL_FILE)_BLAKE2 = ab367912eec92b0d1251916d09c1dd2e311767eec87225beaff870dff923b47ba1732d2f7393b7d9e55d1ff1249c612e4403019e0021048951f9fc3b775c04c9
 
 install : $(TARGET)
 
diff --git a/lfs/python3-wheel b/lfs/python3-wheel
new file mode 100644
index 0000000000..8740db052f
--- /dev/null
+++ b/lfs/python3-wheel
@@ -0,0 +1,79 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2020  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.45.1
+
+THISAPP    = wheel-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 13c8d60a2e39ded3d911c9e03915b01bda201f7e8cd6de456484ce6eeb2a990861a01f26e5d9f2ac4ca0ab2b6d0fea9db437d6f82cb39db9b1059c3c53202ec0
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist:
+	@$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && python3 setup.py build
+	cd $(DIR_APP) && python3 setup.py install --root=/
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/suricata-reporter b/lfs/suricata-reporter
new file mode 100644
index 0000000000..2c592c9841
--- /dev/null
+++ b/lfs/suricata-reporter
@@ -0,0 +1,90 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2025 IPFire Team  <info@ipfire.org>                           #
+#                                                                             #
+# 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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.2
+
+THISAPP    = suricata-reporter-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = af8a881c467898bfad94622d91733f86cfebcca848ac445c6a447e980535d0d6ea4f86be47b7e5db4a6182d0c6d21b2504aa9979aa5a113672597d00d82843e8
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && \
+		./configure \
+			--prefix=/usr \
+			--sysconfdir=/etc
+	cd $(DIR_APP) && make $(MAKETUNING)
+	cd $(DIR_APP) && make install
+
+	# Move the configuration file so that it can be edited by the user
+	# and will be included in the backup
+	mv -v /etc/suricata/reporter.conf \
+		/var/ipfire/suricata/reporter.conf
+	ln -svf --relative \
+		/var/ipfire/suricata/reporter.conf \
+		/etc/suricata/reporter.conf
+	chown nobody:nobody /var/ipfire/suricata/reporter.conf
+
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/lfs/web-user-interface b/lfs/web-user-interface
index da76a7d10e..47bc352972 100644
--- a/lfs/web-user-interface
+++ b/lfs/web-user-interface
@@ -74,6 +74,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	# Reset permissions of redirect templates and theme directories
 	find /srv/web/ipfire/html/{captive,redirect-templates,themes} -type d | xargs chmod -v 755
 
+	# Web UI Font
+	mkdir -pv /srv/web/ipfire/html/themes/ipfire/include/fonts
+	ln -svf --relative /usr/share/fonts/Prompt-Bold.ttf \
+		/srv/web/ipfire/html/themes/ipfire/include/fonts/Prompt-Bold.ttf
+	ln -svf --relative /usr/share/fonts/Prompt-Medium.ttf \
+		/srv/web/ipfire/html/themes/ipfire/include/fonts/Prompt-Medium.ttf
+	ln -svf --relative /usr/share/fonts/Prompt-Regular.ttf \
+		/srv/web/ipfire/html/themes/ipfire/include/fonts/Prompt-Regular.ttf
+
 	# Captive Portal CSS
 	ln -svf --relative /usr/share/bootstrap/css/bootstrap-grid.min.css \
 		/srv/web/ipfire/html/captive/assets/bootstrap-grid.min.css
diff --git a/make.sh b/make.sh
index 5be14c07fc..3257ab911a 100755
--- a/make.sh
+++ b/make.sh
@@ -1484,6 +1484,21 @@ build_system() {
 	lfsmake2 gdbm
 	lfsmake2 sqlite
 	lfsmake2 python3
+	lfsmake2 python3-wheel
+	lfsmake2 python3-toml
+	lfsmake2 python3-pyproject2setuppy
+	lfsmake2 python3-packaging
+	lfsmake2 python3-pep517
+	lfsmake2 python3-build
+	lfsmake2 python3-install
+	lfsmake2 python3-urllib3
+	lfsmake2 python3-charset-normalizer
+	lfsmake2 python3-idna
+	lfsmake2 python3-certifi
+	lfsmake2 python3-requests
+	lfsmake2 python3-docutils
+	lfsmake2 python3-flit
+	lfsmake2 python3-more_itertools
 	lfsmake2 python3-setuptools
 	lfsmake2 ninja
 	lfsmake2 meson
@@ -1764,11 +1779,11 @@ build_system() {
 	lfsmake2 perl-Object-Tiny
 	lfsmake2 perl-Archive-Peek-Libarchive
 	lfsmake2 python3-inotify
-	lfsmake2 python3-docutils
 	lfsmake2 python3-daemon
 	lfsmake2 ntp
 	lfsmake2 openssh
 	lfsmake2 fontconfig
+	lfsmake2 prompt
 	lfsmake2 dejavu-fonts-ttf
 	lfsmake2 ubuntu-font-family
 	lfsmake2 freefont
@@ -1863,8 +1878,6 @@ build_system() {
 	lfsmake2 elinks
 	lfsmake2 igmpproxy
 	lfsmake2 opus
-	lfsmake2 python3-toml
-	lfsmake2 python3-pyproject2setuppy
 	lfsmake2 python3-pyparsing
 	lfsmake2 spice-protocol
 	lfsmake2 spice
@@ -1934,16 +1947,6 @@ build_system() {
 	lfsmake2 wireless-regdb
 	lfsmake2 ddns
 	lfsmake2 python3-pycparser
-	lfsmake2 python3-charset-normalizer
-	lfsmake2 python3-certifi
-	lfsmake2 python3-idna
-	lfsmake2 python3-requests
-	lfsmake2 python3-pep517
-	lfsmake2 python3-build
-	lfsmake2 python3-install
-	lfsmake2 python3-urllib3
-	lfsmake2 python3-flit
-	lfsmake2 python3-packaging
 	lfsmake2 python3-typing-extensions
 	lfsmake2 python3-semantic-version
 	lfsmake2 python3-setuptools-scm
@@ -1983,6 +1986,8 @@ build_system() {
 	lfsmake2 python3-exceptiongroup
 	lfsmake2 python3-trio
 	lfsmake2 python3-pyfuse3
+	lfsmake2 python3-pillow
+	lfsmake2 python3-reportlab
 	lfsmake2 aws-cli
 	lfsmake2 oci-python-sdk
 	lfsmake2 oci-cli
@@ -2090,6 +2095,7 @@ build_system() {
 	lfsmake2 grub-btrfs
 	lfsmake2 fort-validator
 	lfsmake2 arpwatch
+	lfsmake2 suricata-reporter
 
 	lfsmake2 linux
 	lfsmake2 rtl8812au
diff --git a/src/initscripts/system/suricata b/src/initscripts/system/suricata
index a0f6079712..1565f795ab 100644
--- a/src/initscripts/system/suricata
+++ b/src/initscripts/system/suricata
@@ -174,7 +174,7 @@ generate_fw_rules() {
 }
 
 case "$1" in
-        start)
+	start)
 		# Get amount of CPU cores
 		cpu_count="$(getconf _NPROCESSORS_ONLN)"
 
@@ -185,10 +185,15 @@ case "$1" in
 			NFQUEUES+=":$(($cpu_count-1))"
 		fi
 
-		# Check if the IDS should be started.
+		# Check if suricata should be started
 		if [ "$ENABLE_IDS" == "on" ]; then
-			# Start the IDS.
-			boot_mesg "Starting Intrusion Detection System..."
+			# Start the reporter
+			boot_mesg "Starting Intrusion Prevention Reporter..."
+			loadproc -f -p /var/run/suricata/reporter.pid -b /usr/bin/suricata-reporter \
+				--config="/var/ipfire/suricata/reporter.conf"
+
+			# Start suricata
+			boot_mesg "Starting Intrusion Prevention System..."
 			loadproc -b /usr/bin/suricata-watcher -c /etc/suricata/suricata.yaml $NFQUEUES
 
 			# Flush the firewall chain
@@ -197,33 +202,41 @@ case "$1" in
 			# Generate firewall rules
 			generate_fw_rules
 		fi
-	;;
+		;;
 
-        stop)
-		boot_mesg "Stopping Intrusion Detection System..."
+	stop)
+		boot_mesg "Stopping Intrusion Prevention System..."
 		killproc -p /var/run/suricata.pid /usr/bin/suricata
 
+		boot_mesg "Stopping Intrusion Prevention Reporter..."
+		killproc -p /var/run/suricata/reporter.pid /usr/bin/suricata-reporter
+
 		# Flush firewall chain.
 		flush_fw_chain
 
 		# Don't report returncode of rm if suricata was not started
 		exit 0
-        ;;
+		;;
 
-        status)
-                PIDFILE="/var/run/suricata.pid" statusproc /usr/bin/suricata
-                ;;
+	status)
+		PIDFILE="/var/run/suricata.pid" statusproc /usr/bin/suricata
+		PIDFILE="/var/run/suricata/reporter.pid" statusproc /usr/bin/suricata-reporter
+		;;
 
-        restart)
-                $0 stop
-                $0 start
-                ;;
+	restart)
+		$0 stop
+		$0 start
+		;;
 
 	reload)
 		# Send SIGUSR2 to the suricata process to perform a reload
 		# of the ruleset.
 		kill -USR2 $(pidof suricata)
 
+		# Reload the reporter
+		PIDFILE="/var/run/suricata/reporter.pid" \
+			reloadproc /usr/bin/suricata-reporter
+
 		# Flush the firewall chain.
 		flush_fw_chain
 
@@ -231,8 +244,8 @@ case "$1" in
 		generate_fw_rules
 		;;
 
-        *)
-                echo "Usage: $0 {start|stop|restart|reload|status}"
-                exit 1
-                ;;
+	*)
+		echo "Usage: $0 {start|stop|restart|reload|status}"
+		exit 1
+		;;
 esac
diff --git a/src/patches/python3-pillow-11.3.0-fix-license.patch b/src/patches/python3-pillow-11.3.0-fix-license.patch
new file mode 100644
index 0000000000..8349bae0ab
--- /dev/null
+++ b/src/patches/python3-pillow-11.3.0-fix-license.patch
@@ -0,0 +1,13 @@
+--- pillow-11.3.0/pyproject.toml.bak	2025-08-07 15:56:16.353590772 +0000
++++ pillow-11.3.0/pyproject.toml	2025-08-07 15:56:31.049397673 +0000
+@@ -14,8 +14,8 @@
+ keywords = [
+   "Imaging",
+ ]
+-license = "MIT-CMU"
+-license-files = [ "LICENSE" ]
++#license = "MIT-CMU"
++#license-files = [ "LICENSE" ]
+ authors = [
+   { name = "Jeffrey A. Clark", email = "aclark@aclark.net" },
+ ]


hooks/post-receive
--
IPFire 2.x development tree


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-09-03 18:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-03 18:00 [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 0cbb9835fe27b6d99663a1b9e9d19414537ba388 Michael Tremer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox