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

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Mon Apr 2 16:54:18 CEST 2012


Author: mattm
Date: 2012-04-02 16:54:18 +0200 (Mon, 02 Apr 2012)
New Revision: 13182

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/gsad.xsl
   trunk/gsa/src/html/omp.xsl
Log:
	Add new, list and export icons on Target Details page.

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

	* src/gsad_omp.c (new_target): Add target ID to XML for icon on Target
	Details page.
	(create_target_omp): If target ID present, go to Target Details page.
	(get_target): New function.  Body from get_target_omp.
	(get_target_omp): Pass through to get_target.
	(export_target_omp): New function.

	* src/gsad_omp.h: Add header accordingly.

	* src/html/omp.xsl (html-gsa-logo): Add create_target indicator match for
	Target Details page.
	(html-create-target-form): Add new, list and export icons.

Modified: trunk/gsa/ChangeLog
===================================================================
--- trunk/gsa/ChangeLog	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/ChangeLog	2012-04-02 14:54:18 UTC (rev 13182)
@@ -1,5 +1,24 @@
 2012-04-02  Matthew Mundell <matthew.mundell at greenbone.net>
 
+	Add new, list and export icons on Target Details page.
+
+	* src/gsad.c (init_validator, exec_omp_get): Add export_target.
+
+	* src/gsad_omp.c (new_target): Add target ID to XML for icon on Target
+	Details page.
+	(create_target_omp): If target ID present, go to Target Details page.
+	(get_target): New function.  Body from get_target_omp.
+	(get_target_omp): Pass through to get_target.
+	(export_target_omp): New function.
+
+	* src/gsad_omp.h: Add header accordingly.
+
+	* src/html/omp.xsl (html-gsa-logo): Add create_target indicator match for
+	Target Details page.
+	(html-create-target-form): Add new, list and export icons.
+
+2012-04-02  Matthew Mundell <matthew.mundell at greenbone.net>
+
 	* src/html/omp.xsl (html-targets-table): Add Rows field to filtering.
 
 2012-04-02  Matthew Mundell <matthew.mundell at greenbone.net>

Modified: trunk/gsa/src/gsad.c
===================================================================
--- trunk/gsa/src/gsad.c	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/src/gsad.c	2012-04-02 14:54:18 UTC (rev 13182)
@@ -558,6 +558,7 @@
                          "|(export_port_list)"
                          "|(export_preference_file)"
                          "|(export_report_format)"
+                         "|(export_target)"
                          "|(export_targets)"
                          "|(get_agent)"
                          "|(get_agents)"
@@ -1713,6 +1714,10 @@
     return export_report_format_omp (credentials, params, content_type,
                                      content_disposition, response_size);
 
+  else if (!strcmp (cmd, "export_target"))
+    return export_target_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);

Modified: trunk/gsa/src/gsad_omp.c
===================================================================
--- trunk/gsa/src/gsad_omp.c	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/src/gsad_omp.c	2012-04-02 14:54:18 UTC (rev 13182)
@@ -4076,12 +4076,20 @@
   gnutls_session_t session;
   int socket;
   gchar *html, *end;
-  const char *filter;
+  const char *filter, *target_id;
 
   filter = params_value (params, "filter");
   if (filter == NULL)
     filter = "";
 
+  target_id = params_value (params, "target_id");
+  if (target_id == NULL && params_given (params, "target_id"))
+    return gsad_message (credentials,
+                         "Internal error", __FUNCTION__, __LINE__,
+                         "An internal error occurred while saving a credential. "
+                         "Diagnostics: Error in parameter target_id.",
+                         "/omp?cmd=get_targets");
+
   switch (manager_connect (credentials, &socket, &session, &html))
     {
       case 0:
@@ -4193,8 +4201,10 @@
     }
 
   end = g_markup_printf_escaped ("<filters><term>%s</term></filters>"
+                                 "<target id=\"%s\"/>"
                                  "</new_target>",
-                                 filter);
+                                 filter,
+                                 target_id ? target_id : "0");
   g_string_append (xml, end);
   g_free (end);
 
@@ -4233,6 +4243,8 @@
       return html;                                                             \
     }
 
+char *
+get_target (credentials_t *, params_t *, const char *);
 
 /**
  * @brief Create a target, get all targets, XSL transform the result.
@@ -4251,7 +4263,7 @@
   gchar *html;
   const char *name, *hosts, *target_locator, *comment, *port_list_id;
   const char *target_credential, *port, *target_smb_credential, *target_source;
-  const char *filter;
+  const char *filter, *target_id;
 
   switch (manager_connect (credentials, &socket, &session, &html))
     {
@@ -4282,6 +4294,7 @@
   port = params_value (params, "port");
   target_smb_credential = params_value (params, "lsc_smb_credential_id");
   filter = params_value (params, "filter");
+  target_id = params_value (params, "target_id");
 
   CHECK (name)
   else CHECK (target_source)
@@ -4423,6 +4436,16 @@
           return html;
         }
 
+      if (target_id && strcmp (target_id, "0"))
+        {
+          gchar *ret;
+          g_string_free (xml, TRUE);
+          ret = get_target (credentials, params, response);
+          g_free (response);
+          free_entity (entity);
+          return ret;
+        }
+
       g_string_append (xml, response);
       g_free (response);
       free_entity (entity);
@@ -5584,11 +5607,13 @@
  *
  * @param[in]  credentials  Username and password for authentication.
  * @param[in]  params       Request parameters.
+ * @param[in]  extra_xml    Extra XML to insert inside page element.
  *
  * @return Result of XSL transformation.
  */
 char *
-get_target_omp (credentials_t * credentials, params_t *params)
+get_target (credentials_t * credentials, params_t *params,
+            const char *extra_xml)
 {
   GString *xml;
   gnutls_session_t session;
@@ -5626,6 +5651,9 @@
 
   xml = g_string_new ("<get_target>");
 
+  if (extra_xml)
+    g_string_append (xml, extra_xml);
+
   /* Get the target. */
 
   if (openvas_server_sendf (&session,
@@ -5670,6 +5698,20 @@
 }
 
 /**
+ * @brief Get one target, XSL transform the result.
+ *
+ * @param[in]  credentials  Username and password for authentication.
+ * @param[in]  params       Request parameters.
+ *
+ * @return Result of XSL transformation.
+ */
+char *
+get_target_omp (credentials_t * credentials, params_t *params)
+{
+  return get_target (credentials, params, NULL);
+}
+
+/**
  * @brief Get all targets, XSL transform the result.
  *
  * @param[in]  credentials  Username and password for authentication.
@@ -5765,6 +5807,95 @@
  * @param[out]  content_disposition  Content disposition return.
  * @param[out]  content_length       Content length return.
  *
+ * @return Target XML on success.  HTML result of XSL transformation
+ *         on error.
+ */
+char *
+export_target_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 *target_id;
+
+  *content_length = 0;
+
+  target_id = params_value (params, "target_id");
+
+  if (target_id == NULL)
+    return gsad_message (credentials,
+                         "Internal error", __FUNCTION__, __LINE__,
+                         "An internal error occurred while exporting a target. "
+                         "Diagnostics: Required parameter was NULL.",
+                         "/omp?cmd=get_targets");
+
+  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");
+    }
+
+  if (openvas_server_sendf (&session,
+                            "<get_targets"
+                            " target_id=\"%s\"/>",
+                            target_id)
+      == -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=\"target-%s.xml\"",
+                                          target_id);
+  *content_length = strlen (content);
+  free_entity (entity);
+  openvas_server_close (socket, session);
+  return content;
+}
+
+/**
+ * @brief Export a list of 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.
  */

Modified: trunk/gsa/src/gsad_omp.h
===================================================================
--- trunk/gsa/src/gsad_omp.h	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/src/gsad_omp.h	2012-04-02 14:54:18 UTC (rev 13182)
@@ -95,6 +95,8 @@
 char * get_targets_omp (credentials_t *, params_t *);
 char * export_targets_omp (credentials_t *, params_t *, enum content_type *,
                            char **, gsize *);
+char * export_target_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/gsad.xsl
===================================================================
--- trunk/gsa/src/html/gsad.xsl	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/src/html/gsad.xsl	2012-04-02 14:54:18 UTC (rev 13182)
@@ -709,6 +709,8 @@
                              mode="response-indicator"/>
         <xsl:apply-templates select="get_target/commands_response/delete_target_response"
                              mode="response-indicator"/>
+        <xsl:apply-templates select="get_target/create_target_response"
+                             mode="response-indicator"/>
         <xsl:apply-templates select="get_target/gsad_msg"
                              mode="response-indicator"/>
         <xsl:apply-templates select="get_targets/gsad_msg"

Modified: trunk/gsa/src/html/omp.xsl
===================================================================
--- trunk/gsa/src/html/omp.xsl	2012-04-02 12:18:50 UTC (rev 13181)
+++ trunk/gsa/src/html/omp.xsl	2012-04-02 14:54:18 UTC (rev 13182)
@@ -5200,6 +5200,7 @@
         <input type="hidden" name="token" value="{/envelope/token}"/>
         <input type="hidden" name="cmd" value="create_target"/>
         <input type="hidden" name="caller" value="{/envelope/caller}"/>
+        <input type="hidden" name="target_id" value="{target/@id}"/>
         <input type="hidden" name="filter" value="{filters/term}"/>
         <table border="0" cellspacing="0" cellpadding="3" width="100%">
           <tr>
@@ -5644,6 +5645,19 @@
          title="Help: Configure Targets (Target Details)">
          <img src="/img/help.png"/>
        </a>
+       <a href="/omp?cmd=new_target&filter={filters/term}&target_id={@id}&token={/envelope/token}"
+          title="New Target">
+         <img src="/img/new.png" border="0" style="margin-left:3px;"/>
+       </a>
+       <a href="/omp?cmd=get_targets&filter={filters/term}&token={/envelope/token}"
+          title="Targets" style="margin-left:3px;">
+         <img src="/img/list.png" border="0" alt="Targets"/>
+       </a>
+       <a href="/omp?cmd=export_target&target_id={@id}&filter={filters/term}&token={/envelope/token}"
+          title="Export Target XML"
+          style="margin-left:3px;">
+         <img src="/img/download.png" border="0" alt="Export XML"/>
+       </a>
     </div>
     <div class="gb_window_part_content">
       <div class="float_right">



More information about the Openvas-commits mailing list