# Copyright (c) 2018 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI="7"

inherit autotools eutils user cros-sanitizers

DESCRIPTION="The USBGuard software framework helps to protect your computer against rogue USB devices (a.k.a. BadUSB) by implementing basic whitelisting and blacklisting capabilities based on device attributes."
HOMEPAGE="https://usbguard.github.io/"
GIT_REV="ad904f4645c79a20a7542fed7f24a9c8c2146e5a"
CATCH_REV="35f510545d55a831372d3113747bf1314ff4f2ef"
PEGTL_REV="7d039707cf835cea63daa78a717e18fcc5bcf95b"
SRC_URI="https://github.com/USBGuard/usbguard/archive/${GIT_REV}.tar.gz -> ${P}.tar.gz
https://github.com/catchorg/Catch2/archive/${CATCH_REV}.tar.gz -> ${PN}-201807-catch.tar.gz
https://github.com/taocpp/PEGTL/archive/${PEGTL_REV}.tar.gz -> ${PN}-pegtl-20210115.tar.gz"

LICENSE="GPL-2"
SLOT="0/${PVR}"
KEYWORDS="*"
IUSE="cfm_enabled_device hammerd dbus"

COMMON_DEPEND="
	dev-libs/openssl:=
	dev-libs/protobuf:=
	sys-cluster/libqb"

DEPEND="${COMMON_DEPEND}"

RDEPEND="${COMMON_DEPEND}"

S="${WORKDIR}/usbguard-${GIT_REV}/"

PATCHES=(
	"${FILESDIR}/daemon_conf.patch"
)

src_prepare() {
	rm -rf "${S}/src/ThirdParty/Catch"
	mv "${WORKDIR}/Catch2-${CATCH_REV}" "${S}/src/ThirdParty/Catch"

	rm -rf "${S}/src/ThirdParty/PEGTL"
	mv "${WORKDIR}/PEGTL-${PEGTL_REV}" "${S}/src/ThirdParty/PEGTL"

	default
	eautoreconf
}

src_configure() {
	sanitizers-setup-env
	cros_enable_cxx_exceptions
	econf \
		$(use_with dbus) \
		--without-polkit \
		--without-ldap \
		--with-bundled-catch \
		--with-bundled-pegtl \
		--with-crypto-library=openssl \
		--disable-audit \
		--disable-libcapng \
		--disable-seccomp \
		--disable-umockdev
}

src_install() {
	emake DESTDIR="${D}" install
	# Cleanup unwanted files from the emake install command.
	if use dbus; then
		rm "${D}/etc/usbguard/rules.conf" || die
		rm "${D}/usr/share/dbus-1/system.d/org.usbguard1.conf" || die

		insinto /usr/share/dbus-1/interfaces
		newins "${S}/src/DBus/DBusInterface.xml" org.usbguard1.xml

		insinto /etc/dbus-1/system.d
		doins "${FILESDIR}/org.usbguard1.conf"
	fi

	insinto /etc/usbguard/rules.d
	use cfm_enabled_device && doins "${FILESDIR}/50-cfm-rules.conf"
	use hammerd && doins "${FILESDIR}/50-hammer-rules.conf"
	doins "${FILESDIR}/99-rules.conf"

	insinto /usr/share/policy
	newins "${FILESDIR}/usbguard-daemon-seccomp-${ARCH}.policy" usbguard-daemon-seccomp.policy

	insinto /etc/init
	doins "${FILESDIR}"/usbguard.conf
	doins "${FILESDIR}"/usbguard-wrapper.conf

	insinto /etc/usbguard
	insopts -o usbguard -g usbguard -m600
	doins usbguard-daemon.conf
}

pkg_setup() {
	enewuser usbguard
	enewgroup usbguard
}
