# Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header$ EAPI="4" PYTHON_DEPEND="2" MY_P="${P/_p/p}" MY_PV="${MY_P/check_mk-/}" S="${WORKDIR}/${MY_P}" inherit eutils python toolchain-funcs DESCRIPTION="General purpose Nagios/Icinga plugin for retrieving data" HOMEPAGE="http://mathias-kettner.de/check_mk.html" SRC_URI="http://mathias-kettner.de/download/${MY_P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="agent-only apache_status dmi_sysinfo livestatus logwatch mysql nfsexports oracle postgres smart wato xinetd zypper" REQUIRED_USE="livestatus? ( !agent-only ) wato? ( !agent-only )" RDEPEND="${DEPEND} wato? ( app-admin/sudo ) xinetd? ( sys-apps/xinetd ) !agent-only? ( || ( net-analyzer/nagios-core net-analyzer/icinga ) ) !agent-only? ( www-servers/apache www-apache/mod_python )" pkg_setup() { python_set_active_version 2 python_pkg_setup } src_prepare() { # modify setup.sh for gentoo epatch "${FILESDIR}"/${PN}-1.2.4p3-setup.sh.patch } src_configure() { if has_version net-analyzer/nagios-core; then export nagiosuser=nagios export nagios_binary=/usr/sbin/nagios export nagios_config_file=/etc/nagios/nagios.cfg export nagconfdir=/etc/nagios/check_mk.d export nagios_startscript=/etc/init.d/nagios export nagpipe=/var/nagios/rw/nagios.cmd export check_result_path=/var/nagios/spool/checkresults export nagios_status_file=/var/nagios/status.dat export htpasswd_file=/etc/nagios/htpasswd.users export nagios_auth_name="Nagios Access" export rrd_path=/var/nagios/perfdata else export nagiosuser=icinga export nagios_binary=/usr/sbin/icinga export nagios_config_file=/etc/icinga/icinga.cfg export nagconfdir=/etc/icinga/check_mk.d export nagios_startscript=/etc/init.d/icinga export nagpipe=/var/lib/icinga/rw/icinga.cmd export check_result_path=/var/lib/icinga/spool/checkresults export nagios_status_file=/var/lib/icinga/status.dat export htpasswd_file=/etc/icinga/htpasswd.users export nagios_auth_name="Icinga Access" export rrd_path=/var/lib/icinga/perfdata fi export check_icmp_path=/usr/lib/nagios/plugins/check_icmp export wwwuser=apache export wwwgroup=apache export apache_config_dir=/etc/apache2/modules.d/ if use livestatus; then export enable_livestatus=yes else export enable_livestatus=no fi export STRIPPROG=/bin/true } src_compile() { DESTDIR=${S} ./setup.sh --yes # compile waitmax cd ${S}/usr/share/check_mk/agents if [[ -f waitmax ]]; then rm waitmax fi sed -i -e 's#gcc -s -o waitmax waitmax\.c#gcc -o waitmax waitmax.c#' "${S}"/usr/share/check_mk/agents/Makefile emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" } src_install() { local mydaemon= if has_version net-analyzer/nagios-core; then mydaemon=nagios else mydaemon=icinga fi if ! use agent-only; then # Apache configuration insinto /etc/apache2/modules.d doins etc/apache2/modules.d/zzz_check_mk.conf if use wato; then # sudoers configuration cat - > "${T}"/check_mk << EOF # Needed for WATO - the Check_MK Web Administration Tool Defaults:apache !requiretty apache ALL = (root) NOPASSWD: /usr/bin/check_mk --automation * EOF insinto /etc/sudoers.d doins "${T}"/check_mk fi # check_mk configuration keepdir /etc/check_mk insinto /etc/check_mk doins etc/check_mk/main.mk doins etc/check_mk/main.mk-${MY_PV} doins etc/check_mk/multisite.mk doins etc/check_mk/multisite.mk-${MY_PV} keepdir /etc/check_mk/conf.d insinto /etc/check_mk/conf.d doins etc/check_mk/conf.d/README keepdir /etc/check_mk/conf.d/wato touch "${D}"/etc/check_mk/conf.d/distributed_wato.mk keepdir /etc/check_mk/multisite.d keepdir /etc/check_mk/multisite.d/wato touch "${D}"/etc/check_mk/multisite.d/sites.mk insinto /etc/${mydaemon} doins etc/${mydaemon}/auth.serials # Nagios / Icinga check_mk templates insinto /etc/${mydaemon}/check_mk.d doins etc/icinga/check_mk.d/check_mk_templates.cfg dobin usr/bin/check_mk dobin usr/bin/mkp insinto /usr/bin doins usr/bin/cmk # remove compiled agent_modbus if [[ -f ${S}/usr/share/doc/check_mk/treasures/modbus/agent_modbus ]]; then rm ${S}/usr/share/doc/check_mk/treasures/modbus/agent_modbus fi keepdir /usr/share/check_mk #cp -R "${S}"/usr/share/check_mk/* "${D}"/usr/share/check_mk/ || die "copying files to ${D}/usr/share/check_mk/ failed!" insinto /usr/share/check_mk doins -r usr/share/check_mk/* keepdir /var/lib/check_mk/autochecks keepdir /var/lib/check_mk/cache keepdir /var/lib/check_mk/counters keepdir /var/lib/check_mk/logwatch keepdir /var/lib/check_mk/notify keepdir /var/lib/check_mk/packages insinto /var/lib/check_mk/packages doins var/lib/check_mk/packages/check_mk keepdir /var/lib/check_mk/precompiled keepdir /var/lib/check_mk/snmpwalks keepdir /var/lib/check_mk/tmp keepdir /var/lib/check_mk/wato keepdir /var/lib/check_mk/web # Update check_mk defaults sed -i -e "s#^\(check_mk_automation\s*= 'sudo -u\) portage \(.*\)\$#\1 ${mydaemon} \2#" "${D}"/usr/share/check_mk/modules/defaults cp "${D}"/usr/share/check_mk/modules/defaults "${D}"/usr/share/check_mk/web/htdocs/defaults.py # Change permissions fowners -R ${mydaemon}:apache /etc/${mydaemon}/auth.serials fperms -R 0660 /etc/${mydaemon}/auth.serials fowners -R ${mydaemon}:${mydaemon} /etc/${mydaemon}/check_mk.d fperms -R 0775 /etc/${mydaemon}/check_mk.d fowners -R root:apache /etc/check_mk/conf.d/wato fperms -R 0775 /etc/check_mk/conf.d/wato fowners root:apache /etc/check_mk/conf.d/distributed_wato.mk fperms 0664 /etc/check_mk/conf.d/distributed_wato.mk fowners -R root:apache /etc/check_mk/multisite.d/wato fperms -R 0775 /etc/check_mk/multisite.d/wato fowners root:apache /etc/check_mk/multisite.d/sites.mk fperms 0664 /etc/check_mk/multisite.d/sites.mk fowners root:${mydaemon} /var/lib/check_mk/cache fperms 0775 /var/lib/check_mk/counters fowners -R root:${mydaemon} /var/lib/check_mk/counters fperms 0775 /var/lib/check_mk/notify fowners -R root:${mydaemon} /var/lib/check_mk/notify fperms 0775 /var/lib/check_mk/logwatch fowners -R root:${mydaemon} /var/lib/check_mk/logwatch fperms 0775 /var/lib/check_mk/cache fowners -R root:${mydaemon} /var/lib/check_mk/cache fperms -R 0775 /var/lib/check_mk/tmp fowners -R root:apache /var/lib/check_mk/tmp fperms -R 0775 /var/lib/check_mk/web fowners -R root:apache /var/lib/check_mk/web fperms -R 0775 /var/lib/check_mk/wato fowners -R root:apache /var/lib/check_mk/wato fi # Install agent related files newbin usr/share/check_mk/agents/check_mk_agent.linux check_mk_agent dobin usr/share/check_mk/agents/waitmax if use xinetd; then insinto /etc/xinetd.d newins usr/share/check_mk/agents/xinetd.conf check_mk fi keepdir /usr/lib/check_mk_agent/local keepdir /usr/lib/check_mk_agent/plugins # Install Livestatus if use livestatus; then cat - > "${T}"/livestatus.cfg << EOF define module{ module_name mk-livestatus module_type neb path /usr/lib/check_mk/livestatus.o args /var/lib/${mydaemon}/rw/live } EOF insinto /etc/${mydaemon}/modules doins "${T}"/livestatus.cfg fowners ${mydaemon}:${mydaemon} /etc/${mydaemon}/modules/livestatus.cfg insinto /usr/lib/check_mk doins usr/lib/check_mk/livestatus.o dobin usr/bin/unixcat keepdir /usr/share/check_mk/livestatus fi # Documentation if ! use agent-only; then dodoc -r usr/share/doc/check_mk/* docompress -x /usr/share/doc/${PF}/checks/ else dodoc usr/share/doc/check_mk/AUTHORS usr/share/doc/check_mk/COPYING usr/share/doc/check_mk/ChangeLog fi # Install the check_mk_agent logwatch plugin if use logwatch; then insinto /etc/check_mk doins usr/share/check_mk/agents/logwatch.cfg exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/mk_logwatch fi # Install the check_mk_agent smart plugin if use smart; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/smart fi # Install the check_mk_agent mysql plugin if use mysql; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/mk_mysql fi # Install the check_mk_agent postgres plugin if use postgres; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/mk_postgres fi # Install the check_mk_agent apache_status plugin if use apache_status; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/apache_status fi # Install the check_mk_agent zypper plugin if use zypper; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/mk_zypper fi # Install the check_mk_agent oracle plugin if use oracle; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/mk_oracle fi # Install the check_mk_agent nfsexports plugin if use nfsexports; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/nfsexports fi # Install the check_mk_agent dmi_sysinfo plugin if use dmi_sysinfo; then exeinto /usr/lib/check_mk_agent/plugins doexe usr/share/check_mk/agents/plugins/dmi_sysinfo fi } pkg_postinst() { local mydaemon= if has_version net-analyzer/nagios-core; then mydaemon=nagios else mydaemon=icinga fi if ! use agent-only; then elog "IMPORTANT: Please add the following line to your" elog "/etc/${mydaemon}/${mydaemon}.cfg, so that" elog "${mydaemon} can load your check_mk configuration." elog elog " cfg_dir=/etc/${mydaemon}/check_mk.d" elog fi if use wato; then elog "INFO: Your webserver needs write access to" elog "/etc/${mydaemon}/htpasswd.users!" elog "otherwise wato will not function correctly!" elog elog "chown ${mydaemon}: /etc/${mydaemon}/htpasswd.users" elog "chmod 660 /etc/${mydaemon}/htpasswd.users" elog fi }