[Openvas-commits] r13168 - in trunk/gsa: . src src/html

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Wed Mar 28 20:12:59 CEST 2012


Author: mattm
Date: 2012-03-28 20:12:59 +0200 (Wed, 28 Mar 2012)
New Revision: 13168

Modified:
   trunk/gsa/ChangeLog
   trunk/gsa/src/gsad.c
   trunk/gsa/src/gsad_omp.c
   trunk/gsa/src/gsad_omp.h
   trunk/gsa/src/html/omp.xsl
Log:
	Add export of Targets.

	* src/gsad.c (init_validator, exec_omp_get): Add command export_targets.

	* src/gsad_omp.c (export_targets_omp): New function.

	* src/gsad_omp.h: Add header accordingly.

	* src/html/omp.xsl (html-targets-table): Add export button to Targets.

Modified: trunk/gsa/ChangeLog
===================================================================
--- trunk/gsa/ChangeLog	2012-03-28 17:25:15 UTC (rev 13167)
+++ trunk/gsa/ChangeLog	2012-03-28 18:12:59 UTC (rev 13168)
@@ -1,5 +1,17 @@
 2012-03-28  Matthew Mundell <matthew.mundell at greenbone.net>
 
+	Add export of Targets.
+
+	* src/gsad.c (init_validator, exec_omp_get): Add command export_targets.
+
+	* src/gsad_omp.c (export_targets_omp): New function.
+
+	* src/gsad_omp.h: Add header accordingly.
+
+	* src/html/omp.xsl (html-targets-table): Add export button to Targets.
+
+2012-03-28  Matthew Mundell <matthew.mundell at greenbone.net>
+
 	* src/gsad.c (init_validator): Add filter.
 
 	* src/gsad_omp.c (get_targets_omp): Send filter through to manager.

Modified: trunk/gsa/src/gsad.c
===================================================================
--- trunk/gsa/src/gsad.c	2012-03-28 17:25:15 UTC (rev 13167)
+++ trunk/gsa/src/gsad.c	2012-03-28 18:12:59 UTC (rev 13168)
@@ -558,6 +558,7 @@
                          "|(export_port_list)"
                          "|(export_preference_file)"
                          "|(export_report_format)"
+                         "|(export_targets)"
                          "|(get_agent)"
                          "|(get_agents)"
                          "|(get_config)"
@@ -1708,6 +1709,10 @@
     return export_report_format_omp (credentials, params, content_type,
                                      content_disposition, response_size);
 
+  else if (!strcmp (cmd, "export_targets"))
+    return export_targets_omp (credentials, params, content_type,
+                               content_disposition, response_size);
+
   ELSE (get_agents)
 
   else if (!strcmp (cmd, "get_agent"))

Modified: trunk/gsa/src/gsad_omp.c
===================================================================
--- trunk/gsa/src/gsad_omp.c	2012-03-28 17:25:15 UTC (rev 13167)
+++ trunk/gsa/src/gsad_omp.c	2012-03-28 18:12:59 UTC (rev 13168)
@@ -5637,6 +5637,96 @@
 }
 
 /**
+ * @brief Export a target.
+ *
+ * @param[in]   credentials          Username and password for authentication.
+ * @param[in]   params               Request parameters.
+ * @param[out]  content_type         Content type return.
+ * @param[out]  content_disposition  Content disposition return.
+ * @param[out]  content_length       Content length return.
+ *
+ * @return Targets XML on success.  HTML result of XSL transformation
+ *         on error.
+ */
+char *
+export_targets_omp (credentials_t * credentials, params_t *params,
+                    enum content_type * content_type, char **content_disposition,
+                    gsize *content_length)
+{
+  entity_t entity;
+  gnutls_session_t session;
+  int socket;
+  char *content = NULL;
+  gchar *html;
+  const char *filter;
+
+  *content_length = 0;
+
+  switch (manager_connect (credentials, &socket, &session, &html))
+    {
+      case 0:
+        break;
+      case -1:
+        if (html)
+          return html;
+        /* Fall through. */
+      default:
+        return gsad_message (credentials,
+                             "Internal error", __FUNCTION__, __LINE__,
+                             "An internal error occurred while getting a target. "
+                             "The target could not be delivered. "
+                             "Diagnostics: Failure to connect to manager daemon.",
+                             "/omp?cmd=get_targets");
+    }
+
+  filter = params_value (params, "filter");
+  if (filter == NULL)
+    {
+      GString *xml;
+      xml = g_string_new ("<get_targets>");
+      g_string_append (xml, GSAD_MESSAGE_INVALID_PARAM ("Export Targets"));
+      g_string_append (xml, "</get_targets>");
+      openvas_server_close (socket, session);
+      return xsl_transform_omp (credentials, g_string_free (xml, FALSE));
+    }
+
+  if (openvas_server_sendf (&session,
+                            "<get_targets"
+                            " filter=\"%s\"/>",
+                            filter)
+      == -1)
+    {
+      openvas_server_close (socket, session);
+      return gsad_message (credentials,
+                           "Internal error", __FUNCTION__, __LINE__,
+                           "An internal error occurred while getting the targets. "
+                           "The targets could not be delivered. "
+                           "Diagnostics: Failure to send command to manager daemon.",
+                           "/omp?cmd=get_targets");
+    }
+
+  entity = NULL;
+  if (read_entity_and_text (&session, &entity, &content))
+    {
+      openvas_server_close (socket, session);
+      return gsad_message (credentials,
+                           "Internal error", __FUNCTION__, __LINE__,
+                           "An internal error occurred while getting the targets. "
+                           "The targets could not be delivered. "
+                           "Diagnostics: Failure to receive response from manager daemon.",
+                           "/omp?cmd=get_targets");
+    }
+
+  *content_type = GSAD_CONTENT_TYPE_APP_XML;
+  *content_disposition = g_strdup_printf ("attachment;"
+                                          " filename=\"targets.xml\"");
+  *content_length = strlen (content);
+  free_entity (entity);
+  openvas_server_close (socket, session);
+  return content;
+}
+
+/**
  * @brief Create config, get all configs, XSL transform the result.
  *
  * @param[in]  credentials  Username and password for authentication.

Modified: trunk/gsa/src/gsad_omp.h
===================================================================
--- trunk/gsa/src/gsad_omp.h	2012-03-28 17:25:15 UTC (rev 13167)
+++ trunk/gsa/src/gsad_omp.h	2012-03-28 18:12:59 UTC (rev 13168)
@@ -91,8 +91,10 @@
 char * get_schedule_omp (credentials_t *, params_t *);
 char * get_schedules_omp (credentials_t *, params_t *);
 
-char * get_target_omp (credentials_t *, params_t *params);
-char * get_targets_omp (credentials_t *, params_t *params);
+char * get_target_omp (credentials_t *, params_t *);
+char * get_targets_omp (credentials_t *, params_t *);
+char * export_targets_omp (credentials_t *, params_t *, enum content_type *,
+                           char **, gsize *);
 char * create_target_omp (credentials_t *, params_t *);
 char * delete_target_omp (credentials_t *, params_t *);
 char * delete_trash_target_omp (credentials_t *, params_t *);

Modified: trunk/gsa/src/html/omp.xsl
===================================================================
--- trunk/gsa/src/html/omp.xsl	2012-03-28 17:25:15 UTC (rev 13167)
+++ trunk/gsa/src/html/omp.xsl	2012-03-28 18:12:59 UTC (rev 13168)
@@ -5370,6 +5370,11 @@
          title="Help: Configure Targets (Targets)">
         <img src="/img/help.png"/>
       </a>
+      <a href="/omp?cmd=export_targets&filter={filters/term}&token={/envelope/token}"
+         title="Export Configs XML"
+         style="margin-left:3px;">
+        <img src="/img/download.png" border="0" alt="Export XML"/>
+      </a>
     </div>
     <div class="gb_window_part_content">
       <div style="background-color: #EEEEEE;">



More information about the Openvas-commits mailing list