From owner-svn-ports-all@freebsd.org Thu Jan 18 20:21:44 2018 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9E03CEC1131; Thu, 18 Jan 2018 20:21:44 +0000 (UTC) (envelope-from feld@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6652C7EB2C; Thu, 18 Jan 2018 20:21:44 +0000 (UTC) (envelope-from feld@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8A6AE236D4; Thu, 18 Jan 2018 20:21:43 +0000 (UTC) (envelope-from feld@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0IKLhbL079044; Thu, 18 Jan 2018 20:21:43 GMT (envelope-from feld@FreeBSD.org) Received: (from feld@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0IKLgtf079036; Thu, 18 Jan 2018 20:21:42 GMT (envelope-from feld@FreeBSD.org) Message-Id: <201801182021.w0IKLgtf079036@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: feld set sender to feld@FreeBSD.org using -f From: Mark Felder Date: Thu, 18 Jan 2018 20:21:42 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r459372 - in head/net-mgmt/librenms: . files X-SVN-Group: ports-head X-SVN-Commit-Author: feld X-SVN-Commit-Paths: in head/net-mgmt/librenms: . files X-SVN-Commit-Revision: 459372 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2018 20:21:44 -0000 Author: feld Date: Thu Jan 18 20:21:42 2018 New Revision: 459372 URL: https://svnweb.freebsd.org/changeset/ports/459372 Log: 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 Added: head/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php (contents, props changed) head/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php (contents, props changed) head/net-mgmt/librenms/files/patch-html_install.php (contents, props changed) Deleted: head/net-mgmt/librenms/files/patch-poller.php Modified: head/net-mgmt/librenms/Makefile head/net-mgmt/librenms/distinfo head/net-mgmt/librenms/files/patch-config.php.default head/net-mgmt/librenms/files/patch-includes_defaults.inc.php head/net-mgmt/librenms/files/patch-poller-wrapper.py Modified: head/net-mgmt/librenms/Makefile ============================================================================== --- head/net-mgmt/librenms/Makefile Thu Jan 18 20:09:16 2018 (r459371) +++ head/net-mgmt/librenms/Makefile Thu Jan 18 20:21:42 2018 (r459372) @@ -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-do 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 Modified: head/net-mgmt/librenms/distinfo ============================================================================== --- head/net-mgmt/librenms/distinfo Thu Jan 18 20:09:16 2018 (r459371) +++ head/net-mgmt/librenms/distinfo Thu Jan 18 20:21:42 2018 (r459372) @@ -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 Added: head/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net-mgmt/librenms/files/patch-LibreNMS_Util_FileLock.php Thu Jan 18 20:21:42 2018 (r459372) @@ -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+"); + } + Added: head/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net-mgmt/librenms/files/patch-LibreNMS_Validations_User.php Thu Jan 18 20:21:42 2018 (r459372) @@ -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"); + } + Modified: head/net-mgmt/librenms/files/patch-config.php.default ============================================================================== --- head/net-mgmt/librenms/files/patch-config.php.default Thu Jan 18 20:09:16 2018 (r459371) +++ head/net-mgmt/librenms/files/patch-config.php.default Thu Jan 18 20:21:42 2018 (r459372) @@ -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'; Added: head/net-mgmt/librenms/files/patch-html_install.php ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net-mgmt/librenms/files/patch-html_install.php Thu Jan 18 20:21:42 2018 (r459372) @@ -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")) { Modified: head/net-mgmt/librenms/files/patch-includes_defaults.inc.php ============================================================================== --- head/net-mgmt/librenms/files/patch-includes_defaults.inc.php Thu Jan 18 20:09:16 2018 (r459371) +++ head/net-mgmt/librenms/files/patch-includes_defaults.inc.php Thu Jan 18 20:21:42 2018 (r459372) @@ -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 Modified: head/net-mgmt/librenms/files/patch-poller-wrapper.py ============================================================================== --- head/net-mgmt/librenms/files/patch-poller-wrapper.py Thu Jan 18 20:09:16 2018 (r459371) +++ head/net-mgmt/librenms/files/patch-poller-wrapper.py Thu Jan 18 20:21:42 2018 (r459372) @@ -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)