17#include <gnutls/gnutls.h>
22#include <sys/socket.h>
30#define G_LOG_DOMAIN "libgvm osp"
116 const
char *cert, const
char *key)
120 if (host && *host ==
'/')
122 struct sockaddr_un addr;
125 if (strlen (host) >=
sizeof (addr.sun_path))
127 g_warning (
"%s: given host / socket path too long (%zu > %zu bytes)",
128 __func__, strlen (host),
sizeof (addr.sun_path) - 1);
132 connection = g_malloc0 (
sizeof (*connection));
133 connection->
socket = socket (AF_UNIX, SOCK_STREAM, 0);
134 if (connection->
socket == -1)
140 addr.sun_family = AF_UNIX;
141 memset (addr.sun_path, 0, sizeof (addr.sun_path));
142 memcpy (addr.sun_path, host, strlen (host));
143 len = strlen (addr.sun_path) +
sizeof (addr.sun_family);
144 if (connect (connection->
socket, (
struct sockaddr *) &addr, len) == -1)
146 close (connection->
socket);
153 if (port <= 0 || port > 65535)
157 if (!cert || !key || !cacert)
160 connection = g_malloc0 (
sizeof (*connection));
162 &connection->
session, host, port, cacert, cert, key);
164 if (connection->
socket == -1)
170 connection->
host = g_strdup (host);
171 connection->
port = port;
186 const char *fmt, ...)
193 if (!connection || !fmt || !response)
196 if (*connection->
host ==
'/')
230 const char *fmt, ...)
241 if (!connection || !fmt)
244 if (*connection->
host ==
'/')
284 if (*connection->
host ==
'/')
285 close (connection->
socket);
288 g_free (connection->
host);
308 int *self_test_exit_error,
char **self_test_error_msg,
311 entity_t entity, feed, lockfile_entity, exit_error_entity, error_msg_entity;
312 const char *status, *status_text;
322 if (status != NULL && !strcmp (status,
"400"))
325 g_debug (
"%s: %s - %s.", __func__, status, status_text);
327 *cmd_error = g_strdup (status_text);
335 g_warning (
"%s: element FEED missing.", __func__);
340 lockfile_entity =
entity_child (feed,
"lockfile_in_use");
341 exit_error_entity =
entity_child (feed,
"self_test_exit_error");
342 error_msg_entity =
entity_child (feed,
"self_test_error_msg");
347 *lockfile_in_use = atoi (
entity_text (lockfile_entity));
350 g_warning (
"%s: element LOCKFILE_IN_USE missing.", __func__);
351 *lockfile_in_use = -1;
355 if (self_test_exit_error)
357 if (exit_error_entity)
358 *self_test_exit_error = atoi (
entity_text (exit_error_entity));
361 g_warning (
"%s: element SELF_TEST_EXIT_ERROR missing.", __func__);
362 *self_test_exit_error = -1;
366 if (self_test_error_msg)
368 if (error_msg_entity)
371 *self_test_error_msg = g_strdup (
entity_text (error_msg_entity));
373 *self_test_error_msg = NULL;
377 g_warning (
"%s: element SELF_TEST_ERROR_MSG missing.", __func__);
378 *self_test_error_msg = NULL;
401 char **d_name,
char **d_version,
char **p_name,
414 goto err_get_version;
417 goto err_get_version;
422 goto err_get_version;
428 goto err_get_version;
431 goto err_get_version;
436 goto err_get_version;
442 goto err_get_version;
445 goto err_get_version;
450 goto err_get_version;
458 g_warning (
"Erroneous OSP <get_version/> response.");
490 const char *status, *status_text;
503 if (status != NULL && !strcmp (status,
"400"))
506 g_debug (
"%s: %s - %s.", __func__, status, status_text);
508 *error = g_strdup (status_text);
516 g_warning (
"%s: element VTS missing.", __func__);
524 *vts_version = g_strdup (version);
544 char **feed_name,
char **feed_vendor,
char **feed_home,
548 const char *version, *name, *vendor, *home;
549 const char *status, *status_text;
562 if (status != NULL && !strcmp (status,
"400"))
565 g_debug (
"%s: %s - %s.", __func__, status, status_text);
567 *error = g_strdup (status_text);
575 g_warning (
"%s: element VTS missing.", __func__);
586 *vts_version = version ? g_strdup (version) : NULL;
588 *feed_name = name ? g_strdup (name) : NULL;
590 *feed_vendor = vendor ? g_strdup (vendor) : NULL;
592 *feed_home = home ? g_strdup (home) : NULL;
725 if (strcmp (status,
"200"))
754 *error = g_strdup (
"Couldn't send get_performance command "
755 "to scanner. Not valid connection");
762 || opts.
start > now || opts.
end < 0 || opts.
end > now)
765 *error = g_strdup (
"Couldn't send get_performance command "
766 "to scanner. Bad or missing parameters.");
771 "<get_performance start='%d' "
772 "end='%d' titles='%s'/>",
778 *error = g_strdup (
"Couldn't send get_performance command to scanner");
790 *error = g_strdup (text);
819 *error = g_strdup (
"Couldn't send get_scans command "
820 "to scanner. Not valid connection");
826 "<get_scans scan_id='%s'"
828 " pop_results='0'/>",
834 *error = g_strdup (
"Couldn't send get_scans command to scanner");
845 *error = g_strdup (text);
881 char **report_xml,
int details,
int pop_results,
char **error)
890 *error = g_strdup (
"Couldn't send get_scan command "
891 "to scanner. Not valid connection");
896 "<get_scans scan_id='%s'"
898 " pop_results='%d'/>",
899 scan_id, pop_results ? 1 : 0, details ? 1 : 0);
903 *error = g_strdup (
"Couldn't send get_scans command to scanner");
914 *error = g_strdup (text);
923 string = g_string_new (
"");
925 *report_xml = g_string_free (
string, FALSE);
944 char **report_xml,
int details,
char **error)
946 return osp_get_scan_pop (connection, scan_id, report_xml, details, 0, error);
967 *error = g_strdup (
"Couldn't send stop_scan command "
968 "to scanner. Not valid connection");
977 *error = g_strdup (
"Couldn't send stop_scan command to scanner");
993 *error = g_strdup (text);
1010 char *options_str, *tmp, *key_escaped, *value_escaped;
1012 options_str = *(
char **) pstr;
1014 key_escaped = g_markup_escape_text ((
char *) key, -1);
1015 value_escaped = g_markup_escape_text ((
char *) value, -1);
1016 tmp = g_strdup_printf (
"%s<%s>%s</%s>", options_str ? options_str :
"",
1017 key_escaped, value_escaped, key_escaped);
1019 g_free (options_str);
1020 g_free (key_escaped);
1021 g_free (value_escaped);
1022 *(
char **) pstr = tmp;
1039 const char *ports, GHashTable *options,
const char *scan_id,
1043 char *options_str = NULL;
1050 *error = g_strdup (
"Couldn't send start_scan command "
1051 "to scanner. Not valid connection");
1061 "<start_scan target='%s' ports='%s' scan_id='%s'>"
1062 "<scanner_params>%s</scanner_params></start_scan>",
1063 target, ports ? ports :
"", scan_id ? scan_id :
"",
1064 options_str ? options_str :
"");
1065 g_free (options_str);
1069 *error = g_strdup (
"Couldn't send start_scan command to scanner");
1085 *error = g_strdup (text);
1102 if (!key || !value || !xml_string)
1123 xml_string,
"<credential type=\"%s\" service=\"%s\" port=\"%s\">",
1124 type ? type :
"", service ? service :
"", port ? port :
"");
1145 "<exclude_hosts>%s</exclude_hosts>"
1146 "<finished_hosts>%s</finished_hosts>"
1147 "<ports>%s</ports>",
1159 else if (target->
icmp == TRUE || target->
tcp_syn == TRUE
1160 || target->
tcp_ack == TRUE || target->
arp == TRUE
1164 "<alive_test_methods>"
1166 "<tcp_syn>%d</tcp_syn>"
1167 "<tcp_ack>%d</tcp_ack>"
1169 "<consider_alive>%d</consider_alive>"
1170 "</alive_test_methods>",
1177 "<reverse_lookup_unify>%d</reverse_lookup_unify>",
1181 "<reverse_lookup_only>%d</reverse_lookup_only>",
1186 g_string_append (xml_string,
"<credentials>");
1189 g_string_append (xml_string,
"</credentials>");
1218 id ?
id :
"", value ? value :
"");
1249 gchar *scanner_params_xml = NULL;
1256 char filename[] =
"/tmp/osp-cmd-XXXXXX";
1262 *error = g_strdup (
"Couldn't send start_scan command "
1263 "to scanner. Not valid connection");
1267 fd = mkstemp (filename);
1268 FILE *file = fdopen (fd,
"w");
1270 xml = g_string_sized_new (10240);
1271 g_string_append (xml,
"<start_scan");
1274 g_string_append (xml,
"<targets>");
1276 g_string_append (xml,
"</targets>");
1278 g_string_append (xml,
"<scanner_params>");
1281 scanner_params_xml = NULL;
1283 &scanner_params_xml);
1284 if (scanner_params_xml)
1285 g_string_append (xml, scanner_params_xml);
1286 g_free (scanner_params_xml);
1288 g_string_append (xml,
"</scanner_params>");
1290 g_string_append (xml,
"<vt_selection>");
1293 fprintf (file,
"%s", xml->str);
1295 g_string_free (xml, TRUE);
1297 xml = g_string_new (
"");
1298 list_item = opts.
vts;
1305 list_item = list_item->next;
1307 if (list_count == 1000)
1309 fprintf (file,
"%s", xml->str);
1311 g_string_free (xml, TRUE);
1312 xml = g_string_new (
"");
1317 g_string_append (xml,
"</vt_selection>");
1318 g_string_append (xml,
"</start_scan>");
1320 fprintf (file,
"%s", xml->str);
1323 g_string_free (xml, TRUE);
1325 g_file_get_contents (filename, &cmd, NULL, NULL);
1335 *error = g_strdup (
"Could not send start_scan command to scanner");
1351 *error = g_strdup (text);
1373 if (!strcmp (str,
"integer"))
1375 else if (!strcmp (str,
"string"))
1377 else if (!strcmp (str,
"password"))
1379 else if (!strcmp (str,
"file"))
1381 else if (!strcmp (str,
"boolean"))
1383 else if (!strcmp (str,
"ovaldef_file"))
1385 else if (!strcmp (str,
"selection"))
1387 else if (!strcmp (str,
"credential_up"))
1418 return "ovaldef_file";
1422 return "credential_up";
1443 assert (connection);
1460 child = entities->data;
1472 *params = g_slist_append (*params, param);
1584 g_free (param->
name);
1585 g_free (param->
desc);
1586 g_free (param->
def);
1604 int alive_test,
int reverse_lookup_unify,
1605 int reverse_lookup_only)
1610 new_target->
exclude_hosts = exclude_hosts ? g_strdup (exclude_hosts) : NULL;
1611 new_target->
hosts = hosts ? g_strdup (hosts) : NULL;
1612 new_target->
ports = ports ? g_strdup (ports) : NULL;
1614 new_target->
alive_test = alive_test ? alive_test : 0;
1616 reverse_lookup_unify ? reverse_lookup_unify : 0;
1618 reverse_lookup_only ? reverse_lookup_only : 0;
1633 target->
finished_hosts = finished_hosts ? g_strdup (finished_hosts) : NULL;
1650 g_free (target->
hosts);
1651 g_free (target->
ports);
1667 gboolean tcp_syn, gboolean tcp_ack,
1668 gboolean arp, gboolean consider_alive)
1673 target->
icmp = icmp;
1689 if (!target || !credential)
1708 new_vt_group->
filter = filter ? g_strdup (filter) : NULL;
1710 return new_vt_group;
1724 g_free (vt_group->
filter);
1741 new_vt_single->
vt_id = vt_id ? g_strdup (vt_id) : NULL;
1743 g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
1745 return new_vt_single;
1759 g_hash_table_destroy (vt_single->
vt_values);
1761 g_free (vt_single->
vt_id);
1777 g_hash_table_replace (vt_single->
vt_values, g_strdup (name),
const gchar * scan_credential_get_port(scan_credential_t *credential)
Get the port of a scan credential.
Definition credentialutils.c:93
void scan_credential_free(scan_credential_t *credential)
Free a scan credential.
Definition credentialutils.c:134
const gchar * scan_credential_get_type(scan_credential_t *credential)
Get the type of a scan credential.
Definition credentialutils.c:63
void scan_credential_foreach_auth_data(scan_credential_t *credential, void(*func)(const char *name, const char *value, void *user_data), void *user_data)
Iterate over each authentication data item in a scan credential.
Definition credentialutils.c:109
const gchar * scan_credential_get_service(scan_credential_t *credential)
Get the service of a scan credential.
Definition credentialutils.c:78
struct scan_credential scan_credential_t
Definition credentialutils.h:16
int gvm_get_host_type(const gchar *str_stripped)
Determines the host type in a buffer.
Definition hosts.c:814
Protos and data structures for Hosts collections and single hosts objects.
__attribute__((weak))
Definition networking_tests.c:1036
void osp_target_add_credential(osp_target_t *target, scan_credential_t *credential)
Add a credential to an OSP target.
Definition osp.c:1687
int osp_check_feed(osp_connection_t *connection, int *lockfile_in_use, int *self_test_exit_error, char **self_test_error_msg, char **cmd_error)
Gets additional status info about the feed.
Definition osp.c:307
void osp_connection_close(osp_connection_t *connection)
Close a connection to an OSP server.
Definition osp.c:279
int osp_get_vts_ext_str(osp_connection_t *connection, osp_get_vts_opts_t opts, gchar **str)
Get filtered set of VTs from an OSP server.
Definition osp.c:670
static int osp_send_command(osp_connection_t *, entity_t *, static intosp_send_command_str(osp_connection_t const char *,...)
Definition osp.c:96
int osp_start_scan_ext(osp_connection_t *connection, osp_start_scan_opts_t opts, char **error)
Start an OSP scan against a target.
Definition osp.c:1246
void osp_vt_group_free(osp_vt_group_t *vt_group)
Free a OSP VT group.
Definition osp.c:1719
void osp_target_add_alive_test_methods(osp_target_t *target, gboolean icmp, gboolean tcp_syn, gboolean tcp_ack, gboolean arp, gboolean consider_alive)
Add alive test methods to OSP target.
Definition osp.c:1666
osp_vt_group_t * osp_vt_group_new(const char *filter)
Create a new OSP VT group.
Definition osp.c:1703
int osp_get_vts_feed_info(osp_connection_t *connection, char **vts_version, char **feed_name, char **feed_vendor, char **feed_home, char **error)
Get the VTs version as well as other feed info from an OSP server.
Definition osp.c:543
void osp_target_set_finished_hosts(osp_target_t *target, const char *finished_hosts)
Set the finished hosts of an OSP target.
Definition osp.c:1630
static osp_param_type_t osp_param_str_to_type(const char *str)
Get an OSP parameter's type from its string format.
Definition osp.c:1370
static void add_auth_data_key_value_as_xml(const char *key, const char *value, void *xml_string)
Add authentication data key value as XML.
Definition osp.c:1099
int osp_get_vts(osp_connection_t *connection, entity_t *vts)
Get all VTs from an OSP server.
Definition osp.c:607
int osp_get_scanner_details(osp_connection_t *connection, char **desc, GSList **params)
Get an OSP scanner's details.
Definition osp.c:1437
const char * osp_param_desc(const osp_param_t *param)
Get an OSP parameter's description.
Definition osp.c:1536
int osp_delete_scan(osp_connection_t *connection, const char *scan_id)
Delete a scan from an OSP server.
Definition osp.c:708
void osp_target_free(osp_target_t *target)
Free an OSP target, including all added credentials.
Definition osp.c:1642
int osp_get_vts_ext(osp_connection_t *connection, osp_get_vts_opts_t opts, entity_t *vts)
Get filtered set of VTs from an OSP server.
Definition osp.c:631
void osp_vt_single_add_value(osp_vt_single_t *vt_single, const char *name, const char *value)
Add a preference value to an OSP VT. This creates a copy of the name and value.
Definition osp.c:1774
static void vt_single_append_as_xml(osp_vt_single_t *vt_single, GString *xml_string)
Append single VTs as XML to a string buffer.
Definition osp.c:1228
osp_vt_single_t * osp_vt_single_new(const char *vt_id)
Create a new single OSP VT.
Definition osp.c:1736
static void credential_append_as_xml(scan_credential_t *credential, GString *xml_string)
Concatenate a credential as XML.
Definition osp.c:1115
int osp_get_scan(osp_connection_t *connection, const char *scan_id, char **report_xml, int details, char **error)
Get a scan from an OSP server.
Definition osp.c:943
int osp_get_scan_pop(osp_connection_t *connection, const char *scan_id, char **report_xml, int details, int pop_results, char **error)
Get a scan from an OSP server, optionally removing the results.
Definition osp.c:880
static void vt_value_append_as_xml(gpointer id, gchar *value, GString *xml_string)
Append VT values as XML to a string buffer.
Definition osp.c:1215
int osp_start_scan(osp_connection_t *connection, const char *target, const char *ports, GHashTable *options, const char *scan_id, char **error)
Start an OSP scan against a target.
Definition osp.c:1038
static void target_append_as_xml(osp_target_t *target, GString *xml_string)
Concatenate a target as XML.
Definition osp.c:1140
static void vt_group_append_as_xml(osp_vt_group_t *vt_group, GString *xml_string)
Append VT groups as XML to a string buffer.
Definition osp.c:1201
void osp_vt_single_free(osp_vt_single_t *vt_single)
Free a single OSP VT, including all preference values.
Definition osp.c:1754
static void option_concat_as_xml(gpointer key, gpointer value, gpointer pstr)
Concatenate options as xml.
Definition osp.c:1008
osp_param_t * osp_param_new(void)
Create a new OSP parameter.
Definition osp.c:1493
osp_target_t * osp_target_new(const char *hosts, const char *ports, const char *exclude_hosts, int alive_test, int reverse_lookup_unify, int reverse_lookup_only)
Create a new OSP target.
Definition osp.c:1603
int osp_get_version(osp_connection_t *connection, char **s_name, char **s_version, char **d_name, char **d_version, char **p_name, char **p_version)
Get the scanner version from an OSP server.
Definition osp.c:400
const char * osp_param_type_str(const osp_param_t *param)
Get an OSP parameter in string format form its type.
Definition osp.c:1401
static int osp_send_command_str(osp_connection_t *connection, gchar **str, const char *fmt,...)
Send a command to an OSP server.
Definition osp.c:229
int osp_stop_scan(osp_connection_t *connection, const char *scan_id, char **error)
Stop a scan on an OSP server.
Definition osp.c:959
int osp_get_performance_ext(osp_connection_t *connection, osp_get_performance_opts_t opts, char **graph, char **error)
Get performance graphics from an OSP server.
Definition osp.c:743
const char * osp_param_name(const osp_param_t *param)
Get an OSP parameter's name.
Definition osp.c:1521
int osp_param_mandatory(const osp_param_t *param)
Get an OSP parameter's mandatory value.
Definition osp.c:1566
void osp_param_free(osp_param_t *param)
Free an OSP parameter.
Definition osp.c:1579
int osp_get_vts_version(osp_connection_t *connection, char **vts_version, char **error)
Get the VTs version from an OSP server.
Definition osp.c:485
osp_scan_status_t osp_get_scan_status_ext(osp_connection_t *connection, osp_get_scan_status_opts_t opts, char **error)
Get a scan status from an OSP server.
Definition osp.c:809
const char * osp_param_id(const osp_param_t *param)
Get an OSP parameter's id.
Definition osp.c:1506
const char * osp_param_default(const osp_param_t *param)
Get an OSP parameter's default value.
Definition osp.c:1551
API for Open Scanner Protocol communication.
struct osp_connection osp_connection_t
Definition osp.h:21
struct osp_target osp_target_t
Definition osp.h:23
static const osp_get_vts_opts_t osp_get_vts_opts_default
Sensible default values for osp_get_vts_opts_t.
Definition osp.h:108
struct osp_vt_group osp_vt_group_t
Definition osp.h:25
osp_scan_status_t
OSP scan status.
Definition osp.h:48
@ OSP_SCAN_STATUS_QUEUED
Definition osp.h:54
@ OSP_SCAN_STATUS_STOPPED
Definition osp.h:52
@ OSP_SCAN_STATUS_INTERRUPTED
Definition osp.h:55
@ OSP_SCAN_STATUS_FINISHED
Definition osp.h:53
@ OSP_SCAN_STATUS_RUNNING
Definition osp.h:51
@ OSP_SCAN_STATUS_ERROR
Definition osp.h:49
@ OSP_SCAN_STATUS_INIT
Definition osp.h:50
struct osp_vt_single osp_vt_single_t
Definition osp.h:27
osp_connection_t * osp_connection_new(const char *, int, const char *, const char *, const char *)
struct osp_param osp_param_t
Definition osp.h:70
osp_param_type_t
OSP parameter types.
Definition osp.h:33
@ OSP_PARAM_TYPE_BOOLEAN
Definition osp.h:38
@ OSP_PARAM_TYPE_STR
Definition osp.h:35
@ OSP_PARAM_TYPE_INT
Definition osp.h:34
@ OSP_PARAM_TYPE_SELECTION
Definition osp.h:40
@ OSP_PARAM_TYPE_PASSWORD
Definition osp.h:36
@ OSP_PARAM_TYPE_FILE
Definition osp.h:37
@ OSP_PARAM_TYPE_CRD_UP
Definition osp.h:41
@ OSP_PARAM_TYPE_OVALDEF_FILE
Definition osp.h:39
int gvm_server_open_with_cert(gnutls_session_t *session, const char *host, int port, const char *ca_mem, const char *pub_mem, const char *priv_mem)
Connect to the server using a given host, port and cert.
Definition serverutils.c:461
int gvm_server_vsendf(gnutls_session_t *session, const char *fmt, va_list ap)
Send a string to the server.
Definition serverutils.c:727
int gvm_server_close(int socket, gnutls_session_t session)
Close a server connection and its socket.
Definition serverutils.c:493
int gvm_socket_vsendf(int socket, const char *fmt, va_list ap)
Send a string to the server.
Definition serverutils.c:742
GnuTLS based functions for server communication - header file.
entities_t entities
Children.
Definition xmlutils.h:56
Connection.
Definition serverutils.h:30
gint port
Port of server.
Definition serverutils.h:39
int tls
Whether uses TCP-TLS (vs UNIX socket).
Definition serverutils.h:31
int socket
Socket.
Definition serverutils.h:32
gchar * host_string
Server host string.
Definition serverutils.h:37
gnutls_session_t session
Session.
Definition serverutils.h:33
Struct holding options for OSP connection.
Definition osp.c:36
int port
Definition osp.c:40
int socket
Definition osp.c:38
char * host
Definition osp.c:39
gnutls_session_t session
Definition osp.c:37
const char * scan_id
UUID of the scan which get the status from.
Definition osp.h:60
char * filter
the filter to apply for a vt sub-selection.
Definition osp.h:101
int version_only
if get only feed info or the vt collection
Definition osp.h:102
Struct holding options for OSP parameters.
Definition osp.c:47
char * def
Definition osp.c:51
char * id
Definition osp.c:48
int mandatory
Definition osp.c:53
char * name
Definition osp.c:49
osp_param_type_t type
Definition osp.c:52
char * desc
Definition osp.c:50
GSList * targets
Target hosts to scan.
Definition osp.h:122
GSList * vts
Single VTs to use for the scan.
Definition osp.h:124
GSList * vt_groups
VT groups to use for the scan.
Definition osp.h:123
GHashTable * scanner_params
Table of scanner parameters.
Definition osp.h:125
const char * scan_id
UUID to set for scan, null otherwise.
Definition osp.h:126
Struct holding target information.
Definition osp.c:60
int reverse_lookup_only
Definition osp.c:75
gchar * hosts
Definition osp.c:63
GSList * credentials
Definition osp.c:61
gboolean tcp_syn
Definition osp.c:70
int reverse_lookup_unify
Definition osp.c:74
int alive_test
Definition osp.c:68
gboolean arp
Definition osp.c:72
gchar * exclude_hosts
Definition osp.c:62
gboolean icmp
Definition osp.c:69
gboolean consider_alive
Definition osp.c:73
gchar * ports
Definition osp.c:64
gboolean tcp_ack
Definition osp.c:71
gchar * finished_hosts
Definition osp.c:65
Struct holding vt_group information.
Definition osp.c:82
gchar * filter
Definition osp.c:83
Struct holding vt_group information.
Definition osp.c:90
GHashTable * vt_values
Definition osp.c:92
gchar * vt_id
Definition osp.c:91
const char * entity_attribute(entity_t entity, const char *name)
Get an attribute of an entity.
Definition xmlutils.c:216
char * entity_text(entity_t entity)
Get the text an entity.
Definition xmlutils.c:145
int read_entity(gnutls_session_t *session, entity_t *entity)
Read an XML entity tree from the manager.
Definition xmlutils.c:1469
entities_t next_entities(entities_t entities)
Return all the entities from an entities_t after the first.
Definition xmlutils.c:67
void free_entity(entity_t entity)
Free an entity, recursively.
Definition xmlutils.c:115
int read_text_c(gvm_connection_t *connection, char **text)
Read text from the server.
Definition xmlutils.c:1366
entity_t entity_child(entity_t entity, const char *name)
Get a child of an entity.
Definition xmlutils.c:193
int read_entity_s(int socket, entity_t *entity)
Read an XML entity tree from the socket.
Definition xmlutils.c:1483
void xml_string_append(GString *xml, const char *format,...)
Append formatted escaped XML to a string.
Definition xmlutils.c:1849
void print_entity_to_string(entity_t entity, GString *string)
Print an XML entity tree to a GString, appending it if string is not.
Definition xmlutils.c:1616
struct entity_s * entity_t
Definition xmlutils.h:58
GSList * entities_t
Entities.
Definition xmlutils.h:46