nixos/librenms: use db socket when set and add package option (#359182)
[NixPkgs.git] / pkgs / tools / security / metasploit / default.nix
blob0bd37f3be97cb30e062a9c53c28be657aa405389
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   makeWrapper,
6   ruby,
7   bundlerEnv,
8   testers,
9   python3,
12 let
13   env = bundlerEnv {
14     inherit ruby;
15     name = "metasploit-bundler-env";
16     gemdir = ./.;
17   };
19 stdenv.mkDerivation (finalAttrs: {
20   pname = "metasploit-framework";
21   version = "6.4.39";
23   src = fetchFromGitHub {
24     owner = "rapid7";
25     repo = "metasploit-framework";
26     rev = "refs/tags/${finalAttrs.version}";
27     hash = "sha256-Zg6ui9B+l7tVVrv+gMpFL/xWuvdOc0Gf29s1ZvP2EYM=";
28   };
30   nativeBuildInputs = [
31     makeWrapper
32   ];
34   buildInputs = [
35     (python3.withPackages (ps: [ ps.requests ]))
36   ];
38   dontPatchELF = true; # stay away from exploit executables
40   installPhase = ''
41     runHook preInstall
43     mkdir -p $out/{bin,share/msf}
45     cp -r * $out/share/msf
47     grep -rl "^#\!.*python2$" $out/share/msf | xargs -d '\n' rm
49     (
50       cd $out/share/msf/
51       for i in msf*; do
52         makeWrapper ${env}/bin/bundle $out/bin/$i \
53           --add-flags "exec ${ruby}/bin/ruby $out/share/msf/$i"
54       done
55     )
57     makeWrapper ${env}/bin/bundle $out/bin/msf-pattern_create \
58       --add-flags "exec ${ruby}/bin/ruby $out/share/msf/tools/exploit/pattern_create.rb"
60     makeWrapper ${env}/bin/bundle $out/bin/msf-pattern_offset \
61       --add-flags "exec ${ruby}/bin/ruby $out/share/msf/tools/exploit/pattern_offset.rb"
63     runHook postInstall
64   '';
66   passthru.tests = {
67     msfconsole-version = testers.testVersion {
68       package = finalAttrs.finalPackage;
69       command = "HOME=/tmp msfconsole -q -x 'version;exit'";
70     };
71   };
73   # run with: nix-shell maintainers/scripts/update.nix --argstr path metasploit
74   passthru.updateScript = ./update.sh;
76   meta = with lib; {
77     description = "Metasploit Framework - a collection of exploits";
78     homepage = "https://docs.metasploit.com/";
79     platforms = platforms.unix;
80     license = licenses.bsd3;
81     maintainers = with maintainers; [
82       fab
83       makefu
84     ];
85     mainProgram = "msfconsole";
86   };