206 lines
6.2 KiB
Bash
206 lines
6.2 KiB
Bash
# Copyright 1999-2014 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI="5"
|
|
|
|
inherit depend.apache eutils user multilib
|
|
|
|
DESCRIPTION="Icinga Web - new Web Interface"
|
|
HOMEPAGE="http://www.icinga.org/"
|
|
SRC_URI="https://github.com/icinga/${PN}/releases/download/v${PV}/${P}.tar.gz"
|
|
LICENSE="GPL-2"
|
|
SLOT="0"
|
|
KEYWORDS="~x86 ~amd64"
|
|
IUSE="apache2 mysql pnp postgres"
|
|
DEPEND="dev-php/phing
|
|
dev-db/libdbi-drivers[mysql?,postgres?]
|
|
>=net-analyzer/icinga-1.10.0
|
|
dev-lang/php[apache2?,cli,json,mysql?,pdo,postgres?,sockets,xslt,xml]
|
|
pnp? ( net-analyzer/pnp4nagios )"
|
|
RDEPEND="${DEPEND}"
|
|
|
|
want_apache2
|
|
|
|
pkg_setup() {
|
|
if use apache2 ; then
|
|
depend.apache_pkg_setup
|
|
fi
|
|
enewgroup icinga
|
|
enewgroup nagios
|
|
enewuser icinga -1 -1 /var/lib/icinga "icinga,nagios"
|
|
}
|
|
|
|
src_prepare() {
|
|
#removed checks for some php stuff since we have these things called use flags
|
|
sed -i 's/ACICINGA_CHECK_PHP_MODULE/\#ACICINGA_CHECK_PHP_MODULE/g' configure.ac
|
|
sed -i 's/make\ /make\ \-j1\ /g' lib/Makefile.in
|
|
autoreconf
|
|
}
|
|
|
|
src_configure() {
|
|
local myconf
|
|
|
|
myconf="--prefix=/usr/share/icinga/icinga-web
|
|
--bindir=/usr/sbin
|
|
--sbindir=/usr/$(get_libdir)/icinga/cgi-bin
|
|
--datarootdir=/usr/share/icinga/htdocs
|
|
--localstatedir=/var/lib/icinga
|
|
--sysconfdir=/etc/icinga
|
|
--libexecdir=/usr/$(get_libdir)/icinga/plugins
|
|
--with-bin-user=icinga
|
|
--with-bin-group=nagios
|
|
--with-api-cmd-file=/var/lib/icinga/rw/icinga.cmd
|
|
--with-conf-dir=/etc/icinga-web
|
|
--with-log-dir=/var/log/icinga-web
|
|
--with-icinga-objects-dir=/etc/icinga/objects
|
|
--with-icinga-bin=/usr/sbin/icinga
|
|
--with-icinga-cfg=/etc/icinga/icinga.cfg"
|
|
|
|
if use apache2 ; then
|
|
myconf+=" --with-web-user=apache
|
|
--with-web-group=apache
|
|
--with-web-apache-path=${APACHE_MODULES_CONFDIR}"
|
|
else
|
|
myconf+=" --with-web-user=root
|
|
--with-web-group=root"
|
|
fi
|
|
|
|
if use postgres ; then
|
|
myconf+=" --with-db-type=pgsql
|
|
--with-db-port=5432
|
|
--with-api-subtype=pgsql
|
|
--with-api-port=5432"
|
|
fi
|
|
|
|
econf ${myconf}
|
|
}
|
|
|
|
src_install() {
|
|
dodoc README
|
|
rm -f README
|
|
|
|
emake -j1 DESTDIR="${D}" install
|
|
|
|
emake DESTDIR="${D}" install-javascript
|
|
|
|
if use apache2 ; then
|
|
dodir ${APACHE_MODULES_CONFDIR}
|
|
emake DESTDIR="${D}" install-apache-config
|
|
echo '<IfDefine ICINGA_WEB>' > "${D}/${APACHE_MODULES_CONFDIR}/99_icinga-web.conf"
|
|
cat "${WORKDIR}/${P}/etc/apache2/icinga-web.conf" >> "${D}/${APACHE_MODULES_CONFDIR}/99_icinga-web.conf"
|
|
rm "${D}/${APACHE_MODULES_CONFDIR}/icinga-web.conf" || die "rm failed"
|
|
echo '</IfDefine>' >> "${D}/${APACHE_MODULES_CONFDIR}/99_icinga-web.conf"
|
|
fi
|
|
|
|
insinto /usr/share/icinga/icinga-web/contrib
|
|
doins -r etc/schema/*
|
|
|
|
if use apache2 ; then
|
|
sed -i 's/%%USER%%/apache/g' etc/scheduler/icingaCron
|
|
else
|
|
sed -i 's/%%USER%%/root/g' etc/scheduler/icingaCron
|
|
fi
|
|
sed -i 's/%%PATH%%/\/usr\/share\/icinga\/icinga-web/g' etc/scheduler/icingaCron
|
|
|
|
dodir /usr/share/icinga/icinga-web/cron/
|
|
cat - >> "${D}"/usr/share/icinga/icinga-web/cron/crontab <<EOF
|
|
# Force the shell to bash
|
|
SHELL=/bin/bash
|
|
#mail to root
|
|
MAILTO=root
|
|
|
|
#runs every minute
|
|
* * * * * /usr/bin/php /usr/share/icinga/icinga-web/lib/icingaScheduler/icingaCron.php --useAgavi --exec >> /var/log/icinga-web/cron_error.log
|
|
EOF
|
|
|
|
cat - >> "${D}"/usr/share/icinga/icinga-web/cron/fcrontab <<EOF
|
|
# Mail reports to root
|
|
!mailto(root)
|
|
|
|
#runs every minute
|
|
@ 1 /usr/bin/php /usr/share/icinga/icinga-web/lib/icingaScheduler/icingaCron.php --useAgavi --exec >> /var/log/icinga-web/cron_error.log
|
|
EOF
|
|
|
|
if use apache2 ; then
|
|
diropts -o apache -g apache
|
|
else
|
|
diropts -o root -g root
|
|
fi
|
|
dodir /var/log/icinga-web
|
|
|
|
if use apache2 ; then
|
|
fowners apache:apache /usr/share/icinga/icinga-web/lib/icingaScheduler/res/storage.dat
|
|
else
|
|
fowners root:root /usr/share/icinga/icinga-web/lib/icingaScheduler/res/storage.dat
|
|
fi
|
|
|
|
if use pnp ; then
|
|
insinto /usr/share/icinga/icinga-web/app/modules/Cronks/data/xml/extensions/
|
|
doins contrib/PNP_Integration/templateExtensions/pnp-host-extension.xml
|
|
doins contrib/PNP_Integration/templateExtensions/pnp-service-extension.xml
|
|
fi
|
|
}
|
|
|
|
pkg_config() {
|
|
einfo "press enter to install the icinga-web crontab"
|
|
einfo "installation from /usr/share/icinga/icinga-web/cron/icingaCron"
|
|
einfo
|
|
read
|
|
|
|
if has_version sys-process/fcron; then
|
|
fcrontab - -u root < /usr/share/icinga/icinga-web/cron/fcrontab
|
|
else
|
|
crontab - -u root < /usr/share/icinga/icinga-web/cron/crontab
|
|
fi
|
|
}
|
|
|
|
pkg_postinst() {
|
|
einfo
|
|
einfo "If this is a new install, you must create a new database for it, e.g. icinga_web."
|
|
einfo "You can find the database scripts in /usr/share/icinga/icinga-web/contrib/."
|
|
einfo
|
|
einfo "Additionally, you need to setup a database user."
|
|
einfo "The user must have default data privileges like SELECT, UPDATE, INSERT, DELETE."
|
|
einfo
|
|
einfo "Example for a MySQL database:"
|
|
einfo " echo \"CREATE DATABASE icinga_web;\" | mysql"
|
|
einfo " echo \"GRANT SELECT,UPDATE,INSERT,DELETE ON icinga_web.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'xxxxxx';\" | mysql"
|
|
einfo " echo \"FLUSH PRIVILEGES;\" | mysql"
|
|
einfo
|
|
einfo " cat /usr/share/icinga/icinga-web/contrib/mysql.sql | mysql icinga_web"
|
|
einfo
|
|
|
|
ewarn
|
|
ewarn "If you're upgrading from a previous release, you must upgrade your database schema."
|
|
ewarn "You can find upgrade scripts in /usr/share/icinga/icinga-web/contrib/updates/."
|
|
ewarn
|
|
ewarn "IMPORTANT: If you are upgrading from an older version and there are other versions in between,"
|
|
ewarn " be advised that you need to apply those upgrade files with incremental steps!"
|
|
ewarn
|
|
ewarn "Example to upgrade a MySQL database:"
|
|
ewarn " cat /usr/share/icinga/icinga-web/contrib/updates/mysql_<oldversion>_to_<newversion>.sql | mysql icinga_web"
|
|
ewarn
|
|
ewarn "Don't forget to clear the config cache."
|
|
ewarn " /usr/share/icinga/icinga-web/bin/clearcache.sh"
|
|
ewarn
|
|
|
|
einfo
|
|
einfo "Please note that the magic_quotes_gpc setting must be disabled (in both apache and cli php.ini)."
|
|
einfo
|
|
|
|
if use apache2 ; then
|
|
einfo
|
|
einfo "apache config was installed into"
|
|
einfo "/etc/apache2/modules.d/99_icinga-web.conf"
|
|
einfo
|
|
einfo "The apache config value for \'ServerTokens\' must be set to at"
|
|
einfo "least \'Min\'."
|
|
einfo
|
|
else
|
|
einfo
|
|
einfo "If you are not using apache you may need to change some"
|
|
einfo "permissions, so that your web server can access files and logs"
|
|
einfo
|
|
fi
|
|
}
|