# Copyright 2022-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PHP_EXT_NAME="${PN}" PHP_EXT_INI="yes" PHP_EXT_ZENDEXT="no" PHP_EXT_ECONF_ARGS=( --enable-${PN} ) PHP_EXT_S="${S}/src" PHP_EXT_NEEDED_USE="session(+)" USE_PHP="php8-1" inherit php-ext-source-r3 KEYWORDS="~amd64" DESCRIPTION="A PHP module to drastically raise the cost of attacks against websites" HOMEPAGE="https://snuffleupagus.readthedocs.io/index.html" SRC_URI="https://github.com/jvoisin/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="LGPL-3 PHP-3.01" SLOT="0" src_prepare() { # fix file locations tests look for ln -s "${P}/config" "${WORKDIR}/config" || die # Fix path dependent tests sed -i -e 's~src/tests/~~' \ src/tests/session_encryption/crypt_session_read_uncrypt.phpt || die sed -i -e 's~%a/src~%a~' \ src/tests/disable_function/disabled_functions_runtime.phpt || die # Fix bad test reference sed -i -e 's~%src/~%s~' \ src/tests/deny_writable/deny_writable_execution_simulation.phpt || die php-ext-source-r3_src_prepare } src_install() { addtoinifile() { local inifile="${WORKDIR}/${1}" local inidir="${inifile%/*}" mkdir -p "${inidir}" || die "failed to create INI directory ${inidir}" local my_added="${2}=${3}" echo "${my_added}" >> "${inifile}" || die "failed to append to ${inifile}" einfo "Added '${my_added}' to /${1}" insinto "/${1%/*}" doins "${inifile}" } einstalldocs local slot x cfgdir php-ext-source-r3_src_install # Add the rules file which vary by install version for slot in $(php_get_slots); do php_init_slot_env "${slot}" for x in ${PHP_EXT_SAPIS} ; do cfgdir="/etc/php/${x}-${slot}" if [[ -f "${ED}${cfgdir}/ext/${PHP_INI_NAME}.ini" ]]; then addtoinifile "${cfgdir#/}/ext/${PHP_INI_NAME}.ini" \ "sp.configuration_file" "${cfgdir}/${PN}.rules" insinto "${cfgdir}" case ${PHP_CURRENTSLOT:0:1} in 8) newins "${S}/config/default_php8.rules" "${PN}.rules" ;; *) newins "${S}/config/default.rules" "${PN}.rules" ;; esac fi done done } pkg_postinst() { elog "This extension is configured with recommended rules enabled by default." elog "Feel free to customize as necessary. Please test outside of production first." elog "Failure to test may cause unexpected results to loosely coded sites." }