[Openvas-commits] r6763 - in trunk/openvas-manager: . src
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Wed Feb 17 20:32:39 CET 2010
Author: mattm
Date: 2010-02-17 20:32:38 +0100 (Wed, 17 Feb 2010)
New Revision: 6763
Modified:
trunk/openvas-manager/ChangeLog
trunk/openvas-manager/src/manage.h
trunk/openvas-manager/src/omp.c
trunk/openvas-manager/src/tasks_sql.h
Log:
Add NVT to OMP GET_NOTES.
* src/tasks_sql.h (init_note_iterator): Add nvt arg.
* src/manage.h: Update header accordingly.
* src/omp.c: Update init_note_iterator callers.
(get_results_data_t): Add nvt_oid.
(get_notes_data_reset): Free nvt_oid.
(client_state_t): Add CLIENT_GET_NOTES_NVT.
(omp_xml_handle_start_element, omp_xml_handle_end_element): Add NVT to
GET_NOTES.
Modified: trunk/openvas-manager/ChangeLog
===================================================================
--- trunk/openvas-manager/ChangeLog 2010-02-17 19:26:30 UTC (rev 6762)
+++ trunk/openvas-manager/ChangeLog 2010-02-17 19:32:38 UTC (rev 6763)
@@ -1,5 +1,20 @@
2010-02-17 Matthew Mundell <matthew.mundell at intevation.de>
+ Add NVT to OMP GET_NOTES.
+
+ * src/tasks_sql.h (init_note_iterator): Add nvt arg.
+
+ * src/manage.h: Update header accordingly.
+
+ * src/omp.c: Update init_note_iterator callers.
+ (get_results_data_t): Add nvt_oid.
+ (get_notes_data_reset): Free nvt_oid.
+ (client_state_t): Add CLIENT_GET_NOTES_NVT.
+ (omp_xml_handle_start_element, omp_xml_handle_end_element): Add NVT to
+ GET_NOTES.
+
+2010-02-17 Matthew Mundell <matthew.mundell at intevation.de>
+
* src/omp.c (omp_xml_handle_end_element): In CLIENT_GET_NOTES also send
the note text.
Modified: trunk/openvas-manager/src/manage.h
===================================================================
--- trunk/openvas-manager/src/manage.h 2010-02-17 19:26:30 UTC (rev 6762)
+++ trunk/openvas-manager/src/manage.h 2010-02-17 19:32:38 UTC (rev 6763)
@@ -1100,7 +1100,8 @@
delete_note (note_t);
void
-init_note_iterator (iterator_t*, note_t, result_t, task_t, int, const char*);
+init_note_iterator (iterator_t*, note_t, nvt_t, result_t, task_t, int,
+ const char*);
const char*
note_iterator_uuid (iterator_t*);
Modified: trunk/openvas-manager/src/omp.c
===================================================================
--- trunk/openvas-manager/src/omp.c 2010-02-17 19:26:30 UTC (rev 6762)
+++ trunk/openvas-manager/src/omp.c 2010-02-17 19:32:38 UTC (rev 6763)
@@ -573,6 +573,7 @@
typedef struct
{
char *note_id;
+ char *nvt_oid;
char *sort_field;
int sort_order;
} get_notes_data_t;
@@ -581,6 +582,7 @@
get_notes_data_reset (get_notes_data_t *data)
{
free (data->note_id);
+ free (data->nvt_oid);
memset (data, 0, sizeof (get_notes_data_t));
}
@@ -956,6 +958,7 @@
CLIENT_GET_ESCALATORS,
CLIENT_GET_LSC_CREDENTIALS,
CLIENT_GET_NOTES,
+ CLIENT_GET_NOTES_NVT,
CLIENT_GET_NVT_ALL,
CLIENT_GET_NVT_DETAILS,
CLIENT_GET_NVT_FAMILIES,
@@ -2177,6 +2180,29 @@
break;
case CLIENT_GET_NOTES:
+ if (strcasecmp ("NVT", element_name) == 0)
+ {
+ const gchar* attribute;
+ if (find_attribute (attribute_names, attribute_values,
+ "id", &attribute))
+ openvas_append_string (&get_notes_data->nvt_oid, attribute);
+ set_client_state (CLIENT_GET_NOTES_NVT);
+ }
+ else
+ {
+ if (send_element_error_to_client ("get_notes", element_name))
+ {
+ error_send_to_client (error);
+ return;
+ }
+ set_client_state (CLIENT_AUTHENTIC);
+ g_set_error (error,
+ G_MARKUP_ERROR,
+ G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ "Error");
+ }
+ break;
+ case CLIENT_GET_NOTES_NVT:
if (send_element_error_to_client ("get_notes", element_name))
{
error_send_to_client (error);
@@ -4459,6 +4485,7 @@
init_note_iterator (¬es,
0,
+ 0,
result_iterator_result (results),
task,
1,
@@ -4773,10 +4800,15 @@
case CLIENT_GET_NOTES:
{
note_t note = 0;
+ nvt_t nvt = 0;
assert (strcasecmp ("GET_NOTES", element_name) == 0);
- if (get_notes_data->note_id
+ if (get_notes_data->note_id && get_notes_data->nvt_oid)
+ SEND_TO_CLIENT_OR_FAIL
+ (XML_ERROR_SYNTAX ("get_notes",
+ "Only one of NVT and the note attribute may be given"));
+ else if (get_notes_data->note_id
&& find_note (get_notes_data->note_id, ¬e))
SEND_TO_CLIENT_OR_FAIL (XML_INTERNAL_ERROR ("get_notes"));
else if (get_notes_data->note_id && note == 0)
@@ -4789,6 +4821,19 @@
return;
}
}
+ else if (get_notes_data->nvt_oid
+ && find_nvt (get_notes_data->nvt_oid, &nvt))
+ SEND_TO_CLIENT_OR_FAIL (XML_INTERNAL_ERROR ("get_notes"));
+ else if (get_notes_data->nvt_oid && nvt == 0)
+ {
+ if (send_find_error_to_client ("get_notes",
+ "NVT",
+ get_notes_data->nvt_oid))
+ {
+ error_send_to_client (error);
+ return;
+ }
+ }
else
{
iterator_t notes;
@@ -4799,6 +4844,7 @@
init_note_iterator (¬es,
note,
+ nvt,
0,
0,
get_notes_data->sort_order,
@@ -4829,6 +4875,10 @@
set_client_state (CLIENT_AUTHENTIC);
break;
}
+ case CLIENT_GET_NOTES_NVT:
+ assert (strcasecmp ("NVT", element_name) == 0);
+ set_client_state (CLIENT_GET_NOTES);
+ break;
case CLIENT_GET_NVT_FEED_CHECKSUM:
{
Modified: trunk/openvas-manager/src/tasks_sql.h
===================================================================
--- trunk/openvas-manager/src/tasks_sql.h 2010-02-17 19:26:30 UTC (rev 6762)
+++ trunk/openvas-manager/src/tasks_sql.h 2010-02-17 19:32:38 UTC (rev 6763)
@@ -11584,16 +11584,19 @@
* @param[in] note Single note to iterate, 0 for all.
* @param[in] result Result to limit notes to, 0 for all.
* @param[in] task Task to limit notes to, 0 for all.
+ * @param[in] nvt NVT to limit notes to, 0 for all.
* @param[in] ascending Whether to sort ascending or descending.
* @param[in] sort_field Field to sort on, or NULL for "ROWID".
*/
void
-init_note_iterator (iterator_t* iterator, note_t note, result_t result,
- task_t task, int ascending, const char* sort_field)
+init_note_iterator (iterator_t* iterator, note_t note, nvt_t nvt,
+ result_t result, task_t task, int ascending,
+ const char* sort_field)
{
gchar *result_clause;
assert (current_credentials.uuid);
+ assert ((nvt && note) == 0);
if (result)
result_clause = g_strdup_printf (" AND"
@@ -11641,6 +11644,21 @@
result_clause ? result_clause : "",
sort_field ? sort_field : "ROWID",
ascending ? "ASC" : "DESC");
+ else if (nvt)
+ init_iterator (iterator,
+ "SELECT ROWID, uuid, nvt, creation_time, modification_time,"
+ " text, hosts, port, threat, task, result"
+ " FROM notes"
+ " WHERE (nvt = (SELECT oid FROM nvts WHERE ROWID = %llu))"
+ " AND ((owner IS NULL) OR (owner ="
+ " (SELECT ROWID FROM users WHERE users.uuid = '%s')))"
+ "%s"
+ " ORDER BY %s %s;",
+ nvt,
+ current_credentials.uuid,
+ result_clause ? result_clause : "",
+ sort_field ? sort_field : "ROWID",
+ ascending ? "ASC" : "DESC");
else
init_iterator (iterator,
"SELECT ROWID, uuid, nvt, creation_time, modification_time,"
More information about the Openvas-commits
mailing list