commit:     09842f299803969fff3faf26d75b5ab6f0f9c3c5
Author:     Tomáš Mózes <hydrapolic <AT> gmail <DOT> com>
AuthorDate: Sun Nov  6 11:26:22 2022 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Sun Nov  6 13:39:24 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=09842f29

net-analyzer/pnp4nagios: add snapshot with php 8.0 support

- adding latest snapshot from:
https://github.com/lingej/pnp4nagios/commits/master

- adding compatibility patches from:
https://github.com/Tontonitch/pnp4nagios

- adding php 8.0 patches that work on my instance

Closes: https://github.com/gentoo/gentoo/pull/28157
Signed-off-by: Tomáš Mózes <hydrapolic <AT> gmail.com>
Signed-off-by: Michael Orlitzky <mjo <AT> gentoo.org>

 net-analyzer/pnp4nagios/Manifest                   |   1 +
 .../files/pnp4nagios-0.6.26_p20221106_compat.patch |  53 ++++++++++
 .../files/pnp4nagios-0.6.26_p20221106_php80.patch  |  42 ++++++++
 .../pnp4nagios/pnp4nagios-0.6.26_p20221106.ebuild  | 114 +++++++++++++++++++++
 4 files changed, 210 insertions(+)

diff --git a/net-analyzer/pnp4nagios/Manifest b/net-analyzer/pnp4nagios/Manifest
index e33adf3e6b1d..083f4e6e612e 100644
--- a/net-analyzer/pnp4nagios/Manifest
+++ b/net-analyzer/pnp4nagios/Manifest
@@ -1 +1,2 @@
 DIST pnp4nagios-0.6.26.tar.gz 3039265 BLAKE2B 
1adb3c41222e6bc93671af955a1564387d77901ce118f5d309d101d88c691140e0feef1c2594bc5db44706ff01505a4fcf99b79b6a0c5b5cb923838dd00f1ff0
 SHA512 
caf6dcced74967174d9e6f09dd1a5bee17397c10a68d0f577c37dcc836f928d78c20d75a0189539e9ffa93715ab7b6e732e9f36b9698cf4dd9c09cfb65184427
+DIST pnp4nagios-0.6.26_p20221106.tar.gz 3029704 BLAKE2B 
5866f4dbfef9b1028255eb3e47ac57fa260c1e2caca50fcb1c5ff93a3dc9bee9f14152e3a269ecf12daab59e50e1f4dfcd6513f9ce3dc5da35de50b944c38260
 SHA512 
cd0c3ad3d4983c43f7e1a100e8a2e6a530b573ca6bed60125c87b22ab33c2486c5ce99c6f52d641cdc7468984925a22a6ee7e1ac330ea2278ec2439acb910d04

diff --git 
a/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_compat.patch 
b/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_compat.patch
new file mode 100644
index 000000000000..21f9c89ed94f
--- /dev/null
+++ b/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_compat.patch
@@ -0,0 +1,53 @@
+# https://github.com/Tontonitch/pnp4nagios/commits/master
+
+diff --git a/share/pnp/application/views/graph_content.php 
b/share/pnp/application/views/graph_content.php
+index 3ea99dc0..00469ce0 100644
+--- a/share/pnp/application/views/graph_content.php
++++ b/share/pnp/application/views/graph_content.php
+@@ -88,7 +88,8 @@
+       # treated like a url fragment when zooming
+       $gid = array();
+       parse_str(ltrim($this->url, '?'), $gid);
+-      $gid = 
htmlentities("?host=".urlencode($gid["host"])."&srv=".urlencode($gid["srv"]));
++      $srv = isset($gid['srv']) ? $gid['srv'] : '';
++      $gid = 
htmlentities("?host=".urlencode($gid["host"])."&srv=".urlencode($srv));
+       
+       echo "<div start=".$value['TIMERANGE']['start']." 
end=".$value['TIMERANGE']['end']." style=\"width:".$value['GRAPH_WIDTH']."px; 
height:".$value['GRAPH_HEIGHT']."px; position:absolute; top:33px\" 
class=\"graph\" id=\"".$gid."\" ></div>";
+       
+diff --git a/share/pnp/application/vendor/fpdf/fpdf.php 
b/share/pnp/application/vendor/fpdf/fpdf.php
+index cfc09593..efb53b4e 100755
+--- a/share/pnp/application/vendor/fpdf/fpdf.php
++++ b/share/pnp/application/vendor/fpdf/fpdf.php
+@@ -1040,8 +1040,11 @@ protected function _dochecks()
+       if(ini_get('mbstring.func_overload') & 2)
+               $this->Error('mbstring overloading must be disabled');
+       // Ensure runtime magic quotes are disabled
+-      if(get_magic_quotes_runtime())
+-              @set_magic_quotes_runtime(0);
++#       if(get_magic_quotes_runtime())
++#               @set_magic_quotes_runtime(0);
++        if (PHP_VERSION_ID < 70400 && get_magic_quotes_runtime()) {
++            set_magic_quotes_runtime(0);
++        }
+ }
+ 
+ protected function _checkoutput()
+diff --git a/share/pnp/application/vendor/fpdf/fpdi_pdf_parser.php 
b/share/pnp/application/vendor/fpdf/fpdi_pdf_parser.php
+index 9e6d521a..c044f200 100755
+--- a/share/pnp/application/vendor/fpdf/fpdi_pdf_parser.php
++++ b/share/pnp/application/vendor/fpdf/fpdi_pdf_parser.php
+@@ -305,6 +305,7 @@ protected function _getPageRotation($obj)
+         }
+ 
+         $res = $this->_getPageRotation($obj[1][1]['/Parent']);
++        if(false == $res) return false;
+         if ($res[0] == pdf_parser::TYPE_OBJECT)
+             return $res[1];
+ 
+@@ -344,4 +345,4 @@ protected function _readPages(&$pages, &$result)
+             }
+         }
+     }
+-}
+\ No newline at end of file
++}

diff --git 
a/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_php80.patch 
b/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_php80.patch
new file mode 100644
index 000000000000..2407bb6c51e9
--- /dev/null
+++ b/net-analyzer/pnp4nagios/files/pnp4nagios-0.6.26_p20221106_php80.patch
@@ -0,0 +1,42 @@
+diff --git a/lib/kohana/system/core/utf8.php b/lib/kohana/system/core/utf8.php
+index 9f20f42..b349c68 100644
+--- a/lib/kohana/system/core/utf8.php
++++ b/lib/kohana/system/core/utf8.php
+@@ -49,17 +49,6 @@ if ( ! extension_loaded('iconv'))
+       );
+ }
+ 
+-if (extension_loaded('mbstring') AND (ini_get('mbstring.func_overload') & 
MB_OVERLOAD_STRING))
+-{
+-      trigger_error
+-      (
+-              'The <a href="http://php.net/mbstring";>mbstring</a> extension 
is overloading PHP\'s native string functions. '.
+-              'Disable this by setting mbstring.func_overload to 0, 1, 4 or 5 
in php.ini or a .htaccess file.'.
+-              'This application cannot be run without UTF-8 support.',
+-              E_USER_ERROR
+-      );
+-}
+-
+ // Check PCRE support for Unicode properties such as \p and \X.
+ $ER = error_reporting(0);
+ define('PCRE_UNICODE_PROPERTIES', (bool) preg_match('/^\pL$/u', 'ñ'));
+@@ -740,4 +729,4 @@ final class utf8 {
+               return _from_unicode($arr);
+       }
+ 
+-} // End utf8
+\ No newline at end of file
++} // End utf8
+diff --git a/share/pnp/application/models/data.php 
b/share/pnp/application/models/data.php
+index 576c8ec..20cdade 100644
+--- a/share/pnp/application/models/data.php
++++ b/share/pnp/application/models/data.php
+@@ -266,7 +266,7 @@ class Data_Model extends System_Model
+         $xml         = array();
+         if (file_exists($xmlfile)) {
+             libxml_use_internal_errors(TRUE);
+-            libxml_clear_errors(TRUE);
++            libxml_clear_errors();
+             if(! $xml = simplexml_load_file($xmlfile) ){;
+                 if( $throw_exception == TRUE ){
+                     $errors = '<br>';

diff --git a/net-analyzer/pnp4nagios/pnp4nagios-0.6.26_p20221106.ebuild 
b/net-analyzer/pnp4nagios/pnp4nagios-0.6.26_p20221106.ebuild
new file mode 100644
index 000000000000..1ce42b2d29c9
--- /dev/null
+++ b/net-analyzer/pnp4nagios/pnp4nagios-0.6.26_p20221106.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A performance data analyzer for nagios"
+HOMEPAGE="http://www.pnp4nagios.org/";
+GH_COMMIT="5e09f538373ac4310a13355746bb3d3a10eb7bef"
+SRC_URI="https://github.com/lingej/pnp4nagios/archive/${GH_COMMIT}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/${PN}-${GH_COMMIT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="apache2 icinga +nagios"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86"
+
+REQUIRED_USE="^^ ( icinga nagios )"
+
+# Some things (sync mode, for one) are broken with nagios-4.x, but since
+# nagios-3.x has been end-of-life'd, we don't have much choice here but
+# to accept it.
+DEPEND="net-analyzer/rrdtool[graph,perl]
+       icinga? (
+               acct-group/icinga
+               acct-user/icinga
+       )
+       nagios? (
+               acct-group/nagios
+               acct-user/nagios
+       )"
+
+# A list of modules used in our Apache config file.
+APACHE_MODS="apache2_modules_alias,"       # "Alias" directive
+APACHE_MODS+="apache2_modules_authz_core," # "Require" directive
+APACHE_MODS+="apache2_modules_rewrite"     # "RewriteEngine" and friends
+
+RDEPEND="${DEPEND}
+       dev-lang/php:*[filter,gd,json(+),simplexml,xml,zlib]
+       media-fonts/dejavu
+       virtual/perl-Getopt-Long
+       virtual/perl-Time-HiRes
+       apache2? ( >=www-servers/apache-2.4[${APACHE_MODS}] )"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-0.6.14-makefile.patch"
+       "${FILESDIR}/${PN}-0.6.26_p20221106_compat.patch"
+       "${FILESDIR}/${PN}-0.6.26_p20221106_php80.patch"
+)
+
+src_configure() {
+       local user_group=nagios
+       use icinga && user_group=icinga
+
+       local myeconfargs=(
+               --sysconfdir="${EPREFIX}"/etc/pnp
+               --datarootdir="${EPREFIX}"/usr/share/pnp
+               --localstatedir="${EPREFIX}"/var/lib/pnp
+               --with-nagios-user="${user_group}"
+               --with-nagios-group="${user_group}"
+               
--with-perfdata-logfile="${EPREFIX}"/var/log/pnp/process_perfdata.log
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+       # The default target just shows a help
+       emake all
+}
+
+src_install() {
+       # Don't use INSTALL_OPTS because they set insecure permissions on
+       # all of /etc/pnp (https://github.com/lingej/pnp4nagios/issues/140).
+       emake INSTALL_OPTS="" DESTDIR="${D}" install install-config
+       einstalldocs
+       newinitd "${FILESDIR}"/npcd.initd npcd
+       rm "${ED}/usr/share/pnp/install.php" || \
+               die "unable to remove ${ED}/usr/share/pnp/install.php"
+
+       # Fix CVE-2012-3457 (Gentoo bug 430358)
+       fperms o-rwx /etc/pnp/process_perfdata.cfg
+
+       if use apache2 ; then
+               insinto /etc/apache2/modules.d
+               newins "${FILESDIR}"/98_pnp4nagios-2.4.conf 98_pnp4nagios.conf
+       fi
+
+       # The nagios or icinga user needs to write performance data to the
+       # perfdata-dir...
+       local user_group=nagios
+       use icinga && user_group=icinga
+       fowners ":${user_group}" /var/lib/pnp/{,perfdata,spool}
+       fperms g+rwx /var/lib/pnp/{,perfdata,spool}
+
+       # and likewise for its logs...
+       dodir /var/log/pnp
+       fowners ":${user_group}" /var/log/pnp
+       fperms g+rwx /var/log/pnp
+
+       # and its statistics. This one is arguably the responsibility of the
+       # build system, since process_perfdata.cfg refers to this location.
+       dodir /var/lib/pnp/stats
+       fowners ":${user_group}" /var/lib/pnp/stats
+       fperms g+rwx /var/lib/pnp/stats
+}
+
+pkg_postinst() {
+       elog "To enable the pnp4nagios web front-end, please visit"
+       elog "${EROOT}/etc/conf.d/apache2 and add \"-D PNP -D PHP\""
+       elog "to APACHE2_OPTS. Then pnp4nagios will be available at,"
+       elog
+       elog "  http://localhost/pnp4nagios";
+       elog
+}

Reply via email to