1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 chardet,
6 colorama,
7 fetchFromGitHub,
8 netaddr,
9 pycurl,
10 pyparsing,
11 pytest,
12 pytestCheckHook,
13 pythonOlder,
14 setuptools,
15 six,
16}:
17
18buildPythonPackage rec {
19 pname = "wfuzz";
20 version = "3.1.0";
21 format = "setuptools";
22
23 disabled = pythonOlder "3.7";
24
25 src = fetchFromGitHub {
26 owner = "xmendez";
27 repo = pname;
28 rev = "v${version}";
29 hash = "sha256-RM6QM/iR00ymg0FBUtaWAtxPHIX4u9U/t5N/UT/T6sc=";
30 };
31
32 postPatch = ''
33 substituteInPlace setup.py \
34 --replace "pyparsing>=2.4*" "pyparsing>=2.4"
35 '';
36
37 propagatedBuildInputs = [
38 chardet
39 pycurl
40 six
41 setuptools
42 pyparsing
43 ] ++ lib.optionals stdenv.hostPlatform.isWindows [ colorama ];
44
45 nativeCheckInputs = [
46 netaddr
47 pytest
48 pytestCheckHook
49 ];
50
51 preCheck = ''
52 export HOME=$(mktemp -d)
53 '';
54
55 disabledTestPaths = [
56 # The tests are requiring a local web server
57 "tests/test_acceptance.py"
58 "tests/acceptance/test_saved_filter.py"
59 ];
60
61 pythonImportsCheck = [ "wfuzz" ];
62
63 postInstall = ''
64 mkdir -p $out/share/wordlists/wfuzz
65 cp -R -T "wordlist" "$out/share/wordlists/wfuzz"
66 '';
67
68 meta = with lib; {
69 description = "Web content fuzzer to facilitate web applications assessments";
70 longDescription = ''
71 Wfuzz provides a framework to automate web applications security assessments
72 and could help you to secure your web applications by finding and exploiting
73 web application vulnerabilities.
74 '';
75 homepage = "https://wfuzz.readthedocs.io";
76 license = with licenses; [ gpl2Only ];
77 maintainers = with maintainers; [ pamplemousse ];
78 };
79}