MODULES+=	modsecurity

MODULE_SUMMARY_modsecurity=	3rd-party ModSecurity dynamic module

include $(CONTRIB)/src/modsecurity/version
include $(CONTRIB)/src/modsecurity-nginx/version

MODULE_VERSION_modsecurity=	$(MODSECURITY_NGINX_VERSION)
MODULE_RELEASE_modsecurity=	2
LIBMODSECURITY_SOVER=		$(MODSECURITY_VERSION)

MODULE_VERSION_PREFIX_modsecurity=$(MODULE_TARGET_PREFIX)

MODULE_SOURCES_modsecurity=	modsecurity-v$(MODSECURITY_VERSION).tar.gz \
				modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz

MODULE_PATCHES_modsecurity=	$(CONTRIB)/src/modsecurity/older-libmaxminddb-compatibility.patch

MODULE_CONFARGS_modsecurity=	--add-dynamic-module=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH) \
				--without-pcre2

.deps-module-modsecurity:
	cd $(CONTRIB) && make \
		.sum-modsecurity \
		.sum-modsecurity-nginx
	touch $@

define MODULE_DEFINITIONS_modsecurity
BuildRequires: gcc-c++
BuildRequires: pkgconfig(yajl)
BuildRequires: libcurl-devel
BuildRequires: libxml2-devel
BuildRequires: pcre-devel
endef
export MODULE_DEFINITIONS_modsecurity

define MODULE_PREBUILD_modsecurity
cd %{bdir}/modsecurity-v$(MODSECURITY_VERSION) \&\& \
./configure --prefix %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local --without-lmdb --without-lua \&\& \
make %{?_smp_mflags} install \&\& TERM=foo make check-TESTS
rm -f /tmp/audit_test.log /tmp/audit_test_parallel.log
rm -rf /tmp/test
endef
export MODULE_PREBUILD_modsecurity

define MODULE_ENV_modsecurity
MODSECURITY_INC="%{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/include" \\
MODSECURITY_LIB="%{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/lib" \\
NGX_IGNORE_RPATH=yes \\
endef
export MODULE_ENV_modsecurity

MODULE_CC_OPT_DEBUG_modsecurity=-DMODSECURITY_DDEBUG=1

define MODULE_PREINSTALL_modsecurity
%{__mkdir} -p $$RPM_BUILD_ROOT%{_bindir}
%{__install} -m755 -s %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/bin/modsec-rules-check \
   $$RPM_BUILD_ROOT%{_bindir}/
%{__mkdir} -p $$RPM_BUILD_ROOT%{_libdir}
%{__install} -m755 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/local/lib/libmodsecurity.so.$(LIBMODSECURITY_SOVER) \
   $$RPM_BUILD_ROOT%{_libdir}/
%{__ln_s} -f libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$RPM_BUILD_ROOT%{_libdir}/libmodsecurity.so.3
%{__ln_s} -f libmodsecurity.so.$(LIBMODSECURITY_SOVER) $$RPM_BUILD_ROOT%{_libdir}/libmodsecurity.so
%{__mkdir} -p $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec
%{__install} -m644 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/modsecurity.conf-recommended \
   $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec/modsecurity.conf
%{__install} -m644 %{bdir}/modsecurity-v$(MODSECURITY_VERSION)/unicode.mapping \
   $$RPM_BUILD_ROOT%{_sysconfdir}/nginx/modsec/
endef
export MODULE_PREINSTALL_modsecurity

define MODULE_FILES_modsecurity
%dir %{_sysconfdir}/nginx/modsec
%config(noreplace) %{_sysconfdir}/nginx/modsec/modsecurity.conf
%config(noreplace) %{_sysconfdir}/nginx/modsec/unicode.mapping
%{_bindir}/modsec-rules-check
%{_libdir}/libmodsecurity.so.$(LIBMODSECURITY_SOVER)
%{_libdir}/libmodsecurity.so.3
%{_libdir}/libmodsecurity.so
endef
export MODULE_FILES_modsecurity

MODULE_TESTS_modsecurity=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)/tests

define MODULE_POST_modsecurity
cat <<BANNER
----------------------------------------------------------------------

The $(MODULE_SUMMARY_modsecurity) for $(MODULE_SUMMARY_PREFIX) has been installed.
To enable this module, add the following to /etc/nginx/nginx.conf
and reload nginx:

    load_module modules/ngx_http_modsecurity_module.so;

Please refer to the module documentation for further details:
https://github.com/SpiderLabs/ModSecurity-nginx

----------------------------------------------------------------------
BANNER
endef
export MODULE_POST_modsecurity
