From 09f5ca27e6ba42fb1f7fcdb4cffe44ba55de500c Mon Sep 17 00:00:00 2001 From: "Braian A. Diez" Date: Tue, 2 Sep 2025 16:07:44 -0300 Subject: [PATCH] whatweb: 0.5.5 -> 0.6.2, fix build issues --- pkgs/by-name/wh/whatweb/Gemfile.lock | 25 ---- pkgs/by-name/wh/whatweb/gems/Gemfile | 7 ++ pkgs/by-name/wh/whatweb/gems/Gemfile.lock | 26 ++++ .../whatweb/{Gemfile => gems/Gemfile.mongo} | 3 + .../wh/whatweb/gems/Gemfile.mongo.lock | 34 +++++ pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet | 8 ++ .../wh/whatweb/gems/Gemfile.rchardet.lock | 28 +++++ pkgs/by-name/wh/whatweb/gems/gemset.mongo.nix | 118 ++++++++++++++++++ pkgs/by-name/wh/whatweb/{ => gems}/gemset.nix | 50 ++++---- .../wh/whatweb/gems/gemset.rchardet.nix | 84 +++++++++++++ pkgs/by-name/wh/whatweb/package.nix | 76 +++++++++-- 11 files changed, 401 insertions(+), 58 deletions(-) delete mode 100644 pkgs/by-name/wh/whatweb/Gemfile.lock create mode 100644 pkgs/by-name/wh/whatweb/gems/Gemfile create mode 100644 pkgs/by-name/wh/whatweb/gems/Gemfile.lock rename pkgs/by-name/wh/whatweb/{Gemfile => gems/Gemfile.mongo} (71%) create mode 100644 pkgs/by-name/wh/whatweb/gems/Gemfile.mongo.lock create mode 100644 pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet create mode 100644 pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet.lock create mode 100644 pkgs/by-name/wh/whatweb/gems/gemset.mongo.nix rename pkgs/by-name/wh/whatweb/{ => gems}/gemset.nix (59%) create mode 100644 pkgs/by-name/wh/whatweb/gems/gemset.rchardet.nix diff --git a/pkgs/by-name/wh/whatweb/Gemfile.lock b/pkgs/by-name/wh/whatweb/Gemfile.lock deleted file mode 100644 index 7bfd24112b1a..000000000000 --- a/pkgs/by-name/wh/whatweb/Gemfile.lock +++ /dev/null @@ -1,25 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - bson (4.14.1) - ipaddr (1.2.4) - json (2.6.1) - mongo (2.17.1) - bson (>= 4.8.2, < 5.0.0) - public_suffix (4.0.6) - rchardet (1.8.0) - -PLATFORMS - ruby - -DEPENDENCIES - addressable - ipaddr - json - mongo - rchardet - -BUNDLED WITH - 2.1.4 diff --git a/pkgs/by-name/wh/whatweb/gems/Gemfile b/pkgs/by-name/wh/whatweb/gems/Gemfile new file mode 100644 index 000000000000..728de876695b --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' + +gem 'ipaddr' +gem 'addressable' +gem 'json' +gem 'getoptlong' +gem 'resolv-replace' diff --git a/pkgs/by-name/wh/whatweb/gems/Gemfile.lock b/pkgs/by-name/wh/whatweb/gems/Gemfile.lock new file mode 100644 index 000000000000..8b1b2e19114f --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile.lock @@ -0,0 +1,26 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + getoptlong (0.2.1) + ipaddr (1.2.7) + json (2.13.2) + public_suffix (6.0.2) + resolv (0.6.2) + resolv-replace (0.1.1) + resolv + +PLATFORMS + ruby + x86_64-linux + +DEPENDENCIES + addressable + getoptlong + ipaddr + json + resolv-replace + +BUNDLED WITH + 2.7.1 diff --git a/pkgs/by-name/wh/whatweb/Gemfile b/pkgs/by-name/wh/whatweb/gems/Gemfile.mongo similarity index 71% rename from pkgs/by-name/wh/whatweb/Gemfile rename to pkgs/by-name/wh/whatweb/gems/Gemfile.mongo index a376a3baae36..3f55a8cfa15c 100644 --- a/pkgs/by-name/wh/whatweb/Gemfile +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile.mongo @@ -1,6 +1,9 @@ source 'https://rubygems.org' + gem 'ipaddr' gem 'addressable' gem 'json' +gem 'getoptlong' +gem 'resolv-replace' gem 'mongo' gem 'rchardet' diff --git a/pkgs/by-name/wh/whatweb/gems/Gemfile.mongo.lock b/pkgs/by-name/wh/whatweb/gems/Gemfile.mongo.lock new file mode 100644 index 000000000000..23060cd68708 --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile.mongo.lock @@ -0,0 +1,34 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.3.0) + bson (5.1.1) + getoptlong (0.2.1) + ipaddr (1.2.7) + json (2.13.2) + mongo (2.21.3) + base64 + bson (>= 4.14.1, < 6.0.0) + public_suffix (6.0.2) + rchardet (1.9.0) + resolv (0.6.2) + resolv-replace (0.1.1) + resolv + +PLATFORMS + ruby + x86_64-linux + +DEPENDENCIES + addressable + getoptlong + ipaddr + json + mongo + rchardet + resolv-replace + +BUNDLED WITH + 2.7.1 diff --git a/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet b/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet new file mode 100644 index 000000000000..01dcff833c1a --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet @@ -0,0 +1,8 @@ +source 'https://rubygems.org' + +gem 'ipaddr' +gem 'addressable' +gem 'json' +gem 'getoptlong' +gem 'resolv-replace' +gem 'rchardet' diff --git a/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet.lock b/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet.lock new file mode 100644 index 000000000000..665ece6fa22c --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/Gemfile.rchardet.lock @@ -0,0 +1,28 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + getoptlong (0.2.1) + ipaddr (1.2.7) + json (2.13.2) + public_suffix (6.0.2) + rchardet (1.9.0) + resolv (0.6.2) + resolv-replace (0.1.1) + resolv + +PLATFORMS + ruby + x86_64-linux + +DEPENDENCIES + addressable + getoptlong + ipaddr + json + rchardet + resolv-replace + +BUNDLED WITH + 2.7.1 diff --git a/pkgs/by-name/wh/whatweb/gems/gemset.mongo.nix b/pkgs/by-name/wh/whatweb/gems/gemset.mongo.nix new file mode 100644 index 000000000000..69a99f110732 --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/gemset.mongo.nix @@ -0,0 +1,118 @@ +{ + addressable = { + dependencies = [ "public_suffix" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0cl2qpvwiffym62z991ynks7imsm87qmgxf0yfsmlwzkgi9qcaa6"; + type = "gem"; + }; + version = "2.8.7"; + }; + base64 = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7"; + type = "gem"; + }; + version = "0.3.0"; + }; + bson = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "02q695963ix1qcdwy205rwd38mv089z54n2i5n3ih1kad864jz55"; + type = "gem"; + }; + version = "5.1.1"; + }; + getoptlong = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "198vy9dxyzibqdbw9jg8p2ljj9iknkyiqlyl229vz55rjxrz08zx"; + type = "gem"; + }; + version = "0.2.1"; + }; + ipaddr = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wmgwqv6c1kq8cxbxddllnrlh5jjmjw73i1sqbnvq55zzn3l0zyb"; + type = "gem"; + }; + version = "1.2.7"; + }; + json = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0s5vklcy2fgdxa9c6da34jbfrqq7xs6mryjglqqb5iilshcg3q82"; + type = "gem"; + }; + version = "2.13.2"; + }; + mongo = { + dependencies = [ + "base64" + "bson" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "15f96bg3gr3vahwh9vslgfxl3khma21gaqgdj98jc1447w73xlf1"; + type = "gem"; + }; + version = "2.21.3"; + }; + public_suffix = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; + type = "gem"; + }; + version = "6.0.2"; + }; + rchardet = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1455yhd1arccrns3ghhvn4dl6gnrf4zn1xxsaa33ffyqrn399216"; + type = "gem"; + }; + version = "1.9.0"; + }; + resolv = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "057vj12w6cnzz9kzbnwg17snm9jwr22izrbp9yqv3pnxrr2ybvv1"; + type = "gem"; + }; + version = "0.6.2"; + }; + resolv-replace = { + dependencies = [ "resolv" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "13v8xdmsqlr9822xpcvscnr4b9vzmzhg0l7r6hh4b281baq1jda7"; + type = "gem"; + }; + version = "0.1.1"; + }; +} diff --git a/pkgs/by-name/wh/whatweb/gemset.nix b/pkgs/by-name/wh/whatweb/gems/gemset.nix similarity index 59% rename from pkgs/by-name/wh/whatweb/gemset.nix rename to pkgs/by-name/wh/whatweb/gems/gemset.nix index b495ed96fbc2..a297fe5a176d 100644 --- a/pkgs/by-name/wh/whatweb/gemset.nix +++ b/pkgs/by-name/wh/whatweb/gems/gemset.nix @@ -5,70 +5,70 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "022r3m9wdxljpbya69y2i3h9g3dhhfaqzidf95m6qjzms792jvgp"; + sha256 = "0cl2qpvwiffym62z991ynks7imsm87qmgxf0yfsmlwzkgi9qcaa6"; type = "gem"; }; - version = "2.8.0"; + version = "2.8.7"; }; - bson = { + getoptlong = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "03n3w96vpblaxvk1qk8hq7sbsmg4nv7qdkdr8f7nfvalgpakp5i5"; + sha256 = "198vy9dxyzibqdbw9jg8p2ljj9iknkyiqlyl229vz55rjxrz08zx"; type = "gem"; }; - version = "4.14.1"; + version = "0.2.1"; }; ipaddr = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "13qd34nzpgp3fxfjbvaqg3dcnfr0cgl5vjvcqy0hfllbvfcklnbq"; + sha256 = "0wmgwqv6c1kq8cxbxddllnrlh5jjmjw73i1sqbnvq55zzn3l0zyb"; type = "gem"; }; - version = "1.2.4"; + version = "1.2.7"; }; json = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1z9grvjyfz16ag55hg522d3q4dh07hf391sf9s96npc0vfi85xkz"; + sha256 = "0s5vklcy2fgdxa9c6da34jbfrqq7xs6mryjglqqb5iilshcg3q82"; type = "gem"; }; - version = "2.6.1"; - }; - mongo = { - dependencies = [ "bson" ]; - groups = [ "default" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "19sihy8ihi3hmdg3gxbf4qvzmjnzx8xygg9534012j9z0wmhs7h1"; - type = "gem"; - }; - version = "2.17.1"; + version = "2.13.2"; }; public_suffix = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9"; + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; type = "gem"; }; - version = "4.0.6"; + version = "6.0.2"; }; - rchardet = { + resolv = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1isj1b3ywgg2m1vdlnr41lpvpm3dbyarf1lla4dfibfmad9csfk9"; + sha256 = "057vj12w6cnzz9kzbnwg17snm9jwr22izrbp9yqv3pnxrr2ybvv1"; type = "gem"; }; - version = "1.8.0"; + version = "0.6.2"; + }; + resolv-replace = { + dependencies = [ "resolv" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "13v8xdmsqlr9822xpcvscnr4b9vzmzhg0l7r6hh4b281baq1jda7"; + type = "gem"; + }; + version = "0.1.1"; }; } diff --git a/pkgs/by-name/wh/whatweb/gems/gemset.rchardet.nix b/pkgs/by-name/wh/whatweb/gems/gemset.rchardet.nix new file mode 100644 index 000000000000..346645487481 --- /dev/null +++ b/pkgs/by-name/wh/whatweb/gems/gemset.rchardet.nix @@ -0,0 +1,84 @@ +{ + addressable = { + dependencies = [ "public_suffix" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0cl2qpvwiffym62z991ynks7imsm87qmgxf0yfsmlwzkgi9qcaa6"; + type = "gem"; + }; + version = "2.8.7"; + }; + getoptlong = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "198vy9dxyzibqdbw9jg8p2ljj9iknkyiqlyl229vz55rjxrz08zx"; + type = "gem"; + }; + version = "0.2.1"; + }; + ipaddr = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wmgwqv6c1kq8cxbxddllnrlh5jjmjw73i1sqbnvq55zzn3l0zyb"; + type = "gem"; + }; + version = "1.2.7"; + }; + json = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0s5vklcy2fgdxa9c6da34jbfrqq7xs6mryjglqqb5iilshcg3q82"; + type = "gem"; + }; + version = "2.13.2"; + }; + public_suffix = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; + type = "gem"; + }; + version = "6.0.2"; + }; + rchardet = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1455yhd1arccrns3ghhvn4dl6gnrf4zn1xxsaa33ffyqrn399216"; + type = "gem"; + }; + version = "1.9.0"; + }; + resolv = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "057vj12w6cnzz9kzbnwg17snm9jwr22izrbp9yqv3pnxrr2ybvv1"; + type = "gem"; + }; + version = "0.6.2"; + }; + resolv-replace = { + dependencies = [ "resolv" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "13v8xdmsqlr9822xpcvscnr4b9vzmzhg0l7r6hh4b281baq1jda7"; + type = "gem"; + }; + version = "0.1.1"; + }; +} diff --git a/pkgs/by-name/wh/whatweb/package.nix b/pkgs/by-name/wh/whatweb/package.nix index f672f4410245..5b22854e863b 100644 --- a/pkgs/by-name/wh/whatweb/package.nix +++ b/pkgs/by-name/wh/whatweb/package.nix @@ -3,32 +3,69 @@ stdenv, fetchFromGitHub, bundlerEnv, - ruby, + ruby_3_4, + withMongo ? false, + withRchardet ? false, }: let + gemdir = + if withMongo && withRchardet then + ./gems + else if withMongo then + ./gems + else if withRchardet then + ./gems + else + ./gems; + + gemfile = + if withMongo then + gemdir + "/Gemfile.mongo" + else if withRchardet then + gemdir + "/Gemfile.rchardet" + else + gemdir + "/Gemfile"; + + lockfile = + if withMongo then + gemdir + "/Gemfile.mongo.lock" + else if withRchardet then + gemdir + "/Gemfile.rchardet.lock" + else + gemdir + "/Gemfile.lock"; + + gemset = + if withMongo then + gemdir + "/gemset.mongo.nix" + else if withRchardet then + gemdir + "/gemset.rchardet.nix" + else + gemdir + "/gemset.nix"; + gems = bundlerEnv { name = "whatweb-env"; - inherit ruby; - gemdir = ./.; + inherit ruby_3_4; + inherit gemdir; + inherit gemfile lockfile gemset; }; - in stdenv.mkDerivation rec { pname = "whatweb"; - version = "0.5.5"; + version = "0.6.2"; src = fetchFromGitHub { owner = "urbanadventurer"; repo = "whatweb"; rev = "v${version}"; - sha256 = "sha256-HLF55x4C8n8aPO4SI0d6Z9wZe80krtUaGUFmMaYRBIE="; + sha256 = "sha256-EFQ4RHI1+kmlz/Bm+9KXbmY0iEBJnKfdQL5YGDWCfJQ="; }; prePatch = '' substituteInPlace Makefile \ --replace "/usr/local" "$out" \ - --replace "/usr" "$out" + --replace "/usr" "$out" \ + --replace "bundle install" "echo 'Skipping bundle install in nix build'" ''; buildInputs = [ gems ]; @@ -40,15 +77,38 @@ stdenv.mkDerivation rec { rm $out/bin/whatweb cat << EOF >> $out/bin/whatweb #!/bin/sh -e - exec ${gems}/bin/bundle exec ${ruby}/bin/ruby "$raw" "\$@" + export GEM_PATH="${gems}/lib/ruby/gems/3.3.0" + export RUBYOPT="-W0" + exec ${ruby_3_4}/bin/ruby "$raw" "\$@" EOF chmod +x $out/bin/whatweb runHook postInstall ''; + passthru = { + withMongo = withMongo; + withRchardet = withRchardet; + }; + meta = with lib; { description = "Next generation web scanner"; + longDescription = '' + WhatWeb is a website fingerprinting tool that identifies web technologies such as CMSs, blogging platforms, + analytics packages, JavaScript libraries, web servers, and embedded devices. With over 1800 plugins, it detects software + versions, email addresses, account IDs, web framework modules, SQL errors, and more. WhatWeb offers adjustable scan + modes, balancing speed and thoroughness, making it suitable for both quick reconnaissance and detailed penetration + testing. Its plugins use multiple detection methods to reliably identify technologies, even when sites attempt to + obscure their software. + '' + + lib.optionalString withMongo '' + + This build includes MongoDB support and character set detection capabilities, which may impact performance. + '' + + lib.optionalString (withRchardet && !withMongo) '' + + This build includes character set detection capabilities, which may impact performance. + ''; mainProgram = "whatweb"; homepage = "https://github.com/urbanadventurer/whatweb"; license = licenses.gpl2Only;