Package: hydra
Version: 9.5-3
Severity: normal
Tags: patch

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Please find attached a patch that will allow hydra to build with
mongo-c-driver >= 2.0 (which was recently uploaded to unstable).

Regards,

- -Roberto

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEIYZ1DR4ae5UL01q7ldFmTdL1kUIFAmiwplgACgkQldFmTdL1
kULXdw/+M7nyxRWfzeGcaYYnOGAjkfSKY+loMAPUfdEUeKeUB3R15rrpALV8N79O
GUlzEJF8J8NhlwqSthPlyMoncHIktG/Ft47JbCJix0z0alZIZUf7R7HnszrSkctu
fjRGhUiB99rt6V7cKL3++Fu+3gOy+eKPNA0g0ApMJEyxIkd4COkCfdB+ZxTb1SP/
yRd7tlbtj7p9XT2T3o6On/NIvqiPIuWD/QIz4SlD0vaSezd2j1NGI1HW848AfiCm
QuA3b52QP8SYv+Ha7gnd9VR0V8cwz7+h8fqBupKGOnv3uBpkPSUGH35daRgIOv1q
9nwXz2G5FeBYJkrF0xJhTQv+ozu6txkn8IbTkRygSkmG9hId0xoxr7shRYmdH59y
isS0RlMax/LTlkAqEKTR997fXM+n/dGGN8TMT/okLo6sgO0XVDspFe0Ago6cPs+2
JCrCg+pn7urz+/HannwIwAnJ1yr9vpdLpz31oEqXevR7npRzvFDbc3gozNaIu+A+
CNZi5BwIYuQdb7+BFKTXR80YeKu8izys2qbSCxuERhFGT+4liUBaRiM3yF5/yllL
GDI9KU33gDegbrhTz722RBeyLLk7Y3JM2WU7qpX2qHHRIVDDib5zzd6VSJMorSid
NyxvnjmIMz84XmsBhhoRqeQSL5Holqd6bXl4LYzaz1OiiLuIw2c=
=gSK3
-----END PGP SIGNATURE-----
---
 configure       |  207 +++++++++++++++++++++++++++++++++++++++++++-------------
 hydra-mongodb.c |    5 +
 hydra.c         |    8 +-
 3 files changed, 170 insertions(+), 50 deletions(-)

--- a/configure
+++ b/configure
@@ -53,6 +53,10 @@
 MYSQL_IPATH=""
 MCACHED_PATH=""
 MCACHED_IPATH=""
+MONGODB2_PATH=""
+MONGODB2_IPATH=""
+BSON2_PATH=""
+BSON2_IPATH=""
 MONGODB_PATH=""
 MONGODB_IPATH=""
 BSON_PATH=""
@@ -1165,96 +1169,192 @@
     fi
 fi
 
-echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
+echo "Checking for Mongodb2 
(mongoc-2.x.x/mongoc/mongoc.h/bson-2.x.x/bson/bson.h) ..."
 
   for i in $LIBDIRS ; do
-    if [ "X" = "X$MONGODB_PATH" ]; then
-        if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f 
"$i/libmongoc-1.0.a" ]; then
-            MONGODB_PATH="$i"
+    if [ "X" = "X$MONGODB2_PATH" ]; then
+        if [ -f "$i/libmongoc2.so" -o -f "$i/libmongoc2.dylib" -o -f 
"$i/libmongoc2.a" ]; then
+            MONGODB2_PATH="$i"
         fi
     fi
-    if [ "X" = "X$MONGODB_PATH" ]; then
-        TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
+    if [ "X" = "X$MONGODB2_PATH" ]; then
+        TMP_LIB=`/bin/ls $i/libmongoc2.so* 2> /dev/null | grep mongoc`
         if [ -n "$TMP_LIB" ]; then
-          MONGODB_PATH="$i"
+          MONGODB2_PATH="$i"
         fi
     fi
-    if [ "X" = "X$MONGODB_PATH" ]; then
-        TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
+    if [ "X" = "X$MONGODB2_PATH" ]; then
+        TMP_LIB=`/bin/ls $i/libmongoc2.dll* 2> /dev/null | grep mongoc`
         if [ -n "$TMP_LIB" ]; then
-          MONGODB_PATH="$i"
+          MONGODB2_PATH="$i"
         fi
     fi
   done
 
-  MONGODB_IPATH=
+  MONGODB2_IPATH=
   for i in $INCDIRS ; do
-    if [ "X" = "X$MONGODB_IPATH" ]; then
+    if [ "X" = "X$MONGODB2_IPATH" ]; then
         if [ -f "$i/mongoc.h" ]; then
-            MONGODB_IPATH="$i"
+            MONGODB2_IPATH="$i"
         fi
-        if [ -f "$i/libmongoc/mongoc.h" ]; then
-            MONGODB_IPATH="$i/libmongoc"
-        fi
-        if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
-            MONGODB_IPATH="$i/libmongoc-1.0"
+        if [ -f "$i/mongoc/mongoc.h" ]; then
+            MONGODB2_IPATH="$i/libmongoc"
         fi
+        for ii in `ls -1d $i/mongoc-2.*`; do
+            if [ -f "${ii}/mongoc/mongoc.h" ]; then
+                MONGODB2_IPATH="$ii"
+            fi
+        done
     fi
   done
 
  for i in $LIBDIRS ; do
-    if [ "X" = "X$BSON_PATH" ]; then
-        if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f 
"$i/libbson-1.0.a" ]; then
-            BSON_PATH="$i"
+    if [ "X" = "X$BSON2_PATH" ]; then
+        if [ -f "$i/libbson2.so" -o -f "$i/libbson2.dylib" -o -f 
"$i/libbson2.a" ]; then
+            BSON2_PATH="$i"
         fi
     fi
-    if [ "X" = "X$BSON_PATH" ]; then
-        TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
+    if [ "X" = "X$BSON2_PATH" ]; then
+        TMP_LIB=`/bin/ls $i/libbson2*.so* 2> /dev/null | grep mongoc`
         if [ -n "$TMP_LIB" ]; then
-          BSON_PATH="$i"
+          BSON2_PATH="$i"
         fi
     fi
-    if [ "X" = "X$BSON_PATH" ]; then
-        TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
+    if [ "X" = "X$BSON2_PATH" ]; then
+        TMP_LIB=`/bin/ls $i/libbson2.dll* 2> /dev/null | grep mongoc`
         if [ -n "$TMP_LIB" ]; then
-          BSON_PATH="$i"
+          BSON2_PATH="$i"
         fi
     fi
   done
 
-  BSON_IPATH=
+  BSON2_IPATH=
   for i in $INCDIRS ; do
-    if [ "X" = "X$BSON_IPATH" ]; then
+    if [ "X" = "X$BSON2_IPATH" ]; then
         if [ -f "$i/bson.h" ]; then
-            BSON_IPATH="$i"
+            BSON2_IPATH="$i"
         fi
         if [ -f "$i/libbson/bson.h" ]; then
-            BSON_IPATH="$i/libbson"
-        fi
-        if [ -f "$i/libbson-1.0/bson.h" ]; then
-            BSON_IPATH="$i/libbson-1.0"
+            BSON2_IPATH="$i/libbson"
         fi
+        for ii in `ls -1d $i/bson-2.*`; do
+            if [ -f "${ii}/bson/bson.h" ]; then
+                BSON2_IPATH="$ii"
+            fi
+        done
     fi
   done
 
 if [ "X" != "X$DEBUG" ]; then
-   echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
-   echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
-   echo DEBUG: BSON_PATH=$BSON_PATH/libbson
-   echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
+   echo DEBUG: MONGODB2_PATH=$MONGODB2_PATH
+   echo DEBUG: MONGODB2_IPATH=$MONGODB2_IPATH
+   echo DEBUG: BSON2_PATH=$BSON2_PATH
+   echo DEBUG: BSON2_IPATH=$BSON2_IPATH
 fi
 
-  if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n 
"$BSON_IPATH" ]; then
+  if [ -n "$MONGODB2_PATH" -a -n "$MONGODB2_IPATH" -a -n "$BSON2_PATH" -a -n 
"$BSON2_IPATH" ]; then
     echo "                                                                 ... 
found"
   fi
-  if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" = 
"X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
-    echo "                                                                 ... 
NOT found, module mongodb disabled"
-    MONGODB_PATH=""
-    MONGODB_IPATH=""
-    BSON_PATH=""
-    BSON_IPATH=""
+  if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" = 
"X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
+    echo "                                                                 ... 
NOT found, module mongodb2 disabled"
+    MONGODB2_PATH=""
+    MONGODB2_IPATH=""
+    BSON2_PATH=""
+    BSON2_IPATH=""
   fi
 
+if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" = 
"X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
+    echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
+
+      for i in $LIBDIRS ; do
+        if [ "X" = "X$MONGODB_PATH" ]; then
+            if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f 
"$i/libmongoc-1.0.a" ]; then
+                MONGODB_PATH="$i"
+            fi
+        fi
+        if [ "X" = "X$MONGODB_PATH" ]; then
+            TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
+            if [ -n "$TMP_LIB" ]; then
+              MONGODB_PATH="$i"
+            fi
+        fi
+        if [ "X" = "X$MONGODB_PATH" ]; then
+            TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
+            if [ -n "$TMP_LIB" ]; then
+              MONGODB_PATH="$i"
+            fi
+        fi
+      done
+
+      MONGODB_IPATH=
+      for i in $INCDIRS ; do
+        if [ "X" = "X$MONGODB_IPATH" ]; then
+            if [ -f "$i/mongoc.h" ]; then
+                MONGODB_IPATH="$i"
+            fi
+            if [ -f "$i/libmongoc/mongoc.h" ]; then
+                MONGODB_IPATH="$i/libmongoc"
+            fi
+            if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
+                MONGODB_IPATH="$i/libmongoc-1.0"
+            fi
+        fi
+      done
+
+     for i in $LIBDIRS ; do
+        if [ "X" = "X$BSON_PATH" ]; then
+            if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f 
"$i/libbson-1.0.a" ]; then
+                BSON_PATH="$i"
+            fi
+        fi
+        if [ "X" = "X$BSON_PATH" ]; then
+            TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
+            if [ -n "$TMP_LIB" ]; then
+              BSON_PATH="$i"
+            fi
+        fi
+        if [ "X" = "X$BSON_PATH" ]; then
+            TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
+            if [ -n "$TMP_LIB" ]; then
+              BSON_PATH="$i"
+            fi
+        fi
+      done
+
+      BSON_IPATH=
+      for i in $INCDIRS ; do
+        if [ "X" = "X$BSON_IPATH" ]; then
+            if [ -f "$i/bson.h" ]; then
+                BSON_IPATH="$i"
+            fi
+            if [ -f "$i/libbson/bson.h" ]; then
+                BSON_IPATH="$i/libbson"
+            fi
+            if [ -f "$i/libbson-1.0/bson.h" ]; then
+                BSON_IPATH="$i/libbson-1.0"
+            fi
+        fi
+      done
+
+    if [ "X" != "X$DEBUG" ]; then
+       echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
+       echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
+       echo DEBUG: BSON_PATH=$BSON_PATH/libbson
+       echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
+    fi
+
+      if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n 
"$BSON_IPATH" ]; then
+        echo "                                                                 
... found"
+      fi
+      if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" = 
"X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
+        echo "                                                                 
... NOT found, module mongodb disabled"
+        MONGODB_PATH=""
+        MONGODB_IPATH=""
+        BSON_PATH=""
+        BSON_IPATH=""
+      fi
+fi
+
 echo "Checking for smbclient (libsmbclient/libsmbclient.h) ..."
 
   for i in $LIBDIRS ; do
@@ -1505,6 +1605,12 @@
 if [ -n "$MCACHED_PATH" ]; then
     XDEFINES="$XDEFINES -DLIBMCACHED"
 fi
+if [ -n "$MONGODB2_PATH" ]; then
+    XDEFINES="$XDEFINES -DLIBMONGODB2"
+fi
+if [ -n "$BSON2_PATH" ]; then
+    XDEFINES="$XDEFINES -DLIBBSON2"
+fi
 if [ -n "$MONGODB_PATH" ]; then
     XDEFINES="$XDEFINES -DLIBMONGODB"
 fi
@@ -1547,6 +1653,8 @@
              $AFP_PATH \
              $MYSQL_PATH \
              $MCACHED_PATH \
+             $MONGODB2_PATH \
+             $BSON2_PATH \
              $MONGODB_PATH \
              $BSON_PATH \
              $FREERDP2_PATH \
@@ -1609,6 +1717,9 @@
 if [ -n "$MCACHED_IPATH" ]; then
     XIPATHS="$XIPATHS -I$MCACHED_IPATH"
 fi
+if [ -n "$MONGODB2_IPATH" ]; then
+    XIPATHS="$XIPATHS -I$MONGODB2_IPATH -I$BSON2_IPATH"
+fi
 if [ -n "$MONGODB_IPATH" ]; then
     XIPATHS="$XIPATHS -I$MONGODB_IPATH -I$BSON_IPATH"
 fi
@@ -1690,6 +1801,12 @@
 if [ -n "$MCACHED_PATH" ]; then
     XLIBS="$XLIBS -lmemcached"
 fi
+if [ -n "$MONGODB2_PATH" ]; then
+    XLIBS="$XLIBS -lmongoc2"
+fi
+if [ -n "$BSON2_PATH" ]; then
+    XLIBS="$XLIBS -lbson2"
+fi
 if [ -n "$MONGODB_PATH" ]; then
     XLIBS="$XLIBS -lmongoc-1.0"
 fi
--- a/hydra-mongodb.c
+++ b/hydra-mongodb.c
@@ -2,13 +2,16 @@
 // Tested on mongodb-server 1:3.6.3-0ubuntu1
 // MONGODB-CR is been deprecated
 
+#ifdef LIBMONGODB2
+#include <mongoc/mongoc.h>
+#endif
 #ifdef LIBMONGODB
 #include <mongoc.h>
 #endif
 
 #include "hydra-mod.h"
 
-#ifndef LIBMONGODB
+#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
 void dummy_mongodb() { printf("\n"); }
 #else
 
--- a/hydra.c
+++ b/hydra.c
@@ -161,7 +161,7 @@
 extern void service_mcached(char *ip, int32_t sp, unsigned char options, char 
*miscptr, FILE *fp, int32_t port, char *hostname);
 extern int32_t service_mcached_init(char *ip, int32_t sp, unsigned char 
options, char *miscptr, FILE *fp, int32_t port, char *hostname);
 #endif
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
 extern void service_mongodb(char *ip, int32_t sp, unsigned char options, char 
*miscptr, FILE *fp, int32_t port, char *hostname);
 extern int32_t service_mongodb_init(char *ip, int32_t sp, unsigned char 
options, char *miscptr, FILE *fp, int32_t port, char *hostname);
 #endif
@@ -405,7 +405,7 @@
 #endif
                 SERVICE(mssql),
                 SERVICE(cobaltstrike),
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
                 SERVICE3("mongodb", mongodb),
 #endif
 #ifdef HAVE_MATH_H
@@ -2201,7 +2201,7 @@
   SERVICES = hydra_string_replace(SERVICES, "memcached ", "");
   strcat(unsupported, "memcached ");
 #endif
-#ifndef LIBMONGODB
+#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
   SERVICES = hydra_string_replace(SERVICES, "mongodb ", "");
   strcat(unsupported, "mongodb ");
 #endif
@@ -2789,7 +2789,7 @@
 #endif
 
     if (strcmp(hydra_options.service, "mongodb") == 0)
-#ifdef LIBMONGODB
+#if defined(LIBMONGODB2) || defined(LIBMONGODB)
     {
       i = 1;
       if (hydra_options.miscptr == NULL || (strlen(hydra_options.miscptr) == 
0))

Reply via email to