net-mgmt/librenms: Update to 1.35, many improvements

Improvements:

-    All files should be owned root:wheel except logs and rrd which need to be writable by the app
-    Add missing php posix extension
-    Do not install config.php by default. This breaks the install process which won't run if this file exists
-    Clean up automatic PLIST creation: don't install .orig or .bak files, don't add @dir as they aren't needed
-    Patch LibreNMS to make /validate/ page not produce warnings about files not being writable (for git updates)
-    Remove the Updates validation check altogether as we won't be using git to update
-    Patch the User validation check to only check the logs and rrd dir and ensure the correct user owns them
-    Change the default user in the generated config to "www"
-    Patch the File Lock code to put the lock file in /tmp and not in the WWWDIR which should not be writable
-    Update message in installer to use WWWDIR as suggested path for config.php
-    Use shebangfix instead of patch where applicable
-    Fix APACHEMOD port option and declaration of the USES=php

PR:		225161
MFH:		2018Q1
Differential Revision:	https://reviews.freebsd.org/D13907
This commit is contained in:
Mark Felder 2018-01-18 20:21:42 +00:00
parent ed3c187204
commit 4325c04e1b
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=459372
9 changed files with 101 additions and 62 deletions

View file

@ -2,8 +2,8 @@
# $FreeBSD$
PORTNAME= librenms
PORTVERSION= 1.33.01
PORTREVISION= 1
PORTVERSION= 1.35
PORTREVISION= 0
PORTEPOCH= 1
CATEGORIES= net-mgmt
@ -15,7 +15,7 @@ LICENSE= GPLv3
USE_GITHUB= yes
GH_ACCOUNT= librenms
USES= php:cli python${PY_MYSQL} shebangfix
USES= python${PY_MYSQL} shebangfix
SHEBANG_FILES= scripts/auth_test.php scripts/deploy-docs.sh scripts/github-remove \
scripts/Migration/Standard_Conversion/convert_no_xml.sh \
scripts/Migration/Standard_Conversion/destwork_no_xml.sh \
@ -40,9 +40,10 @@ SHEBANG_FILES= scripts/auth_test.php scripts/deploy-docs.sh scripts/github-remov
vendor/ezyang/htmlpurifier/maintenance/rename-config.php \
vendor/ezyang/htmlpurifier/maintenance/remove-trailing-whitespace.php \
vendor/ezyang/htmlpurifier/maintenance/update-config.php \
vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php
vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php \
poller.php poller-wrapper.py
USE_PHP= ctype curl filter gd hash json ldap mcrypt mysqli openssl session simplexml snmp tokenizer xml
USE_PHP= ctype curl filter gd hash json ldap mcrypt mysqli openssl posix session simplexml snmp tokenizer xml
NO_BUILD= yes
@ -79,84 +80,72 @@ WMIC_RUN_DEPENDS= wmic:net-mgmt/wmi-client
MYSQLD_USES= mysql:server
MYSQLD_USES_OFF= mysql:client
SUB_FILES+= pkg-message
SUB_FILES+= librenms.conf pkg-message
SUB_LIST+= PHP="${PHPBASE}/bin/php" PYTHON=${PYTHON_CMD}
ROOT_FILES= addhost.php adduser.php alerts.php build-base.php build.sql \
billing-calculate.php \
check-services.php composer.json config_to_json.php cronic daily.php daily.sh \
billing-calculate.php check-services.php composer.json \
config.php.default config_to_json.php cronic daily.php daily.sh \
delhost.php discovery-wrapper.py discovery.php dist-pollers.php irc.php \
mkdocs.yml pbin.sh phpunit.xml poll-billing.php poller.php poller-service.py \
poller-wrapper.py readmegen.yml renamehost.php services-wrapper.py \
snmptrap.php syslog.php validate.php
ROOT_DIRS= LibreNMS contrib doc html includes lib mibs misc scripts sql-schema tests vendor
ROOT_DIRS= LibreNMS contrib doc html includes lib logs mibs misc rrd scripts sql-schema tests vendor
DOCS= AUTHORS.md CHANGELOG CONTRIBUTING.md LICENSE.txt README.md
PORTDOCS= *
PORTEXAMPLES= snmp.conf.example snmpd.conf.example
NO_ARCH= yes
.if !defined(PACKAGE_BUILDING)
APACHEMOD_VARS_ON= WANT_PHP_MOD=yes
APACHEMOD_USES= php:mod
APACHEMOD_USES_OFF= php:web
APACHEMOD_USE= APACHE_RUN=22+
.else
# Package builder doesn't create php5 with module
USES+= php:web
.endif
post-patch:
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/poller-wrapper.py ${WRKSRC}/poller.php
${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' \
${WRKSRC}/includes/common.php
${REINPLACE_CMD} -e 's|/opt/librenms|${WWWDIR}|' \
${WRKSRC}/html/install.php
${RM} ${WRKSRC}/LibreNMS/Validations/Updates.php
do-install:
@${MKDIR} ${STAGEDIR}/${WWWDIR}
${MKDIR} ${STAGEDIR}/${WWWDIR}
.for dir in ${ROOT_DIRS}
@${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir}
@cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir}
${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir}
(cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir})
.endfor
.for f in ${ROOT_FILES}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR}
.endfor
# Create empty rrd dir writable by www
@${MKDIR} ${STAGEDIR}/${WWWDIR}/rrd
@${CHMOD} 0775 ${STAGEDIR}/${WWWDIR}/rrd
# Create empty logs dir
@${MKDIR} ${STAGEDIR}/${WWWDIR}/logs
# Make daily.sh executable
@${CHMOD} 0755 ${STAGEDIR}/${WWWDIR}/daily.sh
${CHMOD} 0755 ${STAGEDIR}/${WWWDIR}/daily.sh
# Files in scripts dir should be executable
@${FIND} ${STAGEDIR}/${WWWDIR}/scripts -type f -exec ${CHMOD} +x {} \;
${FIND} ${STAGEDIR}/${WWWDIR}/scripts -type f -exec ${CHMOD} +x {} \;
# Ensure PHP and Python scripts are executable
@${FIND} ${STAGEDIR}/${WWWDIR} -type f -name '*.py' -or -type f -name \
${FIND} ${STAGEDIR}/${WWWDIR} -type f -name '*.py' -or -type f -name \
'*.php' -exec ${CHMOD} +x {} \;
do-install-DOCS-on:
@${MKDIR} ${STAGEDIR}/${DOCSDIR}
${MKDIR} ${STAGEDIR}/${DOCSDIR}
.for f in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR}
.endfor
@cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR}
cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR}
do-install-EXAMPLES-on:
@${MKDIR} ${STAGEDIR}/${EXAMPLESDIR}
${MKDIR} ${STAGEDIR}/${EXAMPLESDIR}
.for f in ${PORTEXAMPLES}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${EXAMPLESDIR}
.endfor
post-install:
@${ECHO_CMD} "@owner ${WWWOWN}" >> ${TMPPLIST}
@${ECHO_CMD} "@group ${WWWGRP}" >> ${TMPPLIST}
@${FIND} -s ${STAGEDIR}${WWWDIR} -type f '(' -name '*.orig' -or -name '*.bak' ')' -delete
@${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \
${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
@${FIND} -s ${STAGEDIR}${WWWDIR} -type d | \
${SED} -e 's#^${STAGEDIR}#@dir #' >> ${TMPPLIST}
${INSTALL_DATA} ${WRKSRC}/config.php.default \
${STAGEDIR}/${WWWDIR}/config.php.sample
@${ECHO} @sample ${WWWDIR}/config.php.sample >> ${TMPPLIST}
@${ECHO_CMD} "@group" >> ${TMPPLIST}
@${ECHO_CMD} "@owner" >> ${TMPPLIST}
@${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/logs" >> ${TMPPLIST}
@${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/rrd" >> ${TMPPLIST}
.include <bsd.port.mk>

View file

@ -1,3 +1,3 @@
TIMESTAMP = 1511119483
SHA256 (librenms-librenms-1.33.01_GH0.tar.gz) = ca5f3d5a606efd445291c14126c9216d1a595dc37f330cc00284d5d42f6bf5e9
SIZE (librenms-librenms-1.33.01_GH0.tar.gz) = 60473613
TIMESTAMP = 1515895316
SHA256 (librenms-librenms-1.35_GH0.tar.gz) = 6ac5d1164642cdef589487a2d599b774081a6e82e59f5fffca2c566b69d98850
SIZE (librenms-librenms-1.35_GH0.tar.gz) = 62664279

View file

@ -0,0 +1,11 @@
--- LibreNMS/Util/FileLock.php.orig 2018-01-14 15:32:35 UTC
+++ LibreNMS/Util/FileLock.php
@@ -45,7 +45,7 @@ class FileLock implements Lock
global $config;
$this->name = $lock_name;
- $this->file = "$config[install_dir]/.$lock_name.lock";
+ $this->file = "/tmp/.$lock_name.lock";
$this->handle = fopen($this->file, "w+");
}

View file

@ -0,0 +1,33 @@
--- LibreNMS/Validations/User.php.orig 2017-12-31 20:48:36 UTC
+++ LibreNMS/Validations/User.php
@@ -62,29 +62,7 @@ class User implements ValidationGroup
// Let's test the user configured if we have it
- if (Config::has('user')) {
- $dir = Config::get('install_dir');
-
- $find_result = rtrim(`find $dir \! -user $lnms_username -o \! -group $lnms_groupname &> /dev/null`);
- if (!empty($find_result)) {
- // Ignore the two logs that may be created by the
- $files = array_diff(explode(PHP_EOL, $find_result), array(
- "$dir/logs/error_log",
- "$dir/logs/access_log",
- ));
-
- if (!empty($files)) {
- $result = ValidationResult::fail(
- "We have found some files that are owned by a different user than $lnms_username, this " .
- 'will stop you updating automatically and / or rrd files being updated causing graphs to fail.'
- )
- ->setFix("chown -R $lnms_username:$lnms_groupname $dir")
- ->setList('Files', $files);
-
- $validator->result($result);
- }
- }
- } else {
+ if (!Config::has('user')) {
$validator->warn("You don't have \$config['user'] set, this most likely needs to be set to librenms");
}

View file

@ -1,4 +1,4 @@
--- config.php.default.orig 2017-04-11 17:32:28 UTC
--- config.php.default.orig 2017-12-31 20:48:36 UTC
+++ config.php.default
@@ -10,7 +10,7 @@ $config['db_name'] = 'librenms';

View file

@ -0,0 +1,20 @@
--- html/install.php.orig 2017-12-31 20:48:36 UTC
+++ html/install.php
@@ -364,7 +364,7 @@ $config_file = <<<"EOD"
// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
-\$config['user'] = 'librenms';
+\$config['user'] = 'www';
### Memcached config - We use this to store realtime usage
\$config\['memcached'\]\['enable'\] = FALSE;
@@ -395,7 +395,7 @@ $config_file = <<<"EOD"
#\$config\['nets'\]\[\] = "192.168.0.0/16";
# Uncomment the next line to disable daily updates
-#\$config\['update'\] = 0;
+\$config\['update'\] = 0;
EOD;
if (!file_exists("../config.php")) {

View file

@ -1,6 +1,6 @@
--- includes/defaults.inc.php.orig 2017-11-01 17:55:06.000000000 +0000
+++ includes/defaults.inc.php 2017-11-20 23:16:29.419902000 +0000
@@ -48,19 +48,21 @@
--- includes/defaults.inc.php.orig 2017-12-31 20:48:36 UTC
+++ includes/defaults.inc.php
@@ -48,19 +48,21 @@ $config['fping_options']['retries'] = 3;
$config['fping_options']['timeout'] = 500;
$config['fping_options']['count'] = 3;
$config['fping_options']['millisec'] = 200;
@ -30,5 +30,5 @@
+$config['dot'] = '/usr/local/bin/dot';
+$config['sfdp'] = '/usr/local/bin/sfdp';
// Memcached - Keep immediate statistics
$config['memcached']['enable'] = false;
$config['slow_statistics'] = true;
// THIS WILL CHANGE TO FALSE IN FUTURE

View file

@ -1,11 +1,5 @@
--- poller-wrapper.py.orig 2017-05-28 21:54:20 UTC
--- poller-wrapper.py.orig 2018-01-14 15:32:19 UTC
+++ poller-wrapper.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python2
+#! %%LOCALBASE%%/bin/python
"""
poller-wrapper A small tool which wraps around the poller and tries to
guide the polling process with a more modern approach with a
@@ -36,6 +36,8 @@ except:
print "threading, Queue, sys, subprocess, time, os, json"
sys.exit(2)

View file

@ -1,8 +0,0 @@
--- poller.php.orig 2015-05-27 15:48:33 UTC
+++ poller.php
@@ -1,4 +1,4 @@
-#!/usr/bin/env php
+#!%%LOCALBASE%%/bin/php
<?php
/**