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

EAPI=8

inherit perl-module toolchain-funcs

DESCRIPTION="Port Scanning Attack Detection daemon"
HOMEPAGE="https://www.cipherdyne.org/psad/"
SRC_URI="https://www.cipherdyne.org/psad/download/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm64 ppc ~sparc x86"
IUSE="selinux"

RDEPEND="
	dev-perl/Bit-Vector
	dev-perl/Date-Calc
	dev-perl/NetAddr-IP
	dev-perl/Unix-Syslog
	net-firewall/iptables
	net-misc/whois
	virtual/logger
	virtual/mailx
	virtual/perl-Storable
	selinux? ( sec-policy/selinux-psad )
"
BDEPEND="virtual/perl-ExtUtils-MakeMaker"

PATCHES=( "${FILESDIR}"/${PN}-2.2.4-var-run.patch )

src_prepare() {
	default

	sed -i \
		-e 's|/usr/bin/gcc|$(CC)|g' \
		-e 's|-O|$(CFLAGS) $(LDFLAGS)|g' \
		Makefile || die
	# Fix up default paths
	sed -i \
		-e "s:/usr/bin/whois_psad:/usr/bin/whois:g" \
		psad.conf || die
}

src_configure() {
	default

	local d
	for d in IPTables-Parse IPTables-ChainMgr; do
		cd "${S}"/deps/${d} || die
		perl-module_src_configure
	done
}

src_compile() {
	tc-export CC
	default

	local d
	for d in IPTables-Parse IPTables-ChainMgr; do
		cd "${S}"/deps/${d} || die
		perl-module_src_compile
	done
}

src_install() {
	newbin misc/pscan psad-pscan

	dosbin kmsgsd psad psadwatchd
	newsbin fwcheck_psad.pl fwcheck_psad

	insinto /etc/psad
	doins \
		*.conf auto_dl icmp{,6}_types ip_options psad_* pf.os posf \
		protocols signatures

	newinitd init-scripts/psad-init.gentoo psad

	doman doc/*.8

	dodoc doc/BENCHMARK CREDITS Change* doc/FW_EXAMPLE_RULES README \
		doc/README.SYSLOG doc/SCAN_LOG

	insinto /etc/psad/snort_rules
	doins deps/snort_rules/*

	local d
	for d in IPTables-Parse IPTables-ChainMgr; do
		cd "${S}"/deps/${d} || die
		perl-module_src_install
	done
}