diff options
author | feld <feld@FreeBSD.org> | 2018-01-19 04:21:42 +0800 |
---|---|---|
committer | feld <feld@FreeBSD.org> | 2018-01-19 04:21:42 +0800 |
commit | c0b885230933343dae3fdecfd7ee8d0ced4f761e (patch) | |
tree | dcb47bde03a694f99ce3d419f277188877f393b2 /net-mgmt/librenms | |
parent | 6dc85c0c661060a426c9cf65750a2db793c547ef (diff) | |
download | freebsd-ports-gnome-c0b885230933343dae3fdecfd7ee8d0ced4f761e.tar.gz freebsd-ports-gnome-c0b885230933343dae3fdecfd7ee8d0ced4f761e.tar.zst freebsd-ports-gnome-c0b885230933343dae3fdecfd7ee8d0ced4f761e.zip |
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
Diffstat (limited to 'net-mgmt/librenms')
-rw-r--r-- | net-mgmt/librenms/Makefile | 65 | ||||
-rw-r--r-- | net-mgmt/librenms/distinfo | 6 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php | 11 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php | 33 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-config.php.default | 2 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-html_install.php | 20 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-includes_defaults.inc.php | 10 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-poller-wrapper.py | 8 | ||||
-rw-r--r-- | net-mgmt/librenms/files/patch-poller.php | 8 |
9 files changed, 101 insertions, 62 deletions
diff --git a/net-mgmt/librenms/Makefile b/net-mgmt/librenms/Makefile index 8df5ef9f6282..b12e7ef93d4e 100644 --- a/net-mgmt/librenms/Makefile +++ b/net-mgmt/librenms/Makefile @@ -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> diff --git a/net-mgmt/librenms/distinfo b/net-mgmt/librenms/distinfo index 1a32f00e4573..5248eebb4f95 100644 --- a/net-mgmt/librenms/distinfo +++ b/net-mgmt/librenms/distinfo @@ -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 diff --git a/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php b/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php new file mode 100644 index 000000000000..ac1e6a1fad6d --- /dev/null +++ b/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php @@ -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+"); + } + diff --git a/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php b/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php new file mode 100644 index 000000000000..bd1081d060fd --- /dev/null +++ b/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php @@ -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"); + } + diff --git a/net-mgmt/librenms/files/patch-config.php.default b/net-mgmt/librenms/files/patch-config.php.default index c10b1cdda1e5..c1eaa777ad17 100644 --- a/net-mgmt/librenms/files/patch-config.php.default +++ b/net-mgmt/librenms/files/patch-config.php.default @@ -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'; diff --git a/net-mgmt/librenms/files/patch-html_install.php b/net-mgmt/librenms/files/patch-html_install.php new file mode 100644 index 000000000000..9973465e2a32 --- /dev/null +++ b/net-mgmt/librenms/files/patch-html_install.php @@ -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")) { diff --git a/net-mgmt/librenms/files/patch-includes_defaults.inc.php b/net-mgmt/librenms/files/patch-includes_defaults.inc.php index 27ade5e35b20..7921bfa94df5 100644 --- a/net-mgmt/librenms/files/patch-includes_defaults.inc.php +++ b/net-mgmt/librenms/files/patch-includes_defaults.inc.php @@ -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 diff --git a/net-mgmt/librenms/files/patch-poller-wrapper.py b/net-mgmt/librenms/files/patch-poller-wrapper.py index ea7640349fc1..d0ab95987a67 100644 --- a/net-mgmt/librenms/files/patch-poller-wrapper.py +++ b/net-mgmt/librenms/files/patch-poller-wrapper.py @@ -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) diff --git a/net-mgmt/librenms/files/patch-poller.php b/net-mgmt/librenms/files/patch-poller.php deleted file mode 100644 index 2633bb84463d..000000000000 --- a/net-mgmt/librenms/files/patch-poller.php +++ /dev/null @@ -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 - - /** |