# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Jeff Bilyk <jbilyk at gmail>
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=zabbix
pkgver=3.2.3
pkgrel=0
pkgdesc="Enterprise-class open source distributed monitoring"
url="http://www.zabbix.com"
arch="all"
license="GPL"
depends="fping"
_php=php5
_php_depends="$_php ${_php}-gd ${_php}-curl ${_php}-bcmath ${_php}-sockets
	${_php}-iconv ${_php}-xmlreader ${_php}-ctype ${_php}-gettext"
makedepends="postgresql-dev curl-dev net-snmp-dev
	sqlite-dev mariadb-dev curl-dev openipmi-dev unixodbc-dev
	libxml2-dev autoconf automake libssh2 gnutls-dev
	$_php_depends"
install="$pkgname.pre-install"
pkgusers="zabbix"
pkggroups="zabbix"
subpackages="$pkgname-doc $pkgname-agent $pkgname-pgsql $pkgname-mysql
	$pkgname-webif::noarch $pkgname-sqlite $pkgname-utils $pkgname-setup::noarch"
source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
	zabbix-getloadavg.patch
	automake.patch
	musl-fix-includes.patch
	zabbix-server.initd
	zabbix-server.confd
	zabbix-agentd.initd
	zabbix-proxy.initd
	zabbix_server.conf.patch
	"

_builddir="$srcdir"/$pkgname-$pkgver

# security fixes:
#   3.0.4-r0:
#   - CVE N/A ZBX-11023

prepare() {
	cd "$_builddir"
	# update_config_sub || return 1
	for i in $source; do
		case $i in
		*eglibc*.patch)
			if [ "$CLIBC" == "eglibc" ]; then
				msg "Applying $i"
				patch -p1 -i "$srcdir"/$i || return 1
			fi
			;;
		*.patch)
			msg "Applying $i"
			patch -p1 -i "$srcdir"/$i || return 1
			;;
		esac
	done
	aclocal -I m4 && autoconf && autoheader \
		&& automake --add-missing || return 1
	# update_config_sub
	# Fix config file locations
	for file in server agentd proxy; do
		sed -i "$_builddir"/conf/zabbix_${file}.conf \
			-e 's|SNMPTrapperFile=/tmp|SNMPTrapperFile=/var/log/zabbix|' \
			-e 's|PidFile=/tmp|PidFile=/var/run/zabbix|' \
			-e 's|LogFile=/tmp|LogFile=/var/log/zabbix|' || return 1
	done
}

build() {
	# set default configure flags
	_configure="--prefix=/usr \
			--sysconfdir=/etc/zabbix \
			--mandir=/usr/share/man \
			--infodir=/usr/share/info \
			--enable-server \
			--enable-agent \
			--enable-proxy \
			--enable-ipv6 \
			--with-net-snmp \
			--with-libcurl \
			--with-libxml2 \
			--with-openipmi \
			--with-unixodbc \
			--with-ssh2 \
			--with-gnutls
			"
        # we run build for each db type
        # make sure prepare is same for each db
	for db in postgresql mysql sqlite3; do
		cd "$srcdir"
		msg "Building for $db"
		cp -r "$pkgname-$pkgver" "$pkgname-$pkgver-$db"
		cd "$_builddir-$db"
		./configure \
			--build=$CBUILD \
			--host=$CHOST \
			--with-$db \
			$_configure \
			|| return 1
		make || return 1
	done
}

package() {
        # doing manual install
	for i in agentd proxy server; do
		install -D -m755 "$_builddir"/man/zabbix_$i.man \
			"$pkgdir"/usr/share/man/man8/zabbix_$i.8
	done
	for i in get sender; do
		install -D -m755 "$_builddir"/man/zabbix_$i.man \
			"$pkgdir"/usr/share/man/man1/zabbix_$i.1
	done
	install -d -m0750 -o zabbix -g zabbix \
                "$pkgdir"/var/run/zabbix "$pkgdir"/var/log/zabbix
        install -D -m0644 "$_builddir"/conf/zabbix_server.conf \
		"$pkgdir"/etc/zabbix/zabbix_server.conf
	install -D -m0644 "$_builddir"/conf/zabbix_trapper.conf \
		"$pkgdir"/etc/zabbix/zabbix_trapper.conf
        for i in server proxy; do
                install -D -m0755 "$srcdir"/zabbix-$i.initd \
                        "$pkgdir"/etc/init.d/zabbix-$i || return 1
        done
	install -D -m0644 "$srcdir"/zabbix-server.confd \
		"$pkgdir"/etc/conf.d/zabbix-server || return 1
}

setup() {
	pkgdesc="Zabbix images and sql files"
	depends=
	mkdir -p "$subpkgdir"/usr/share/zabbix/ || return 1
	mv "$_builddir"/database "$subpkgdir"/usr/share/zabbix/
}

_do_db() {
        pkgdesc="Zabbix server with $1 database support"
        depends="$pkgname $2"
	local i=
	mkdir -p "$subpkgdir"/usr/sbin
	mv "$_builddir-$1"/src/zabbix_server/zabbix_server \
		"$subpkgdir"/usr/sbin/ || return 1
	mv "$_builddir-$1"/src/zabbix_proxy/zabbix_proxy \
		"$subpkgdir"/usr/sbin/ || return 1
        install -D -m0644 "$_builddir"/conf/zabbix_proxy.conf \
		"$pkgdir"/etc/zabbix/zabbix_proxy.conf || return 1
	cd "$_builddir"
	for i in upgrades/dbpatches/*/$1; do
		[ -e $i ] || continue
		mkdir -p "$subpkgdir"/usr/share/zabbix/${i%/*}
		mv "$i" "$subpkgdir"/usr/share/zabbix/$i
	done
        return 0
}

pgsql()	{ _do_db postgresql "!$pkgname-mysql !$pkgname-sqlite";}
mysql()	{ _do_db mysql "!$pkgname-pgsql !$pkgname-sqlite";}
sqlite(){ _do_db sqlite3 "!$pkgname-pgsql !$pkgname-mysql";}

utils() {
	pkgdesc="Zabbix client utilities"
	depends=
	mkdir -p "$subpkgdir"/usr/bin
	mv "$_builddir-postgresql"/src/zabbix_get/zabbix_get \
		"$subpkgdir"/usr/bin
        mv "$_builddir-postgresql"/src/zabbix_sender/zabbix_sender \
	                "$subpkgdir"/usr/bin
}

webif() {
	pkgdesc="Zabbix web-interface"
	depends="$_php_depends"
	_wwwdir="$subpkgdir"/usr/share/webapps/zabbix
	mkdir -p $_wwwdir
	mv "$_builddir"/frontends/php/* "$_wwwdir"
}

agent() {
	pkgdesc="Zabbix Network Monitoring Agent"
	depends=
	install="$subpkgname.pre-install"
        install -d -m0750 -o zabbix -g zabbix \
                "$subpkgdir"/var/run/zabbix "$subpkgdir"/var/log/zabbix
	install -D -m0644 "$_builddir"/conf/zabbix_agentd.conf \
		"$subpkgdir"/etc/zabbix/zabbix_agentd.conf
	install -D -m0755 "$srcdir"/zabbix-agentd.initd \
		"$subpkgdir"/etc/init.d/zabbix-agentd
	mkdir -p "$subpkgdir"/usr/sbin
	mv "$_builddir-postgresql"/src/zabbix_agent/zabbix_agent \
		"$subpkgdir"/usr/sbin/
        mv "$_builddir-postgresql"/src/zabbix_agent/zabbix_agentd \
	                "$subpkgdir"/usr/sbin/

}

md5sums="b058115f9218b085310cd07bbbeb9cd0  zabbix-3.2.3.tar.gz
3a71e310bd2b38498a7c6830169f7480  zabbix-getloadavg.patch
bf62c539870874e11de39c60cb974786  automake.patch
40c81bdec85815f4ba637eb6528cc5e8  musl-fix-includes.patch
f44105322022734dc42032db0396fe9e  zabbix-server.initd
bd91d0243cf8f72b86b9bf0b91963663  zabbix-server.confd
d9711779f969958c8aa348991170578b  zabbix-agentd.initd
0ce2ab963a0bc5a0a6e17a708b7c7064  zabbix-proxy.initd
3d031903ea14e1de0804ff1230fd968e  zabbix_server.conf.patch"
sha256sums="e6dba74039d8d6efff86ec3da99909f4daeaeb66d48781bbb666e3094533da25  zabbix-3.2.3.tar.gz
d2c0651c5fa67a1857707552e79ecece7ca95c149042460c40456634bf7611dc  zabbix-getloadavg.patch
b347ca77660e69bea353c50e2fce0c7c4cc837f782c9f84f74ba92c1a62b4c1b  automake.patch
38b4e1a5d5c16c7d9b31347acf710d84b693f6e1df365d1072548e897e034884  musl-fix-includes.patch
d4c6dcf9b78f78a2ef2b4a4f2763fb90f81d0298bc90bd164db8604f161182ec  zabbix-server.initd
ddf75041fb0afc5b211dd79a934341cc9db4325447ad33a42cbf09bdfb5cad42  zabbix-server.confd
62223dce45fb915cc66eb24c839cf63e81c80159da9360e7669e7384082e3a08  zabbix-agentd.initd
ec3a8c564be20221ea7560fbec345191cd251d58bd15e9c41abec40c2cf5b4f2  zabbix-proxy.initd
f87b221d32b3088db78c013f11d035339d7058817092dfdcc39898b4b3ee8448  zabbix_server.conf.patch"
sha512sums="5a704282765fa66d1aa53ae546d3a49a35050d6830a25a3a9ad64d73f8aff48b31e8d13f37d147c8d6244bb0f2dab21bceb5d022f1c3ffa726c10edc6e7bd1f6  zabbix-3.2.3.tar.gz
b65c6ba7701d98ae7f6fe2124c1d2b8b8fea3c3cc7ee080bf99f5afff0aaa6a025c2a1f5136b4700b53d1b7609e6185642650d7edd013c554b2af37fddae771c  zabbix-getloadavg.patch
9bff8966cb8b3f1767bfb1b3f3529bca5c9957f2c8179a40ded3b4e43615ba9fb408aef43092fd119b7df80b042555d05c9780fac3760176b95524aa48252fee  automake.patch
9b87ec1ea4a9cbb501c16012d498cdae82a696f4cd495e1e8cb201d9e31c6e135da5bb264c6273f2de87297bd3e4bd16f66703610686f5d610e3316ee24aac91  musl-fix-includes.patch
3a25bf9f428f55545dd735aea2855e0e4927e006ca01a2f918ec161ffe9b2ec66e46598bf34208e24535e1d04e33087f42eb8226b17eb4118abd6507bbb10ff5  zabbix-server.initd
a91821c6086a1fc0197750cc68073419defcb7d775b11b14a993409a8f61c7a1a0a0af95de27eed9f3b8357f8362640cb1b26b91b56f4f1d714ca6f222d02b80  zabbix-server.confd
7cc2672b717f1b47b12342fe225e9dc3838c61a0bf81d359d0a71efb0adc9b354fb8bc8b5bb64c9defa5700bcaf651b35778194a50b6b03b0a723dce76460092  zabbix-agentd.initd
e19490e724c6e4ecdadf7ee3898567b82f18ea2a894ef709bfc181c3076d50435b45429207dd4d537aacbec0242d83393240e48b434d9681ebb0d67a45643ed1  zabbix-proxy.initd
e0c9f937d39e15fa34e70e8ae9e6578b221b51c13dc0515e807675d153a85ab6370ed20ce2d06aa4457baaf3963edce525cd00e85fb105b36b58741798d13836  zabbix_server.conf.patch"
