1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 chardet,
6 colorama,
7 distutils,
8 fetchFromGitHub,
9 netaddr,
10 pycurl,
11 pyparsing,
12 pytestCheckHook,
13 pythonOlder,
14 setuptools,
15 six,
16 fetchpatch2,
17}:
18
19buildPythonPackage rec {
20 pname = "wfuzz";
21 version = "3.1.0";
22 pyproject = true;
23
24 disabled = pythonOlder "3.7";
25
26 src = fetchFromGitHub {
27 owner = "xmendez";
28 repo = "wfuzz";
29 rev = "refs/tags/v${version}";
30 hash = "sha256-RM6QM/iR00ymg0FBUtaWAtxPHIX4u9U/t5N/UT/T6sc=";
31 };
32
33 patches = [
34 # replace use of imp module for Python 3.12
35 # https://github.com/xmendez/wfuzz/pull/365
36 (fetchpatch2 {
37 url = "https://github.com/xmendez/wfuzz/commit/f4c028b9ada4c36dabf3bc752f69f6ddc110920f.patch?full_index=1";
38 hash = "sha256-t7pUMcdFmwAsGUNBRdZr+Jje/yR0yzeGIgeYNEq4hFE=";
39 })
40 ];
41
42 postPatch = ''
43 substituteInPlace setup.py \
44 --replace-fail "pyparsing>=2.4*" "pyparsing>=2.4"
45 '';
46
47 build-system = [ setuptools ];
48
49 dependencies = [
50 chardet
51 distutils # src/wfuzz/plugin_api/base.py
52 pycurl
53 six
54 setuptools
55 pyparsing
56 ] ++ lib.optionals stdenv.hostPlatform.isWindows [ colorama ];
57
58 nativeCheckInputs = [
59 netaddr
60 pytestCheckHook
61 ];
62
63 preCheck = ''
64 export HOME=$(mktemp -d)
65 '';
66
67 disabledTestPaths = [
68 # The tests are requiring a local web server
69 "tests/test_acceptance.py"
70 "tests/acceptance/test_saved_filter.py"
71 # depends on imp module removed from Python 3.12
72 "tests/test_moduleman.py"
73 ];
74
75 pythonImportsCheck = [ "wfuzz" ];
76
77 postInstall = ''
78 mkdir -p $out/share/wordlists/wfuzz
79 cp -R -T "wordlist" "$out/share/wordlists/wfuzz"
80 '';
81
82 meta = with lib; {
83 changelog = "https://github.com/xmendez/wfuzz/releases/tag/v${version}";
84 description = "Web content fuzzer to facilitate web applications assessments";
85 longDescription = ''
86 Wfuzz provides a framework to automate web applications security assessments
87 and could help you to secure your web applications by finding and exploiting
88 web application vulnerabilities.
89 '';
90 homepage = "https://wfuzz.readthedocs.io";
91 license = with licenses; [ gpl2Only ];
92 maintainers = with maintainers; [ pamplemousse ];
93 };
94}