# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit systemd

MY_PV="${PV/_beta/-beta.}"
DESCRIPTION="UniFi Video Server"
HOMEPAGE="https://www.ubnt.com/download/unifi-video/"
SRC_URI="https://dl.ubnt.com/firmwares/ufv/v${MY_PV}/unifi-video.Ubuntu18.04_amd64.v${MY_PV}.deb"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
RESTRICT="mirror"

DEPEND="acct-group/unifi-video
	acct-user/unifi-video
	app-arch/zip"
RDEPEND="${DEPEND}
	dev-db/mongodb
	dev-java/commons-daemon
	sys-apps/lsb-release
	sys-apps/util-linux
	sys-libs/libcap
	virtual/jre:1.8"

S=${WORKDIR}
QA_PREBUILT="usr/lib*/${PN}/lib/*.so usr/lib*/${PN}/bin/*"

src_unpack() {
	default
	unpack "${WORKDIR}"/data.tar.gz
}

src_prepare() {
	eapply "${FILESDIR}"/commons-daemon-move.patch
	sed -i usr/sbin/${PN} \
		-e '/require_root$/d' \
		-e '/update_limits$/d' \
		-e '/ulimit/d' \
		-e '/coredump_filter/d' || die
	default
	#delete problematic class in bundled log4j
	zip -q -d \
		usr/lib/unifi-video/lib/log4j-core-2.1.jar \
		org/apache/logging/log4j/core/lookup/JndiLookup.class || die
}

src_install() {
	export CODEPATH=/usr/lib/${PN}
	export DATAPATH=/var/lib/${PN}
	LOGPATH=${DATAPATH}/logs
	VARLOGPATH=/var/log/${PN}

	insinto /usr/lib
	doins -r .${CODEPATH}
	into /usr
	dosbin usr/sbin/unifi-video

	keepdir ${LOGPATH}
	dodir ${DATAPATH}
	fowners -R ${PN}:${PN} ${DATAPATH}
	dosym ${LOGPATH} ${VARLOGPATH}
	dosym ${LOGPATH} ${CODEPATH}/logs

	dosym ${DATAPATH} ${CODEPATH}/data

	fperms 500 ${CODEPATH}/bin/ubnt.avtool
	fperms 500 ${CODEPATH}/bin/evostreamms
	fperms 500 /usr/sbin/${PN}
	fowners -R ${PN}:${PN} ${CODEPATH}
	fperms -R 0400 ${CODEPATH}/lib/
	fperms 500 ${CODEPATH}/lib/

	echo "CONFIG_PROTECT=\"${DATAPATH}/system.properties\"" > "${T}"/99${PN}
	doenvd "${T}"/99${PN}

	dosym ../../../bin/mongod ${CODEPATH}/bin/mongod

	newinitd "${FILESDIR}"/${PN}.initd ${PN}
	systemd_dounit "${FILESDIR}"/${PN}.service
}

pkg_postinst() {
	if [[ ! -f ${DATAPATH}/system.properties ]]; then
		cp ${CODEPATH}/etc/system.properties ${DATAPATH}/system.properties
		echo uuid=$(uuidgen) >> ${DATAPATH}/system.properties
	fi
}