Skip to content

Commit 55a8e16

Browse files
Merge pull request #1044 from devjunix/support-mongo-c-driver-2
support mongo-c-driver version 2
2 parents e92ccfd + e572944 commit 55a8e16

File tree

3 files changed

+170
-50
lines changed

3 files changed

+170
-50
lines changed

configure

Lines changed: 162 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ MYSQL_PATH=""
5353
MYSQL_IPATH=""
5454
MCACHED_PATH=""
5555
MCACHED_IPATH=""
56+
MONGODB2_PATH=""
57+
MONGODB2_IPATH=""
58+
BSON2_PATH=""
59+
BSON2_IPATH=""
5660
MONGODB_PATH=""
5761
MONGODB_IPATH=""
5862
BSON_PATH=""
@@ -1191,96 +1195,192 @@ echo "Checking for Freerdp3 (libfreerdp3/freerdp.h/libwinpr3/winpr.h) ..."
11911195
fi
11921196
fi
11931197

1194-
echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
1198+
echo "Checking for Mongodb2 (mongoc-2.x.x/mongoc/mongoc.h/bson-2.x.x/bson/bson.h) ..."
11951199

11961200
for i in $LIBDIRS ; do
1197-
if [ "X" = "X$MONGODB_PATH" ]; then
1198-
if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f "$i/libmongoc-1.0.a" ]; then
1199-
MONGODB_PATH="$i"
1201+
if [ "X" = "X$MONGODB2_PATH" ]; then
1202+
if [ -f "$i/libmongoc2.so" -o -f "$i/libmongoc2.dylib" -o -f "$i/libmongoc2.a" ]; then
1203+
MONGODB2_PATH="$i"
12001204
fi
12011205
fi
1202-
if [ "X" = "X$MONGODB_PATH" ]; then
1203-
TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
1206+
if [ "X" = "X$MONGODB2_PATH" ]; then
1207+
TMP_LIB=`/bin/ls $i/libmongoc2.so* 2> /dev/null | grep mongoc`
12041208
if [ -n "$TMP_LIB" ]; then
1205-
MONGODB_PATH="$i"
1209+
MONGODB2_PATH="$i"
12061210
fi
12071211
fi
1208-
if [ "X" = "X$MONGODB_PATH" ]; then
1209-
TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
1212+
if [ "X" = "X$MONGODB2_PATH" ]; then
1213+
TMP_LIB=`/bin/ls $i/libmongoc2.dll* 2> /dev/null | grep mongoc`
12101214
if [ -n "$TMP_LIB" ]; then
1211-
MONGODB_PATH="$i"
1215+
MONGODB2_PATH="$i"
12121216
fi
12131217
fi
12141218
done
12151219

1216-
MONGODB_IPATH=
1220+
MONGODB2_IPATH=
12171221
for i in $INCDIRS ; do
1218-
if [ "X" = "X$MONGODB_IPATH" ]; then
1222+
if [ "X" = "X$MONGODB2_IPATH" ]; then
12191223
if [ -f "$i/mongoc.h" ]; then
1220-
MONGODB_IPATH="$i"
1224+
MONGODB2_IPATH="$i"
12211225
fi
1222-
if [ -f "$i/libmongoc/mongoc.h" ]; then
1223-
MONGODB_IPATH="$i/libmongoc"
1224-
fi
1225-
if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
1226-
MONGODB_IPATH="$i/libmongoc-1.0"
1226+
if [ -f "$i/mongoc/mongoc.h" ]; then
1227+
MONGODB2_IPATH="$i/libmongoc"
12271228
fi
1229+
for ii in `ls -1d $i/mongoc-2.*`; do
1230+
if [ -f "${ii}/mongoc/mongoc.h" ]; then
1231+
MONGODB2_IPATH="$ii"
1232+
fi
1233+
done
12281234
fi
12291235
done
12301236

12311237
for i in $LIBDIRS ; do
1232-
if [ "X" = "X$BSON_PATH" ]; then
1233-
if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f "$i/libbson-1.0.a" ]; then
1234-
BSON_PATH="$i"
1238+
if [ "X" = "X$BSON2_PATH" ]; then
1239+
if [ -f "$i/libbson2.so" -o -f "$i/libbson2.dylib" -o -f "$i/libbson2.a" ]; then
1240+
BSON2_PATH="$i"
12351241
fi
12361242
fi
1237-
if [ "X" = "X$BSON_PATH" ]; then
1238-
TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
1243+
if [ "X" = "X$BSON2_PATH" ]; then
1244+
TMP_LIB=`/bin/ls $i/libbson2*.so* 2> /dev/null | grep mongoc`
12391245
if [ -n "$TMP_LIB" ]; then
1240-
BSON_PATH="$i"
1246+
BSON2_PATH="$i"
12411247
fi
12421248
fi
1243-
if [ "X" = "X$BSON_PATH" ]; then
1244-
TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
1249+
if [ "X" = "X$BSON2_PATH" ]; then
1250+
TMP_LIB=`/bin/ls $i/libbson2.dll* 2> /dev/null | grep mongoc`
12451251
if [ -n "$TMP_LIB" ]; then
1246-
BSON_PATH="$i"
1252+
BSON2_PATH="$i"
12471253
fi
12481254
fi
12491255
done
12501256

1251-
BSON_IPATH=
1257+
BSON2_IPATH=
12521258
for i in $INCDIRS ; do
1253-
if [ "X" = "X$BSON_IPATH" ]; then
1259+
if [ "X" = "X$BSON2_IPATH" ]; then
12541260
if [ -f "$i/bson.h" ]; then
1255-
BSON_IPATH="$i"
1261+
BSON2_IPATH="$i"
12561262
fi
12571263
if [ -f "$i/libbson/bson.h" ]; then
1258-
BSON_IPATH="$i/libbson"
1259-
fi
1260-
if [ -f "$i/libbson-1.0/bson.h" ]; then
1261-
BSON_IPATH="$i/libbson-1.0"
1264+
BSON2_IPATH="$i/libbson"
12621265
fi
1266+
for ii in `ls -1d $i/bson-2.*`; do
1267+
if [ -f "${ii}/bson/bson.h" ]; then
1268+
BSON2_IPATH="$ii"
1269+
fi
1270+
done
12631271
fi
12641272
done
12651273

12661274
if [ "X" != "X$DEBUG" ]; then
1267-
echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
1268-
echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
1269-
echo DEBUG: BSON_PATH=$BSON_PATH/libbson
1270-
echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
1275+
echo DEBUG: MONGODB2_PATH=$MONGODB2_PATH
1276+
echo DEBUG: MONGODB2_IPATH=$MONGODB2_IPATH
1277+
echo DEBUG: BSON2_PATH=$BSON2_PATH
1278+
echo DEBUG: BSON2_IPATH=$BSON2_IPATH
12711279
fi
12721280

1273-
if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n "$BSON_IPATH" ]; then
1281+
if [ -n "$MONGODB2_PATH" -a -n "$MONGODB2_IPATH" -a -n "$BSON2_PATH" -a -n "$BSON2_IPATH" ]; then
12741282
echo " ... found"
12751283
fi
1276-
if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" = "X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
1277-
echo " ... NOT found, module mongodb disabled"
1278-
MONGODB_PATH=""
1279-
MONGODB_IPATH=""
1280-
BSON_PATH=""
1281-
BSON_IPATH=""
1284+
if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" = "X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
1285+
echo " ... NOT found, module mongodb2 disabled"
1286+
MONGODB2_PATH=""
1287+
MONGODB2_IPATH=""
1288+
BSON2_PATH=""
1289+
BSON2_IPATH=""
12821290
fi
12831291

1292+
if [ "X" = "X$MONGODB2_PATH" -o "X" = "X$MONGODB2_IPATH" -o "X" = "X$BSON2_PATH" -o "X" = "X$BSON2_IPATH" ]; then
1293+
echo "Checking for Mongodb (libmongoc-1.0/mongoc.h/libbson-1.0/bson.h) ..."
1294+
1295+
for i in $LIBDIRS ; do
1296+
if [ "X" = "X$MONGODB_PATH" ]; then
1297+
if [ -f "$i/libmongoc-1.0.so" -o -f "$i/libmongoc-1.0.dylib" -o -f "$i/libmongoc-1.0.a" ]; then
1298+
MONGODB_PATH="$i"
1299+
fi
1300+
fi
1301+
if [ "X" = "X$MONGODB_PATH" ]; then
1302+
TMP_LIB=`/bin/ls $i/libmongoc-*.so* 2> /dev/null | grep mongoc`
1303+
if [ -n "$TMP_LIB" ]; then
1304+
MONGODB_PATH="$i"
1305+
fi
1306+
fi
1307+
if [ "X" = "X$MONGODB_PATH" ]; then
1308+
TMP_LIB=`/bin/ls $i/libmongoc.dll* 2> /dev/null | grep mongoc`
1309+
if [ -n "$TMP_LIB" ]; then
1310+
MONGODB_PATH="$i"
1311+
fi
1312+
fi
1313+
done
1314+
1315+
MONGODB_IPATH=
1316+
for i in $INCDIRS ; do
1317+
if [ "X" = "X$MONGODB_IPATH" ]; then
1318+
if [ -f "$i/mongoc.h" ]; then
1319+
MONGODB_IPATH="$i"
1320+
fi
1321+
if [ -f "$i/libmongoc/mongoc.h" ]; then
1322+
MONGODB_IPATH="$i/libmongoc"
1323+
fi
1324+
if [ -f "$i/libmongoc-1.0/mongoc.h" ]; then
1325+
MONGODB_IPATH="$i/libmongoc-1.0"
1326+
fi
1327+
fi
1328+
done
1329+
1330+
for i in $LIBDIRS ; do
1331+
if [ "X" = "X$BSON_PATH" ]; then
1332+
if [ -f "$i/libbson-1.0.so" -o -f "$i/libbson-1.0.dylib" -o -f "$i/libbson-1.0.a" ]; then
1333+
BSON_PATH="$i"
1334+
fi
1335+
fi
1336+
if [ "X" = "X$BSON_PATH" ]; then
1337+
TMP_LIB=`/bin/ls $i/libbson-*.so* 2> /dev/null | grep mongoc`
1338+
if [ -n "$TMP_LIB" ]; then
1339+
BSON_PATH="$i"
1340+
fi
1341+
fi
1342+
if [ "X" = "X$BSON_PATH" ]; then
1343+
TMP_LIB=`/bin/ls $i/libbson.dll* 2> /dev/null | grep mongoc`
1344+
if [ -n "$TMP_LIB" ]; then
1345+
BSON_PATH="$i"
1346+
fi
1347+
fi
1348+
done
1349+
1350+
BSON_IPATH=
1351+
for i in $INCDIRS ; do
1352+
if [ "X" = "X$BSON_IPATH" ]; then
1353+
if [ -f "$i/bson.h" ]; then
1354+
BSON_IPATH="$i"
1355+
fi
1356+
if [ -f "$i/libbson/bson.h" ]; then
1357+
BSON_IPATH="$i/libbson"
1358+
fi
1359+
if [ -f "$i/libbson-1.0/bson.h" ]; then
1360+
BSON_IPATH="$i/libbson-1.0"
1361+
fi
1362+
fi
1363+
done
1364+
1365+
if [ "X" != "X$DEBUG" ]; then
1366+
echo DEBUG: MONGODB_PATH=$MONGODB_PATH/libmongoc
1367+
echo DEBUG: MONGODB_IPATH=$MONGODB_IPATH/libmongoc.h
1368+
echo DEBUG: BSON_PATH=$BSON_PATH/libbson
1369+
echo DEBUG: BSON_IPATH=$BSON_IPATH/libbson.h
1370+
fi
1371+
1372+
if [ -n "$MONGODB_PATH" -a -n "$MONGODB_IPATH" -a -n "$BSON_PATH" -a -n "$BSON_IPATH" ]; then
1373+
echo " ... found"
1374+
fi
1375+
if [ "X" = "X$MONGODB_PATH" -o "X" = "X$MONGODB_IPATH" -o "X" = "X$BSON_PATH" -o "X" = "X$BSON_IPATH" ]; then
1376+
echo " ... NOT found, module mongodb disabled"
1377+
MONGODB_PATH=""
1378+
MONGODB_IPATH=""
1379+
BSON_PATH=""
1380+
BSON_IPATH=""
1381+
fi
1382+
fi
1383+
12841384
echo "Checking for smbclient (libsmbclient/libsmbclient.h) ..."
12851385

12861386
for i in $LIBDIRS ; do
@@ -1544,6 +1644,12 @@ fi
15441644
if [ -n "$MCACHED_PATH" ]; then
15451645
XDEFINES="$XDEFINES -DLIBMCACHED"
15461646
fi
1647+
if [ -n "$MONGODB2_PATH" ]; then
1648+
XDEFINES="$XDEFINES -DLIBMONGODB2"
1649+
fi
1650+
if [ -n "$BSON2_PATH" ]; then
1651+
XDEFINES="$XDEFINES -DLIBBSON2"
1652+
fi
15471653
if [ -n "$MONGODB_PATH" ]; then
15481654
XDEFINES="$XDEFINES -DLIBMONGODB"
15491655
fi
@@ -1586,6 +1692,8 @@ for i in $SSL_PATH \
15861692
$AFP_PATH \
15871693
$MYSQL_PATH \
15881694
$MCACHED_PATH \
1695+
$MONGODB2_PATH \
1696+
$BSON2_PATH \
15891697
$MONGODB_PATH \
15901698
$BSON_PATH \
15911699
$FREERDP2_PATH \
@@ -1648,6 +1756,9 @@ fi
16481756
if [ -n "$MCACHED_IPATH" ]; then
16491757
XIPATHS="$XIPATHS -I$MCACHED_IPATH"
16501758
fi
1759+
if [ -n "$MONGODB2_IPATH" ]; then
1760+
XIPATHS="$XIPATHS -I$MONGODB2_IPATH -I$BSON2_IPATH"
1761+
fi
16511762
if [ -n "$MONGODB_IPATH" ]; then
16521763
XIPATHS="$XIPATHS -I$MONGODB_IPATH -I$BSON_IPATH"
16531764
fi
@@ -1732,6 +1843,12 @@ fi
17321843
if [ -n "$MCACHED_PATH" ]; then
17331844
XLIBS="$XLIBS -lmemcached"
17341845
fi
1846+
if [ -n "$MONGODB2_PATH" ]; then
1847+
XLIBS="$XLIBS -lmongoc2"
1848+
fi
1849+
if [ -n "$BSON2_PATH" ]; then
1850+
XLIBS="$XLIBS -lbson2"
1851+
fi
17351852
if [ -n "$MONGODB_PATH" ]; then
17361853
XLIBS="$XLIBS -lmongoc-1.0"
17371854
fi

hydra-mongodb.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
// Tested on mongodb-server 1:3.6.3-0ubuntu1
33
// MONGODB-CR is been deprecated
44

5+
#ifdef LIBMONGODB2
6+
#include <mongoc/mongoc.h>
7+
#endif
58
#ifdef LIBMONGODB
69
#include <mongoc.h>
710
#endif
811

912
#include "hydra-mod.h"
1013

11-
#ifndef LIBMONGODB
14+
#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
1215
void dummy_mongodb() { printf("\n"); }
1316
#else
1417

hydra.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ extern int32_t service_radmin2_init(char *ip, int32_t sp, unsigned char options,
161161
extern void service_mcached(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE *fp, int32_t port, char *hostname);
162162
extern int32_t service_mcached_init(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE *fp, int32_t port, char *hostname);
163163
#endif
164-
#ifdef LIBMONGODB
164+
#if defined(LIBMONGODB2) || defined(LIBMONGODB)
165165
extern void service_mongodb(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE *fp, int32_t port, char *hostname);
166166
extern int32_t service_mongodb_init(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE *fp, int32_t port, char *hostname);
167167
#endif
@@ -411,7 +411,7 @@ static const struct {
411411
#endif
412412
SERVICE(mssql),
413413
SERVICE(cobaltstrike),
414-
#ifdef LIBMONGODB
414+
#if defined(LIBMONGODB2) || defined(LIBMONGODB)
415415
SERVICE3("mongodb", mongodb),
416416
#endif
417417
#ifdef HAVE_MATH_H
@@ -2275,7 +2275,7 @@ int main(int argc, char *argv[]) {
22752275
SERVICES = hydra_string_replace(SERVICES, "memcached ", "");
22762276
strcat(unsupported, "memcached ");
22772277
#endif
2278-
#ifndef LIBMONGODB
2278+
#if !defined(LIBMONGODB2) && !defined(LIBMONGODB)
22792279
SERVICES = hydra_string_replace(SERVICES, "mongodb ", "");
22802280
strcat(unsupported, "mongodb ");
22812281
#endif
@@ -2874,7 +2874,7 @@ int main(int argc, char *argv[]) {
28742874
#endif
28752875

28762876
if (strcmp(hydra_options.service, "mongodb") == 0)
2877-
#ifdef LIBMONGODB
2877+
#if defined(LIBMONGODB2) || defined(LIBMONGODB)
28782878
{
28792879
i = 1;
28802880
if (hydra_options.miscptr == NULL || (strlen(hydra_options.miscptr) == 0))

0 commit comments

Comments
 (0)