Skip to content

Commit 962f2e2

Browse files
jjnicolamattmundellozgen
authored
Add: Add openvasd integration (#2380)
* Add: functions to handle an Openvasd scan task * fix stop scan * Handle resume task * handle feed update * Add: get scanner preferences * fix add host detail to report * Add: handle --rebuid option * Use json pull lib instead * Receive the feed by chunks * adjust to changes in gvm-libs/openvasd/ * dont use double pointers * more adjustments to changes in gvm-libs * check for error during rebuild * Include header for strptime The _XOPEN_SOURCE flag is required for strptime. * Add directives so compile works without OPENVASD * update start time and end time * update start time and end time * Add void to header return type * Update: Update the order of the includes * fix after merging and solved conflicts * Make libgvm_openvasd optional with the OPENVASD flag * Add feature flag for openvasd integration functions * Rename Openvasd to openvasd * Rename Openvasd comment to openvasd --------- Co-authored-by: Matt Mundell <matt@mundell.me> Co-authored-by: ozgen <ozgn45@gmail.com>
1 parent f61a76a commit 962f2e2

9 files changed

+2135
-25
lines changed

src/CMakeLists.txt

+19-14
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ pkg_check_modules (LIBGVM_BASE REQUIRED libgvm_base>=22.17)
3131
pkg_check_modules (LIBGVM_UTIL REQUIRED libgvm_util>=22.17)
3232
pkg_check_modules (LIBGVM_OSP REQUIRED libgvm_osp>=22.17)
3333
pkg_check_modules (LIBGVM_GMP REQUIRED libgvm_gmp>=22.17)
34+
if (OPENVASD)
35+
pkg_check_modules (LIBGVM_OPENVASD REQUIRED libgvm_openvasd>=22.17)
36+
else (OPENVASD)
37+
message (STATUS "OPENVASD flag is not enabled")
38+
endif (OPENVASD)
3439
pkg_check_modules (GNUTLS REQUIRED gnutls>=3.2.15)
3540
pkg_check_modules (GLIB REQUIRED glib-2.0>=2.42)
3641
pkg_check_modules (LIBBSD REQUIRED libbsd)
@@ -91,7 +96,7 @@ else (WITH_LIBTHEIA)
9196
set (OPT_THEIA_TGT "")
9297
endif (WITH_LIBTHEIA)
9398

94-
include_directories (${LIBGVM_GMP_INCLUDE_DIRS}
99+
include_directories (${LIBGVM_GMP_INCLUDE_DIRS} ${LIBGVM_OPENVASD_INCLUDE_DIRS}
95100
${LIBGVM_BASE_INCLUDE_DIRS} ${LIBGVM_UTIL_INCLUDE_DIRS}
96101
${LIBGVM_OSP_INCLUDE_DIRS} ${LIBBSD_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS})
97102

@@ -313,34 +318,34 @@ add_executable (gvmd
313318
target_link_libraries (gvmd m
314319
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
315320
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
316-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
317-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
321+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS}
322+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
318323
target_link_libraries (manage-test cgreen m
319324
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
320325
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
321-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
322-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
326+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS}
327+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
323328
target_link_libraries (manage-sql-test cgreen m
324329
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
325330
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
326-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
327-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
331+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS}
332+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
328333
target_link_libraries (manage-utils-test cgreen m
329334
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
330335
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
331-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
332-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
336+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS}
337+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
333338
target_link_libraries (gmp-tickets-test cgreen m
334339
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
335340
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
336-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
337-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
341+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS}
342+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
338343
target_link_libraries (utils-test cgreen m
339344
${GNUTLS_LDFLAGS} ${GPGME_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} ${LINKER_HARDENING_FLAGS} ${LINKER_DEBUG_FLAGS}
340345
${PostgreSQL_LIBRARIES} ${LIBBSD_LDFLAGS} ${CJSON_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS}
341-
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_GMP_LDFLAGS}
342-
${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
343-
target_link_libraries (gvm-pg-server ${LIBBSD_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS} ${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS})
346+
${LIBGVM_BASE_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBGVM_OSP_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS}
347+
${LIBGVM_GMP_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS} ${OPT_THEIA_TGT})
348+
target_link_libraries (gvm-pg-server ${LIBBSD_LDFLAGS} ${GLIB_LDFLAGS} ${GTHREAD_LDFLAGS} ${LIBGVM_BASE_LDFLAGS} ${LIBGVM_OPENVASD_LDFLAGS} ${LIBGVM_UTIL_LDFLAGS} ${LIBICAL_LDFLAGS} ${LINKER_HARDENING_FLAGS})
344349

345350
set_target_properties (gvmd PROPERTIES LINKER_LANGUAGE C)
346351
set_target_properties (manage-test PROPERTIES LINKER_LANGUAGE C)

src/gmp.c

+57
Original file line numberDiff line numberDiff line change
@@ -17107,6 +17107,63 @@ handle_get_scanners (gmp_parser_t *gmp_parser, GError **error)
1710717107
g_free (desc);
1710817108
g_slist_free (params);
1710917109
}
17110+
#if OPENVASD
17111+
if ((scanner_iterator_type (&scanners) == SCANNER_TYPE_OPENVASD)
17112+
&& get_scanners_data->get.details)
17113+
{
17114+
char *s_name = NULL, *s_ver = NULL;
17115+
char *d_name = NULL, *d_ver = NULL;
17116+
char *p_name = NULL, *p_ver = NULL, *desc = NULL;
17117+
GSList *params = NULL, *nodes;
17118+
17119+
if (!openvasd_get_details_from_iterator (&scanners, &desc, &params))
17120+
{
17121+
SENDF_TO_CLIENT_OR_FAIL
17122+
("<info><scanner><name>openvasd</name><version>0.1</version>"
17123+
"</scanner><daemon><name>OpenVAS</name><version>23.4.1</version>"
17124+
"</daemon><protocol><name>SCANNER API</name><version>0.1"
17125+
"</version></protocol><description>openvasd Sensor</description>");
17126+
17127+
SENDF_TO_CLIENT_OR_FAIL ("<params>");
17128+
nodes = params;
17129+
while (nodes)
17130+
{
17131+
openvasd_param_t *param = nodes->data;
17132+
g_warning("<param><id>%s</id><name>%s</name>"
17133+
"<default>%s</default><description>%s</description>"
17134+
"<type>osp_%s</type><mandatory>%d</mandatory></param>",
17135+
openvasd_param_id (param), openvasd_param_name(param),
17136+
openvasd_param_default (param), openvasd_param_desc (param),
17137+
openvasd_param_type (param), openvasd_param_mandatory (param));
17138+
SENDF_TO_CLIENT_OR_FAIL
17139+
("<param><id>%s</id><name>%s</name>"
17140+
"<default>%s</default><description>%s</description>"
17141+
"<type>osp_%s</type><mandatory>%d</mandatory></param>",
17142+
openvasd_param_id (param), openvasd_param_name(param),
17143+
openvasd_param_default (param), openvasd_param_desc (param),
17144+
openvasd_param_type (param), 1);
17145+
17146+
osp_param_free (nodes->data);
17147+
nodes = nodes->next;
17148+
}
17149+
SENDF_TO_CLIENT_OR_FAIL ("</params></info>");
17150+
}
17151+
else
17152+
SENDF_TO_CLIENT_OR_FAIL
17153+
("<info><scanner><name/><version/></scanner>"
17154+
"<daemon><name/><version/></daemon>"
17155+
"<protocol><name/><version/><59923/protocol><description/><params/>"
17156+
"</info>");
17157+
g_free (s_name);
17158+
g_free (s_ver);
17159+
g_free (d_name);
17160+
g_free (d_ver);
17161+
g_free (p_name);
17162+
g_free (p_ver);
17163+
g_free (desc);
17164+
g_slist_free (params);
17165+
}
17166+
#endif
1711017167
else if (get_scanners_data->get.details)
1711117168
{
1711217169
SENDF_TO_CLIENT_OR_FAIL

src/gvmd.c

+9-1
Original file line numberDiff line numberDiff line change
@@ -1106,11 +1106,15 @@ handle_sigabrt_simple (int signal)
11061106
static int
11071107
update_nvt_cache_osp (const gchar *update_socket)
11081108
{
1109+
#ifdef OPENVASD
1110+
setproctitle ("openvasd: Updating NVT cache");
1111+
#else
11091112
setproctitle ("OSP: Updating NVT cache");
1110-
1113+
#endif
11111114
return manage_update_nvts_osp (update_socket);
11121115
}
11131116

1117+
11141118
/**
11151119
* @brief Update NVT cache in forked child, retrying if scanner loading.
11161120
*
@@ -2865,6 +2869,8 @@ gvmd (int argc, char** argv, char *env[])
28652869
type = SCANNER_TYPE_OPENVAS;
28662870
else if (!strcasecmp (scanner_type, "OSP-Sensor"))
28672871
type = SCANNER_TYPE_OSP_SENSOR;
2872+
else if (!strcasecmp (scanner_type, "openvasd"))
2873+
type = SCANNER_TYPE_OPENVASD;
28682874
else
28692875
{
28702876
type = atoi (scanner_type);
@@ -2907,6 +2913,8 @@ gvmd (int argc, char** argv, char *env[])
29072913
type = SCANNER_TYPE_OPENVAS;
29082914
else if (!strcasecmp (scanner_type, "OSP-Sensor"))
29092915
type = SCANNER_TYPE_OSP_SENSOR;
2916+
else if (!strcasecmp (scanner_type, "openvasd"))
2917+
type = SCANNER_TYPE_OPENVASD;
29102918
else
29112919
{
29122920
type = atoi (scanner_type);

0 commit comments

Comments
 (0)