125 lines
2.9 KiB
Nix
125 lines
2.9 KiB
Nix
{
|
|
lib,
|
|
fetchFromGitHub,
|
|
buildPythonPackage,
|
|
python,
|
|
pytestCheckHook,
|
|
# deps
|
|
/*
|
|
ntlm-auth is in the requirements.txt, however nixpkgs tells me
|
|
> ntlm-auth has been removed, because it relies on the md4 implementation provided by openssl. Use pyspnego instead.
|
|
Not sure if pyspnego is a drop in replacement.
|
|
The simple functionality dirsearch seems not to depend on this package.
|
|
*/
|
|
#ntlm-auth,
|
|
#pyspnego,
|
|
beautifulsoup4,
|
|
certifi,
|
|
cffi,
|
|
chardet,
|
|
charset-normalizer,
|
|
colorama,
|
|
cryptography,
|
|
defusedxml,
|
|
idna,
|
|
jinja2,
|
|
markupsafe,
|
|
pyopenssl,
|
|
pyparsing,
|
|
pysocks,
|
|
requests,
|
|
requests-ntlm,
|
|
setuptools,
|
|
urllib3,
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "dirsearch";
|
|
version = "0.4.3";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "maurosoria";
|
|
repo = "dirsearch";
|
|
rev = "v${version}";
|
|
hash = "sha256-eXB103qUB3m7V/9hlq2xv3Y3bIz89/pGJsbPZQ+AZXs=";
|
|
};
|
|
|
|
# setup.py does some weird stuff with mktemp
|
|
postPatch = ''
|
|
substituteInPlace setup.py \
|
|
--replace-fail 'os.chdir(env_dir)' "" \
|
|
--replace-fail 'shutil.copytree(os.path.abspath(os.getcwd()), os.path.join(env_dir, "dirsearch"))' ""
|
|
'';
|
|
|
|
pyproject = true;
|
|
build-system = [ setuptools ];
|
|
|
|
dependencies = [
|
|
# maybe needed, see above
|
|
#pyspnego
|
|
#ntlm-auth
|
|
beautifulsoup4
|
|
certifi
|
|
cffi
|
|
chardet
|
|
charset-normalizer
|
|
colorama
|
|
cryptography
|
|
defusedxml
|
|
idna
|
|
jinja2
|
|
markupsafe
|
|
pyopenssl
|
|
pyparsing
|
|
pysocks
|
|
requests
|
|
requests-ntlm
|
|
setuptools
|
|
urllib3
|
|
];
|
|
|
|
# the library files get installed in the wrong location
|
|
# and dirsearch.py, __init__.py and db/ are missing
|
|
postInstall = ''
|
|
dirsearchpath=$out/lib/python${lib.versions.majorMinor python.version}/site-packages/
|
|
mkdir -p $dirsearchpath/dirsearch
|
|
mv $dirsearchpath/{lib,dirsearch}
|
|
cp $src/{dirsearch,__init__}.py $dirsearchpath/dirsearch
|
|
cp -r $src/db $dirsearchpath/dirsearch
|
|
'';
|
|
|
|
# tests
|
|
nativeCheckInputs = [
|
|
pytestCheckHook
|
|
];
|
|
disabledTestPaths = [
|
|
# needs network?
|
|
"tests/reports/test_reports.py"
|
|
];
|
|
disabledTests = [
|
|
# failing for unknown reason
|
|
"test_detect_scheme"
|
|
];
|
|
pythonRemoveDeps = [
|
|
# not available, see above
|
|
"ntlm_auth"
|
|
];
|
|
pythonRelaxDeps = [
|
|
# version checker doesn't recognize 0.8.0.rc2 as >=0.7.0
|
|
"defusedxml"
|
|
# probably not but we don't have old charset-normalizer versions in nixpkgs
|
|
# and requests also depends on it so we can't just override it with an
|
|
# older version due to package duplication
|
|
"charset_normalizer"
|
|
];
|
|
|
|
meta = {
|
|
changelog = "https://github.com/maurosoria/dirsearch/releases/tag/${version}";
|
|
description = "Command-line tool for brute-forcing directories and files in webservers, AKA a web path scanner";
|
|
homepage = "https://github.com/maurosoria/dirsearch";
|
|
license = lib.licenses.gpl2Only;
|
|
mainProgram = "dirsearch";
|
|
maintainers = with lib.maintainers; [ quantenzitrone ];
|
|
};
|
|
}
|