mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
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:
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
|
@ -2,8 +2,8 @@
|
||||||
# $FreeBSD$
|
# $FreeBSD$
|
||||||
|
|
||||||
PORTNAME= librenms
|
PORTNAME= librenms
|
||||||
PORTVERSION= 1.33.01
|
PORTVERSION= 1.35
|
||||||
PORTREVISION= 1
|
PORTREVISION= 0
|
||||||
PORTEPOCH= 1
|
PORTEPOCH= 1
|
||||||
CATEGORIES= net-mgmt
|
CATEGORIES= net-mgmt
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ LICENSE= GPLv3
|
||||||
USE_GITHUB= yes
|
USE_GITHUB= yes
|
||||||
GH_ACCOUNT= librenms
|
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 \
|
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/convert_no_xml.sh \
|
||||||
scripts/Migration/Standard_Conversion/destwork_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/rename-config.php \
|
||||||
vendor/ezyang/htmlpurifier/maintenance/remove-trailing-whitespace.php \
|
vendor/ezyang/htmlpurifier/maintenance/remove-trailing-whitespace.php \
|
||||||
vendor/ezyang/htmlpurifier/maintenance/update-config.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
|
NO_BUILD= yes
|
||||||
|
|
||||||
|
@ -79,84 +80,72 @@ WMIC_RUN_DEPENDS= wmic:net-mgmt/wmi-client
|
||||||
MYSQLD_USES= mysql:server
|
MYSQLD_USES= mysql:server
|
||||||
MYSQLD_USES_OFF= mysql:client
|
MYSQLD_USES_OFF= mysql:client
|
||||||
|
|
||||||
SUB_FILES+= pkg-message
|
SUB_FILES+= librenms.conf pkg-message
|
||||||
SUB_LIST+= PHP="${PHPBASE}/bin/php" PYTHON=${PYTHON_CMD}
|
SUB_LIST+= PHP="${PHPBASE}/bin/php" PYTHON=${PYTHON_CMD}
|
||||||
|
|
||||||
ROOT_FILES= addhost.php adduser.php alerts.php build-base.php build.sql \
|
ROOT_FILES= addhost.php adduser.php alerts.php build-base.php build.sql \
|
||||||
billing-calculate.php \
|
billing-calculate.php check-services.php composer.json \
|
||||||
check-services.php composer.json config_to_json.php cronic daily.php daily.sh \
|
config.php.default config_to_json.php cronic daily.php daily.sh \
|
||||||
delhost.php discovery-wrapper.py discovery.php dist-pollers.php irc.php \
|
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 \
|
mkdocs.yml pbin.sh phpunit.xml poll-billing.php poller.php poller-service.py \
|
||||||
poller-wrapper.py readmegen.yml renamehost.php services-wrapper.py \
|
poller-wrapper.py readmegen.yml renamehost.php services-wrapper.py \
|
||||||
snmptrap.php syslog.php validate.php
|
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
|
DOCS= AUTHORS.md CHANGELOG CONTRIBUTING.md LICENSE.txt README.md
|
||||||
PORTDOCS= *
|
PORTDOCS= *
|
||||||
PORTEXAMPLES= snmp.conf.example snmpd.conf.example
|
PORTEXAMPLES= snmp.conf.example snmpd.conf.example
|
||||||
NO_ARCH= yes
|
NO_ARCH= yes
|
||||||
|
|
||||||
.if !defined(PACKAGE_BUILDING)
|
APACHEMOD_USES= php:mod
|
||||||
APACHEMOD_VARS_ON= WANT_PHP_MOD=yes
|
APACHEMOD_USES_OFF= php:web
|
||||||
APACHEMOD_USE= APACHE_RUN=22+
|
APACHEMOD_USE= APACHE_RUN=22+
|
||||||
.else
|
|
||||||
# Package builder doesn't create php5 with module
|
|
||||||
USES+= php:web
|
|
||||||
.endif
|
|
||||||
|
|
||||||
post-patch:
|
post-patch:
|
||||||
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
|
${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
|
||||||
${WRKSRC}/poller-wrapper.py ${WRKSRC}/poller.php
|
${WRKSRC}/poller-wrapper.py ${WRKSRC}/poller.php
|
||||||
${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' \
|
${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' \
|
||||||
${WRKSRC}/includes/common.php
|
${WRKSRC}/includes/common.php
|
||||||
|
${REINPLACE_CMD} -e 's|/opt/librenms|${WWWDIR}|' \
|
||||||
|
${WRKSRC}/html/install.php
|
||||||
|
${RM} ${WRKSRC}/LibreNMS/Validations/Updates.php
|
||||||
|
|
||||||
do-install:
|
do-install:
|
||||||
@${MKDIR} ${STAGEDIR}/${WWWDIR}
|
${MKDIR} ${STAGEDIR}/${WWWDIR}
|
||||||
.for dir in ${ROOT_DIRS}
|
.for dir in ${ROOT_DIRS}
|
||||||
@${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir}
|
${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir}
|
||||||
@cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir}
|
(cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir})
|
||||||
.endfor
|
.endfor
|
||||||
.for f in ${ROOT_FILES}
|
.for f in ${ROOT_FILES}
|
||||||
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR}
|
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR}
|
||||||
.endfor
|
.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
|
# Make daily.sh executable
|
||||||
@${CHMOD} 0755 ${STAGEDIR}/${WWWDIR}/daily.sh
|
${CHMOD} 0755 ${STAGEDIR}/${WWWDIR}/daily.sh
|
||||||
# Files in scripts dir should be executable
|
# 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
|
# 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 {} \;
|
'*.php' -exec ${CHMOD} +x {} \;
|
||||||
|
|
||||||
do-install-DOCS-on:
|
do-install-DOCS-on:
|
||||||
@${MKDIR} ${STAGEDIR}/${DOCSDIR}
|
${MKDIR} ${STAGEDIR}/${DOCSDIR}
|
||||||
.for f in ${DOCS}
|
.for f in ${DOCS}
|
||||||
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR}
|
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR}
|
||||||
.endfor
|
.endfor
|
||||||
@cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR}
|
cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR}
|
||||||
|
|
||||||
do-install-EXAMPLES-on:
|
do-install-EXAMPLES-on:
|
||||||
@${MKDIR} ${STAGEDIR}/${EXAMPLESDIR}
|
${MKDIR} ${STAGEDIR}/${EXAMPLESDIR}
|
||||||
.for f in ${PORTEXAMPLES}
|
.for f in ${PORTEXAMPLES}
|
||||||
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${EXAMPLESDIR}
|
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${EXAMPLESDIR}
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
post-install:
|
post-install:
|
||||||
@${ECHO_CMD} "@owner ${WWWOWN}" >> ${TMPPLIST}
|
@${FIND} -s ${STAGEDIR}${WWWDIR} -type f '(' -name '*.orig' -or -name '*.bak' ')' -delete
|
||||||
@${ECHO_CMD} "@group ${WWWGRP}" >> ${TMPPLIST}
|
|
||||||
@${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \
|
@${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \
|
||||||
${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
|
${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
|
||||||
@${FIND} -s ${STAGEDIR}${WWWDIR} -type d | \
|
@${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/logs" >> ${TMPPLIST}
|
||||||
${SED} -e 's#^${STAGEDIR}#@dir #' >> ${TMPPLIST}
|
@${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/rrd" >> ${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}
|
|
||||||
|
|
||||||
.include <bsd.port.mk>
|
.include <bsd.port.mk>
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
TIMESTAMP = 1511119483
|
TIMESTAMP = 1515895316
|
||||||
SHA256 (librenms-librenms-1.33.01_GH0.tar.gz) = ca5f3d5a606efd445291c14126c9216d1a595dc37f330cc00284d5d42f6bf5e9
|
SHA256 (librenms-librenms-1.35_GH0.tar.gz) = 6ac5d1164642cdef589487a2d599b774081a6e82e59f5fffca2c566b69d98850
|
||||||
SIZE (librenms-librenms-1.33.01_GH0.tar.gz) = 60473613
|
SIZE (librenms-librenms-1.35_GH0.tar.gz) = 62664279
|
||||||
|
|
11
net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php
Normal file
11
net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php
Normal 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+");
|
||||||
|
}
|
||||||
|
|
33
net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php
Normal file
33
net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php
Normal 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");
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
+++ config.php.default
|
||||||
@@ -10,7 +10,7 @@ $config['db_name'] = 'librenms';
|
@@ -10,7 +10,7 @@ $config['db_name'] = 'librenms';
|
||||||
|
|
||||||
|
|
20
net-mgmt/librenms/files/patch-html_install.php
Normal file
20
net-mgmt/librenms/files/patch-html_install.php
Normal 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")) {
|
|
@ -1,6 +1,6 @@
|
||||||
--- includes/defaults.inc.php.orig 2017-11-01 17:55:06.000000000 +0000
|
--- includes/defaults.inc.php.orig 2017-12-31 20:48:36 UTC
|
||||||
+++ includes/defaults.inc.php 2017-11-20 23:16:29.419902000 +0000
|
+++ includes/defaults.inc.php
|
||||||
@@ -48,19 +48,21 @@
|
@@ -48,19 +48,21 @@ $config['fping_options']['retries'] = 3;
|
||||||
$config['fping_options']['timeout'] = 500;
|
$config['fping_options']['timeout'] = 500;
|
||||||
$config['fping_options']['count'] = 3;
|
$config['fping_options']['count'] = 3;
|
||||||
$config['fping_options']['millisec'] = 200;
|
$config['fping_options']['millisec'] = 200;
|
||||||
|
@ -30,5 +30,5 @@
|
||||||
+$config['dot'] = '/usr/local/bin/dot';
|
+$config['dot'] = '/usr/local/bin/dot';
|
||||||
+$config['sfdp'] = '/usr/local/bin/sfdp';
|
+$config['sfdp'] = '/usr/local/bin/sfdp';
|
||||||
|
|
||||||
// Memcached - Keep immediate statistics
|
$config['slow_statistics'] = true;
|
||||||
$config['memcached']['enable'] = false;
|
// THIS WILL CHANGE TO FALSE IN FUTURE
|
||||||
|
|
|
@ -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
|
+++ 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:
|
@@ -36,6 +36,8 @@ except:
|
||||||
print "threading, Queue, sys, subprocess, time, os, json"
|
print "threading, Queue, sys, subprocess, time, os, json"
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
/**
|
|
Loading…
Add table
Reference in a new issue