Skip to content

Commit

Permalink
Add: handle --rebuid option
Browse files Browse the repository at this point in the history
  • Loading branch information
jjnicola committed Sep 26, 2024
1 parent 49f5625 commit be62aa6
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 9 deletions.
55 changes: 55 additions & 0 deletions src/gmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -16742,6 +16742,61 @@ handle_get_scanners (gmp_parser_t *gmp_parser, GError **error)
g_free (desc);
g_slist_free (params);
}
if ((scanner_iterator_type (&scanners) == SCANNER_TYPE_OPENVASD)
&& get_scanners_data->get.details)
{
char *s_name = NULL, *s_ver = NULL;
char *d_name = NULL, *d_ver = NULL;
char *p_name = NULL, *p_ver = NULL, *desc = NULL;
GSList *params = NULL, *nodes;

if (!openvasd_get_details_from_iterator (&scanners, &desc, &params))
{
SENDF_TO_CLIENT_OR_FAIL
("<info><scanner><name>Openvasd</name><version>0.1</version>"
"</scanner><daemon><name>OpenVAS</name><version>23.4.1</version>"
"</daemon><protocol><name>SCANNER API</name><version>0.1"
"</version></protocol><description>Openvasd Sensor</description>");

SENDF_TO_CLIENT_OR_FAIL ("<params>");
nodes = params;
while (nodes)
{
openvasd_param_t *param = nodes->data;
g_warning("<param><id>%s</id><name>%s</name>"
"<default>%s</default><description>%s</description>"
"<type>osp_%s</type><mandatory>%d</mandatory></param>",
openvasd_param_id (param), openvasd_param_name(param),
openvasd_param_default (param), openvasd_param_desc (param),
openvasd_param_type (param), openvasd_param_mandatory (param));
SENDF_TO_CLIENT_OR_FAIL
("<param><id>%s</id><name>%s</name>"
"<default>%s</default><description>%s</description>"
"<type>osp_%s</type><mandatory>%d</mandatory></param>",
openvasd_param_id (param), openvasd_param_name(param),
openvasd_param_default (param), openvasd_param_desc (param),
openvasd_param_type (param), 1);

osp_param_free (nodes->data);
nodes = nodes->next;
}
SENDF_TO_CLIENT_OR_FAIL ("</params></info>");
}
else
SENDF_TO_CLIENT_OR_FAIL
("<info><scanner><name/><version/></scanner>"
"<daemon><name/><version/></daemon>"
"<protocol><name/><version/></protocol><description/><params/>"
"</info>");
g_free (s_name);
g_free (s_ver);
g_free (d_name);
g_free (d_ver);
g_free (p_name);
g_free (p_ver);
g_free (desc);
g_slist_free (params);
}
else if (get_scanners_data->get.details)
{
SENDF_TO_CLIENT_OR_FAIL
Expand Down
42 changes: 42 additions & 0 deletions src/manage_sql.c
Original file line number Diff line number Diff line change
Expand Up @@ -43387,6 +43387,48 @@ osp_get_details_from_iterator (iterator_t *iterator, char **desc,
return 0;
}

/**
* @brief Get an Openvasd Scanner's get_scanner_preferences info.
*
* @param[in] iterator Scanner object iterator.
* @param[out] desc Scanner description.
* @param[out] params Scanner parameters.
*
* @return 0 success, 1 for failure.
*/
int
openvasd_get_details_from_iterator (iterator_t *iterator, char **desc,
GSList **params)
{
int port;
openvasd_connector_t connection;
const char *server, *ca_pub, *key_pub, *key_priv;

assert (iterator);
server = scanner_iterator_host (iterator);
port = scanner_iterator_port (iterator);
ca_pub = scanner_iterator_ca_pub (iterator);
key_pub = scanner_iterator_key_pub (iterator);
key_priv = scanner_iterator_key_priv (iterator);

connection = openvasd_connector_new();

openvasd_connector_builder (&connection, OPENVASD_SERVER, server);
openvasd_connector_builder (&connection, OPENVASD_CA_CERT, ca_pub);
openvasd_connector_builder (&connection, OPENVASD_KEY, key_priv);
openvasd_connector_builder (&connection, OPENVASD_CERT, key_pub);
openvasd_connector_builder (&connection, OPENVASD_PORT, (void *) &port);

if (!connection)
return 1;

*desc = g_strdup_printf("Openvasd Sensor on htt://%s:%d", server, port);
if (openvasd_parsed_scans_preferences (&connection, params) < 0)
return 1;
openvasd_connector_free (&connection);
return 0;
}

/**
* @brief Verify a scanner.
*
Expand Down
2 changes: 2 additions & 0 deletions src/manage_sql.h
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,8 @@ init_get_iterator (iterator_t*, const char *, const get_data_t *, column_t *,
column_t *, const char **, int, const char *, const char *,
int);

int openvasd_get_details_from_iterator (iterator_t *, char **, GSList **);

gchar *
columns_build_select (column_t *);

Expand Down
40 changes: 31 additions & 9 deletions src/manage_sql_nvts.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
* @brief Enable extra GNU functions.
*/
#include "base/nvti.h"
#include "glibconfig.h"
#include "manage.h"
#include "openvasd/openvasd.h"
#include "openvasd/jsonutils.h"
Expand Down Expand Up @@ -1456,6 +1457,7 @@ insert_nvt_preference (gpointer nvt_preference, gpointer rebuild)
return;

preference = (preference_t*) nvt_preference;

manage_nvt_preference_add (preference->name, preference->value,
preference->nvt_oid, preference->id,
preference->type, preference->pref_name,
Expand Down Expand Up @@ -1623,9 +1625,9 @@ update_preferences_from_json_nvt (nvti_t *nvti, GList **preferences)

id = nvtpref_id (pref);
char_id = g_strdup_printf ("%d", id);
type = nvtpref_type (pref);
name = nvtpref_name (pref);
def = nvtpref_default (pref);
type = g_strdup (nvtpref_type (pref));
name = g_strdup (nvtpref_name (pref));
def = g_strdup (nvtpref_default (pref));

if (type == NULL)
{
Expand Down Expand Up @@ -1667,16 +1669,16 @@ update_preferences_from_json_nvt (nvti_t *nvti, GList **preferences)
preference->value = g_strdup (def);
else
preference->value = g_strdup ("");
preference->nvt_oid = g_strdup (nvti_oid(nvti));
preference->nvt_oid = g_strdup (nvti_oid (nvti));
preference->id = g_strdup (char_id);
preference->type = g_strdup (type);
preference->pref_name = name;
preference->pref_name = g_strdup (name);
*preferences = g_list_prepend (*preferences, preference);
}

g_free (type);
g_free (name);
g_free (char_id);
g_free (name);
g_free (type);
g_free (def);
}

Expand Down Expand Up @@ -1707,6 +1709,7 @@ nvti_from_vt (element_t vt)
nvti_free (nvti);
return NULL;
}

nvti_set_oid (nvti, id);
g_free (id);

Expand Down Expand Up @@ -3005,8 +3008,27 @@ manage_sync_nvts (int (*fork_update_nvt_cache) (pid_t*))
int
update_or_rebuild_nvts (int update)
{
gchar *db_feed_version, *scanner_feed_version;
#if OPENVASD
int ret = 0;
const char *update_socket = NULL;
nvts_feed_version_status_internal (update_socket,
&db_feed_version,
&scanner_feed_version);

g_debug ("%s: db_feed_version: %s", __func__, db_feed_version);

if (update == 0)
set_nvts_feed_version ("0");
ret = update_nvt_cache_openvasd (SCANNER_UUID_OPENVASD_DEFAULT, db_feed_version,
scanner_feed_version, 0);
if (ret != 0)
ret = -1;

return ret;

#else
const char *osp_update_socket;
gchar *db_feed_version, *scanner_feed_version;
osp_connection_t *connection;
int ret;
gchar *error;
Expand Down Expand Up @@ -3055,7 +3077,7 @@ update_or_rebuild_nvts (int update)
{
return -1;
}

#endif
return 0;
}

Expand Down

0 comments on commit be62aa6

Please sign in to comment.