# Contributor: Taner Tas <taner76@gmail.com>
# Maintainer:
pkgname=openfire
pkgver=4.8.1
pkgrel=1
pkgdesc="Openfire is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol"
url="https://www.igniterealtime.org/projects/openfire/"
# x86, armhf, armv7: blocked by openjdk>=11
# riscv64: blocked by maven
arch="noarch !x86 !armhf !armv7 !riscv64"
license="Apache-2.0"
depends="java-jre-headless"
makedepends="maven"
subpackages="$pkgname-plugins $pkgname-openrc $pkgname-doc"
source="
	$pkgname-$pkgver.tar.gz::https://github.com/igniterealtime/Openfire/archive/refs/tags/v$pkgver.tar.gz
	$pkgname.initd
	$pkgname.confd
	$pkgname.logrotate
	"
pkgusers="openfire"
pkggroups="openfire"
install="
	$pkgname.pre-install
	openfire.post-install
	openfire.post-upgrade
	"
options="net !check" # No test suite
builddir="$srcdir/Openfire-$pkgver"

# secfixes:
#   4.7.5-r0:
#     - CVE-2023-32315

build() {
	rm -rf distribution/src/nativeAuth
	mvn package -Dmaven.test.skip=true
}

package() {
	mkdir -p \
		"$pkgdir"/usr/share/openfire/resources \
		"$pkgdir"/usr/share/doc \
		"$pkgdir"/usr/share/java
	install -dm0755 "$pkgdir"/etc/openfire

	cp -r distribution/target/distribution-base/conf "$pkgdir"/etc/openfire

	cp -r distribution/target/distribution-base/resources/security "$pkgdir"/etc/openfire/
	ln -s /etc/openfire/securiy "$pkgdir"/usr/share/openfire/resources/security

	cp -r distribution/target/distribution-base/plugins "$pkgdir"/usr/share/openfire/
	cp -r distribution/target/distribution-base/resources/database "$pkgdir"/usr/share/openfire/resources/
	cp -r distribution/target/distribution-base/resources/spank "$pkgdir"/usr/share/openfire/resources/
	cp -r distribution/target/distribution-base/lib "$pkgdir"/usr/share/java/openfire
	cp -r distribution/target/distribution-base/documentation "$pkgdir"/usr/share/doc/openfire

	find "$pkgdir" -type f -exec chmod 0644 {} \;
	find "$pkgdir" -type d -exec chmod 0755 {} \;
	find "$pkgdir" -type d -exec chmod u-s,g-s {} \;

	chmod 0700 "$pkgdir"/usr/share/openfire \
		"$pkgdir"/etc/openfire/security

	cd "$pkgdir"/etc/openfire/security
	for i in client.truststore keystore truststore
	do
		mv "$i" "$i".default
		chmod 0600 "$i".default
	done

	# Link everything to where OpenFire expects it
	mkdir -p "$pkgdir"/var/lib/openfire/plugins
	ln -s /etc/openfire "$pkgdir"/var/lib/openfire/conf
	ln -s /var/log/openfire "$pkgdir"/var/lib/openfire/logs
	ln -s /usr/share/openfire/plugins/admin "$pkgdir"/var/lib/openfire/plugins/admin
	ln -s /usr/share/openfire/resources "$pkgdir"/var/lib/openfire/resources

	chown -R $pkgusers:$pkggroups "$pkgdir"/var/lib/openfire

	install -Dm0755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -Dm0644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
	install -Dm0644 "$srcdir"/$pkgname.logrotate "$pkgdir"/etc/logrotate.d/$pkgname
}

plugins() {
	cd "$builddir"
	install -dm755 "$subpkgdir"/usr/share/openfire/plugins
	cp distribution/target/distribution-base/plugins/*.jar "$subpkgdir"/usr/share/openfire/plugins/
	chown -R $pkgusers:$pkggroups "$subpkgdir"/usr/share/openfire
}

sha512sums="
9120ba87264071fd986eb0fe006d0f314317d3e2090160b6e1565df368355e2d9b3b3339a887d3d902dc2ec9b7758147aa79651626efb1e917de33f6c433b485  openfire-4.8.1.tar.gz
95a486898b84c4b7b0e3a60ceb7ccbb5d383451228b9c5090dc58513afc9513095e6c124e2ef170912376a7179d058b106d3bbd69db7b7204ff5f1be13823bdc  openfire.initd
e952b1dbf10df6c8303f6e71ae08853a1901cbf92f059c3dc927e0085365e6c4752d2c5ddaa9ce1da944a164ee0f29b1057e10a61840814bff3722020253b5bf  openfire.confd
e17684600700c85d366549b7ac9fec64b9abcd1fd53e131e2d5b9d53514865ad0eacb25618dfc6c264af25fb880e761cdd7349bdcbc22c1f65a6fa7444dcd2a7  openfire.logrotate
"
