2022-02-20 05:27:41 +00:00
|
|
|
{ lib, stdenv, fetchFromGitHub
|
|
|
|
, autoreconfHook, bison, flex, pkg-config
|
2022-06-26 10:26:21 +00:00
|
|
|
, curl, geoip, libmaxminddb, libxml2, lmdb, lua, pcre, pcre2, ssdeep, yajl
|
2022-03-05 16:20:37 +00:00
|
|
|
, nixosTests
|
2022-02-20 05:27:41 +00:00
|
|
|
}:
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
pname = "libmodsecurity";
|
2024-02-29 20:09:43 +00:00
|
|
|
version = "3.0.12";
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
2024-05-15 15:35:15 +00:00
|
|
|
owner = "owasp-modsecurity";
|
2020-04-24 23:36:52 +00:00
|
|
|
repo = "ModSecurity";
|
|
|
|
rev = "v${version}";
|
2024-02-29 20:09:43 +00:00
|
|
|
sha256 = "sha256-WIFAg9LvKAC8e3gpcIxtNHT53AIfPtUTyrv30woxP4M=";
|
2022-02-20 05:27:41 +00:00
|
|
|
fetchSubmodules = true;
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
|
2022-02-20 05:27:41 +00:00
|
|
|
nativeBuildInputs = [ autoreconfHook bison flex pkg-config ];
|
2022-06-26 10:26:21 +00:00
|
|
|
buildInputs = [ curl geoip libmaxminddb libxml2 lmdb lua pcre pcre2 ssdeep yajl ];
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2022-02-20 05:27:41 +00:00
|
|
|
outputs = [ "out" "dev" ];
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
configureFlags = [
|
2022-02-20 05:27:41 +00:00
|
|
|
"--enable-parser-generation"
|
2022-06-26 10:26:21 +00:00
|
|
|
"--disable-doxygen-doc"
|
2020-04-24 23:36:52 +00:00
|
|
|
"--with-curl=${curl.dev}"
|
|
|
|
"--with-libxml=${libxml2.dev}"
|
2022-02-20 05:27:41 +00:00
|
|
|
"--with-lmdb=${lmdb.out}"
|
|
|
|
"--with-maxmind=${libmaxminddb}"
|
2020-04-24 23:36:52 +00:00
|
|
|
"--with-pcre=${pcre.dev}"
|
2022-06-26 10:26:21 +00:00
|
|
|
"--with-pcre2=${pcre2.out}"
|
2022-02-20 05:27:41 +00:00
|
|
|
"--with-ssdeep=${ssdeep}"
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
|
|
|
|
2022-02-20 05:27:41 +00:00
|
|
|
postPatch = ''
|
|
|
|
substituteInPlace build/lmdb.m4 \
|
|
|
|
--replace "\''${path}/include/lmdb.h" "${lmdb.dev}/include/lmdb.h" \
|
|
|
|
--replace "lmdb_inc_path=\"\''${path}/include\"" "lmdb_inc_path=\"${lmdb.dev}/include\""
|
2022-06-26 10:26:21 +00:00
|
|
|
substituteInPlace build/pcre2.m4 \
|
|
|
|
--replace "/usr/local/pcre2" "${pcre2.out}/lib" \
|
|
|
|
--replace "\''${path}/include/pcre2.h" "${pcre2.dev}/include/pcre2.h" \
|
|
|
|
--replace "pcre2_inc_path=\"\''${path}/include\"" "pcre2_inc_path=\"${pcre2.dev}/include\""
|
2022-02-20 05:27:41 +00:00
|
|
|
substituteInPlace build/ssdeep.m4 \
|
|
|
|
--replace "/usr/local/libfuzzy" "${ssdeep}/lib" \
|
|
|
|
--replace "\''${path}/include/fuzzy.h" "${ssdeep}/include/fuzzy.h" \
|
|
|
|
--replace "ssdeep_inc_path=\"\''${path}/include\"" "ssdeep_inc_path=\"${ssdeep}/include\""
|
|
|
|
substituteInPlace modsecurity.conf-recommended \
|
|
|
|
--replace "SecUnicodeMapFile unicode.mapping 20127" "SecUnicodeMapFile $out/share/modsecurity/unicode.mapping 20127"
|
|
|
|
'';
|
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
mkdir -p $out/share/modsecurity
|
|
|
|
cp ${src}/{AUTHORS,CHANGES,LICENSE,README.md,modsecurity.conf-recommended,unicode.mapping} $out/share/modsecurity
|
|
|
|
'';
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2022-03-05 16:20:37 +00:00
|
|
|
passthru.tests = {
|
|
|
|
nginx-modsecurity = nixosTests.nginx-modsecurity;
|
|
|
|
};
|
|
|
|
|
2021-01-15 22:18:51 +00:00
|
|
|
meta = with lib; {
|
2024-05-15 15:35:15 +00:00
|
|
|
homepage = "https://github.com/owasp-modsecurity/ModSecurity";
|
2020-04-24 23:36:52 +00:00
|
|
|
description = ''
|
|
|
|
ModSecurity v3 library component.
|
|
|
|
'';
|
|
|
|
longDescription = ''
|
|
|
|
Libmodsecurity is one component of the ModSecurity v3 project. The
|
|
|
|
library codebase serves as an interface to ModSecurity Connectors taking
|
|
|
|
in web traffic and applying traditional ModSecurity processing. In
|
|
|
|
general, it provides the capability to load/interpret rules written in
|
|
|
|
the ModSecurity SecRules format and apply them to HTTP content provided
|
|
|
|
by your application via Connectors.
|
|
|
|
'';
|
|
|
|
license = licenses.asl20;
|
|
|
|
platforms = platforms.all;
|
|
|
|
maintainers = with maintainers; [ izorkin ];
|
2024-01-02 11:29:13 +00:00
|
|
|
mainProgram = "modsec-rules-check";
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
}
|