[Openvas-commits] r6499 - in trunk/gsa: . src
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Jan 25 11:46:59 CET 2010
Author: mattm
Date: 2010-01-25 11:46:58 +0100 (Mon, 25 Jan 2010)
New Revision: 6499
Modified:
trunk/gsa/ChangeLog
trunk/gsa/src/gsad_omp.c
Log:
* src/gsad_omp.c (get_report_omp): If the format is XML send the plain
XML, and if the format is NULL send the XSL transformed XML (that is,
send the HTML page).
Modified: trunk/gsa/ChangeLog
===================================================================
--- trunk/gsa/ChangeLog 2010-01-25 10:12:07 UTC (rev 6498)
+++ trunk/gsa/ChangeLog 2010-01-25 10:46:58 UTC (rev 6499)
@@ -1,3 +1,9 @@
+2010-01-25 Matthew Mundell <matthew.mundell at intevation.de>
+
+ * src/gsad_omp.c (get_report_omp): If the format is XML send the plain
+ XML, and if the format is NULL send the XSL transformed XML (that is,
+ send the HTML page).
+
2010-01-25 Felix Wolfsteller <felix.wolfsteller at intevation.de>
Updated help.
Modified: trunk/gsa/src/gsad_omp.c
===================================================================
--- trunk/gsa/src/gsad_omp.c 2010-01-25 10:12:07 UTC (rev 6498)
+++ trunk/gsa/src/gsad_omp.c 2010-01-25 10:46:58 UTC (rev 6499)
@@ -3645,7 +3645,7 @@
* @param[in] levels Threat levels to include in report.
* @param[in] search_phrase Phrase which included results must contain.
*
- * @return Result of XSL transformation.
+ * @return Report.
*/
char *
get_report_omp (credentials_t * credentials, const char *report_id,
@@ -3673,8 +3673,6 @@
if (levels == NULL || strlen (levels) == 0) levels = "hm";
- if (format == NULL || strlen (format) == 0) format = "xml";
-
if (manager_connect (credentials, &socket, &session))
return gsad_message ("Internal error", __FUNCTION__, __LINE__,
"An internal error occurred while getting a report. "
@@ -3682,8 +3680,6 @@
"Diagnostics: Failure to connect to manager daemon.",
"/omp?cmd=get_status");
- xml = g_string_new ("<commands_response>");
-
if (openvas_server_sendf (&session,
"<get_report"
" report_id=\"%s\""
@@ -3695,7 +3691,7 @@
" levels=\"%s\""
" search_phrase=\"%s\"/>",
report_id,
- format,
+ format ? format : "xml",
first_result,
max_results,
sort_field ? sort_field : "type",
@@ -3709,7 +3705,6 @@
search_phrase)
== -1)
{
- g_string_free (xml, TRUE);
openvas_server_close (socket, session);
return gsad_message ("Internal error", __FUNCTION__, __LINE__,
"An internal error occurred while getting a report. "
@@ -3718,60 +3713,91 @@
"/omp?cmd=get_status");
}
- if (strcmp (format, "nbe") == 0
- || strcmp (format, "pdf") == 0
- || strcmp (format, "html") == 0
- || strcmp (format, "html-pdf") == 0)
+ if (format)
{
- entity = NULL;
- if (read_entity (&session, &entity))
+ if (strcmp (format, "nbe") == 0
+ || strcmp (format, "pdf") == 0
+ || strcmp (format, "html") == 0
+ || strcmp (format, "html-pdf") == 0)
{
- g_string_free (xml, TRUE);
- openvas_server_close (socket, session);
- return gsad_message ("Internal error", __FUNCTION__, __LINE__,
- "An internal error occurred while getting a report. "
- "The report could not be delivered. "
- "Diagnostics: Failure to receive response from manager daemon.",
- "/omp?cmd=get_status");
+ xml = g_string_new ("<commands_response>");
+
+ entity = NULL;
+ if (read_entity (&session, &entity))
+ {
+ g_string_free (xml, TRUE);
+ openvas_server_close (socket, session);
+ return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+ "An internal error occurred while getting a report. "
+ "The report could not be delivered. "
+ "Diagnostics: Failure to receive response from manager daemon.",
+ "/omp?cmd=get_status");
+ }
+
+ report_entity = entity_child (entity, "report");
+ if (report_entity != NULL)
+ {
+ report_encoded = entity_text (report_entity);
+ report_decoded =
+ (gchar *) g_base64_decode (report_encoded, report_len);
+ /* g_base64_decode can return NULL (Glib 2.12.4-2), at least
+ * when *report_len is zero. */
+ if (report_decoded == NULL)
+ {
+ report_decoded = (gchar *) g_strdup ("");
+ *report_len = 0;
+ }
+ free_entity (entity);
+ g_string_free (xml, TRUE);
+ openvas_server_close (socket, session);
+ return report_decoded;
+ }
+ else
+ {
+ free_entity (entity);
+ g_string_free (xml, TRUE);
+ openvas_server_close (socket, session);
+ return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+ "An internal error occurred while getting a report. "
+ "The report could not be delivered. "
+ "Diagnostics: Failure to receive report from manager daemon.",
+ "/omp?cmd=get_status");
+ }
}
-
- report_entity = entity_child (entity, "report");
- if (report_entity != NULL)
+ else if (strcmp (format, "xml") == 0)
{
- report_encoded = entity_text (report_entity);
- report_decoded =
- (gchar *) g_base64_decode (report_encoded, report_len);
- /* g_base64_decode can return NULL (Glib 2.12.4-2), at least
- * when *report_len is zero. */
- if (report_decoded == NULL)
+ /* Manager sends XML report as plain XML. */
+ xml = g_string_new ("");
+ if (read_entity_and_string (&session, &entity, &xml))
{
- report_decoded = (gchar *) g_strdup ("");
- *report_len = 0;
+ g_string_free (xml, TRUE);
+ openvas_server_close (socket, session);
+ return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+ "An internal error occurred while getting a report. "
+ "The report could not be delivered. "
+ "Diagnostics: Failure to receive response from manager daemon.",
+ "/omp?cmd=get_status");
}
free_entity (entity);
- g_string_free (xml, TRUE);
openvas_server_close (socket, session);
- return report_decoded;
+ return g_string_free (xml, FALSE);
}
else
{
- free_entity (entity);
+ openvas_server_close (socket, session);
g_string_free (xml, TRUE);
- openvas_server_close (socket, session);
- return gsad_message ("Internal error", __FUNCTION__, __LINE__,
- "An internal error occurred while getting a report. "
- "The report could not be delivered. "
- "Diagnostics: Failure to receive report from manager daemon.",
- "/omp?cmd=get_status");
+ xml = g_string_new (GSAD_MESSAGE_INVALID_PARAM ("Get Report"));
+ return xsl_transform_omp (credentials, g_string_free (xml, FALSE));
}
}
else
{
- /* Presume format XML. */
+ /* Format is NULL, send XSL transformed XML. */
+ xml = g_string_new ("<commands_response>");
+
if (read_entity_and_string (&session, &entity, &xml))
{
- g_string_free (xml, TRUE);
openvas_server_close (socket, session);
return gsad_message ("Internal error", __FUNCTION__, __LINE__,
"An internal error occurred while getting a report. "
More information about the Openvas-commits
mailing list