whatweb: 0.5.5 -> 0.6.2, fix build issues

This commit is contained in:
Braian A. Diez
2025-09-02 16:07:44 -03:00
parent c76c91d0d8
commit 09f5ca27e6
11 changed files with 401 additions and 58 deletions
-25
View File
@@ -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
+7
View File
@@ -0,0 +1,7 @@
source 'https://rubygems.org'
gem 'ipaddr'
gem 'addressable'
gem 'json'
gem 'getoptlong'
gem 'resolv-replace'
+26
View File
@@ -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
@@ -1,6 +1,9 @@
source 'https://rubygems.org'
gem 'ipaddr'
gem 'addressable'
gem 'json'
gem 'getoptlong'
gem 'resolv-replace'
gem 'mongo'
gem 'rchardet'
@@ -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
@@ -0,0 +1,8 @@
source 'https://rubygems.org'
gem 'ipaddr'
gem 'addressable'
gem 'json'
gem 'getoptlong'
gem 'resolv-replace'
gem 'rchardet'
@@ -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
@@ -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";
};
}
@@ -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";
};
}
@@ -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";
};
}
+68 -8
View File
@@ -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;