commit:     1b6d55530908535b7439045af4ea35a096ee4a95
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 13 01:39:51 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Apr 13 01:39:59 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1b6d5553

net-analyzer/hydra: add 9.3

Closes: https://bugs.gentoo.org/805533
Closes: https://bugs.gentoo.org/838031
Closes: https://bugs.gentoo.org/811798
Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-analyzer/hydra/Manifest                    |   1 +
 net-analyzer/hydra/files/hydra-9.3-pcre2.patch | 113 +++++++++++++++++++++++
 net-analyzer/hydra/hydra-9.3.ebuild            | 121 +++++++++++++++++++++++++
 3 files changed, 235 insertions(+)

diff --git a/net-analyzer/hydra/Manifest b/net-analyzer/hydra/Manifest
index f12f1ce825e8..b3c28ec91261 100644
--- a/net-analyzer/hydra/Manifest
+++ b/net-analyzer/hydra/Manifest
@@ -1,2 +1,3 @@
 DIST hydra-9.1.tar.gz 611846 BLAKE2B 
9a5b6dc52b5f4069bf326e86728ebaf8c1fe018536f3943b83493de934703bff6770ae3f7a9a223ee00b5f52f7bd10ee4ddc272e1bbad00c399aa19cc0c083ba
 SHA512 
863176375fe1aae4c0a2b74c11aba297682d66e522c98c926c539348309b0af4e407e460b4cb803d2c83c008787c73f7f1e56ac6aca9791351e1b596c2e4fbb2
 DIST hydra-9.2.tar.gz 614176 BLAKE2B 
102c744fbdd3702c624b1c8339178883b689db093d9f1c66d8e04816327eb8095f3e3133f889b2a6ee6dcabb9e5af0c71ec8470731b4b174021fbd79741d05e7
 SHA512 
ee8ecd854b61ac9d708098c8a0d9a128d8b80b38db1a2ba8eb06de6fbbc6865135d994620ade8e3742fb993899274ed9d8fd0e95bed7a9fbeb1ca9e182540322
+DIST hydra-9.3.tar.gz 829856 BLAKE2B 
5ae1ab77f64d2bc17bd8389acf8a47201d84455a82f5ae28ab740594571a13ab145f5981efdfb09ddab3d6cc443e171e4664bff08c1a6b2f08169dea4f87ba54
 SHA512 
06d2ed61492c76d16ff3b2fbbde3938f79d6038c979a2af949f9b4d116a1506943e0a3a246da4d1bc8848cf440097e6175962e3fdf3e7644dd36ad7c2f6b2ce4

diff --git a/net-analyzer/hydra/files/hydra-9.3-pcre2.patch 
b/net-analyzer/hydra/files/hydra-9.3-pcre2.patch
new file mode 100644
index 000000000000..bb12936254bb
--- /dev/null
+++ b/net-analyzer/hydra/files/hydra-9.3-pcre2.patch
@@ -0,0 +1,113 @@
+https://github.com/vanhauser-thc/thc-hydra/commit/c82e5d51c5595374e6b7801bfc84c26a497d8989.patch
+https://bugs.gentoo.org/838031
+
+From c82e5d51c5595374e6b7801bfc84c26a497d8989 Mon Sep 17 00:00:00 2001
+From: vanhauser-thc <v...@thc.org>
+Date: Tue, 1 Mar 2022 14:56:05 +0100
+Subject: [PATCH] switch to pcre2
+
+--- a/configure
++++ b/configure
+@@ -380,21 +380,21 @@ if [ "X" = "X$CURSES_PATH" -o "X" = "X$CURSES_IPATH" ]; 
then
+     CURSES_IPATH=""
+ fi
+ 
+-echo "Checking for pcre (libpcre/pcre.h) ..."
++echo "Checking for pcre2 (libpcre/pcre.h) ..."
+ for i in $LIBDIRS ; do
+     if [ "X" = "X$PCRE_PATH" ]; then
+-        if [ -f "$i/libpcre.so" -o -f "$i/libpcre.dylib" -o -f "$i/libpcre.a" 
  ]; then
++        if [ -f "$i/libpcre2-8.so" -o -f "$i/libpcre2-8.dylib" -o -f 
"$i/libpcre2-8.a"   ]; then
+             PCRE_PATH="$i"
+         fi
+     fi
+     if [ "X" = "X$PCRE_PATH" ]; then
+-        TMP_LIB=`/bin/ls $i/libpcre.so* 2> /dev/null | grep libpcre.`
++        TMP_LIB=`/bin/ls $i/libpcre2*.so* 2> /dev/null | grep libpcre.`
+         if [ -n "$TMP_LIB" ]; then
+           PCRE_PATH="$i"
+         fi
+     fi
+     if [ "X" = "X$PCRE_PATH" ]; then
+-        TMP_LIB=`/bin/ls $i/libpcre.dll* 2> /dev/null | grep libpcre.`
++        TMP_LIB=`/bin/ls $i/libpcre2*.dll* 2> /dev/null | grep libpcre.`
+         if [ -n "$TMP_LIB" ]; then
+           PCRE_PATH="$i"
+         fi
+@@ -402,20 +402,20 @@ for i in $LIBDIRS ; do
+ done
+ for i in $INCDIRS ; do
+     if [ "X" != "X$PCRE_PATH" ]; then
+-        if [ -f "$i/pcre.h" ]; then
++        if [ -f "$i/pcre2.h" ]; then
+             PCRE_IPATH="$i"
+         fi
+     fi
+ done
+ if [ "X" != "X$DEBUG" ]; then
+    echo DEBUG: PCRE_PATH=$PCRE_PATH/libpcre
+-   echo DEBUG: PCRE_IPATH=$PCRE_IPATH/pcre.h
++   echo DEBUG: PCRE_IPATH=$PCRE_IPATH/pcre2.h
+ fi
+ if [ -n "$PCRE_PATH" -a -n "$PCRE_IPATH" ]; then
+-    echo "                                   ... found"
++    echo "                                    ... found"
+ fi
+ if [ "X" = "X$PCRE_PATH" -o "X" = "X$PCRE_IPATH" ]; then
+-    echo "                                   ... NOT found, server response 
checks will be less reliable"
++    echo "                                    ... NOT found, server response 
checks will be less reliable"
+     PCRE_PATH=""
+     PCRE_IPATH=""
+ fi
+@@ -1649,7 +1649,7 @@ if [ -n "$IDN_PATH" ]; then
+     XLIBS="$XLIBS -lidn"
+ fi
+ if [ -n "$PCRE_PATH" ]; then
+-    XLIBS="$XLIBS -lpcre"
++    XLIBS="$XLIBS -lpcre2-8"
+ fi
+ if [ -n "$MYSQL_PATH" ]; then
+     XLIBS="$XLIBS -lmysqlclient"
+--- a/hydra-mod.c
++++ b/hydra-mod.c
+@@ -7,7 +7,8 @@
+ #include <openssl/ssl.h>
+ #endif
+ #ifdef HAVE_PCRE
+-#include <pcre.h>
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include <pcre2.h>
+ #endif
+ 
+ #define MAX_CONNECT_RETRY 1
+@@ -1291,19 +1292,23 @@ void hydra_set_srcport(int32_t port) { src_port = 
port; }
+ 
+ #ifdef HAVE_PCRE
+ int32_t hydra_string_match(char *str, const char *regex) {
+-  pcre *re = NULL;
+-  int32_t offset_error = 0;
+-  const char *error = NULL;
++  pcre2_code *re = NULL;
++  int32_t error_code = 0;
++  PCRE2_SIZE error_offset;
+   int32_t rc = 0;
+ 
+-  re = pcre_compile(regex, PCRE_CASELESS | PCRE_DOTALL, &error, 
&offset_error, NULL);
++  re = pcre2_compile(regex, PCRE2_ZERO_TERMINATED, PCRE2_CASELESS | 
PCRE2_DOTALL, &error_code, &error_offset, NULL);
+   if (re == NULL) {
+-    fprintf(stderr, "[ERROR] PCRE compilation failed at offset %d: %s\n", 
offset_error, error);
++    fprintf(stderr, "[ERROR] PCRE compilation failed at offset %d: %d\n", 
error_offset, error_code);
+     return 0;
+   }
+ 
+-  rc = pcre_exec(re, NULL, str, strlen(str), 0, 0, NULL, 0);
+-  if (rc >= 0) {
++  pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(re, 
NULL);
++  rc = pcre2_match(re, str, PCRE2_ZERO_TERMINATED, 0, 0, match_data, NULL);
++  pcre2_match_data_free(match_data);
++  pcre2_code_free(re);
++
++  if (rc >= 1) {
+     return 1;
+   }
+   return 0;

diff --git a/net-analyzer/hydra/hydra-9.3.ebuild 
b/net-analyzer/hydra/hydra-9.3.ebuild
new file mode 100644
index 000000000000..aa7d807e29b8
--- /dev/null
+++ b/net-analyzer/hydra/hydra-9.3.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="Parallelized network login hacker"
+HOMEPAGE="https://github.com/vanhauser-thc/thc-hydra";
+SRC_URI="https://github.com/vanhauser-thc/thc-hydra/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/thc-${P}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="debug firebird gcrypt gtk idn memcached mongodb mysql ncurses oracle 
pcre postgres rdp libssh samba subversion zlib"
+
+RDEPEND="
+       dev-libs/openssl:=
+       gtk? (
+               dev-libs/atk
+               dev-libs/glib:2
+               x11-libs/gdk-pixbuf:2
+               x11-libs/gtk+:3
+       )
+       firebird? ( dev-db/firebird )
+       gcrypt? ( dev-libs/libgcrypt )
+       idn? ( net-dns/libidn:0= )
+       memcached? ( dev-libs/libmemcached[sasl] )
+       mongodb? ( dev-libs/mongo-c-driver )
+       mysql? ( dev-db/mysql-connector-c:0= )
+       ncurses? ( sys-libs/ncurses:= )
+       oracle? ( dev-db/oracle-instantclient[sdk] )
+       pcre? ( dev-libs/libpcre2 )
+       postgres? ( dev-db/postgresql:* )
+       rdp? ( net-misc/freerdp )
+       libssh? ( >=net-libs/libssh-0.4.0 )
+       samba? ( net-fs/samba )
+       subversion? ( dev-vcs/subversion )
+       zlib? ( sys-libs/zlib )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-pcre2.patch
+)
+
+src_prepare() {
+       default
+
+       # None of the settings in Makefile.unix are useful to us
+       mv Makefile.unix{,.gentoo_unused} || die
+       touch Makefile.unix || die
+
+       sed -i \
+               -e 's:|| echo.*$::' \
+               -e '/\t-$(CC)/s:-::' \
+               -e '/^OPTS/{s|=|+=|;s| -O3||}' \
+               -e '/ -o /s:$(OPTS):& $(LDFLAGS):g' \
+               Makefile.am || die
+}
+
+src_configure() {
+       # Note: the top level configure script is not autoconf-based
+       tc-export CC PKG_CONFIG
+
+       export OPTS="${CFLAGS}"
+
+       hydra_sed() {
+               if use ${1}; then
+                       einfo "Enabling ${1}"
+                       if [[ -n "${3}" ]]; then
+                               sed -i 's#'"${2}"'#'"${3}"'#' configure || die
+                       fi
+               else
+                       einfo "Disabling ${1}"
+                       sed -i 's#'"${2}"'##; s#'"${4}"'##' configure || die
+               fi
+       }
+
+       hydra_sed firebird '-lfbclient' '' '-DLIBFIREBIRD'
+       hydra_sed gcrypt '-lgcrypt' '$( ${CTARGET:-${CHOST}}-libgcrypt-config 
--libs )' '-DHAVE_GCRYPT'
+       hydra_sed idn '-lidn' '$( "${PKG_CONFIG}" --libs libidn )' '-DLIBIDN 
-DHAVE_PR29_H'
+       hydra_sed libssh '-lssh' '$( "${PKG_CONFIG}" --libs libssh )' '-DLIBSSH'
+       hydra_sed memcached '-lmemcached' '$( "${PKG_CONFIG}" --libs 
libmemcached )' '-DLIBMCACHED'
+       hydra_sed mongodb '-lmongoc-1.0' '$( "${PKG_CONFIG}" --libs 
libmongoc-1.0 )' '-DLIBMONGODB\|-DLIBBSON'
+       hydra_sed mysql '-lmysqlclient' '$( ${CTARGET:-${CHOST}}-mysql_config 
--libs )' '-DLIBMYSQLCLIENT'
+       hydra_sed ncurses '-lcurses' '$( "${PKG_CONFIG}" --libs ncurses )' 
'-DLIBNCURSES'
+       hydra_sed pcre '-lpcre2-8' '$( "${PKG_CONFIG}" --libs libpcre2-8 )' 
'-DHAVE_PCRE'
+       hydra_sed postgres '-lpq' '$( "${PKG_CONFIG}" --libs libpq )' 
'-DLIBPOSTGRES'
+       hydra_sed oracle '-locci -lclntsh' '' '-DLIBORACLE'
+       hydra_sed rdp '-lfreerdp2' '$( "${PKG_CONFIG}" --libs freerdp2 )' 
'-DLIBFREERDP'
+       # TODO: https://bugs.gentoo.org/686148
+       #hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' 
'$( "${PKG_CONFIG}" --libs libsvn_client )' '-DLIBSVN'
+       hydra_sed samba '-lsmbclient' '$( "${PKG_CONFIG}" --libs smbclient )' 
'-DLIBSMBCLIENT'
+       hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' 
'' '-DLIBSVN'
+       hydra_sed zlib '-lz' '$( "${PKG_CONFIG}" --libs zlib )' '-DHAVE_ZLIB'
+
+       sh configure \
+               $(use gtk || echo --disable-xhydra) \
+               $(usex debug '--debug' '') \
+               --nostrip \
+               --prefix=/usr \
+               || die
+
+       if use gtk ; then
+               pushd hydra-gtk || die
+               econf
+       fi
+}
+
+src_compile() {
+       emake XLIBPATHS=''
+       use gtk && emake -C hydra-gtk
+}
+
+src_install() {
+       dobin hydra pw-inspector
+       use gtk && dobin hydra-gtk/src/xhydra
+       dodoc CHANGES README
+}

Reply via email to