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

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Fri Feb 12 18:57:18 CET 2010


Author: mattm
Date: 2010-02-12 18:56:58 +0100 (Fri, 12 Feb 2010)
New Revision: 6733

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/src/omp.xsl
Log:
	Add removal of notes.

	* src/gsad.c (init_validator): Add delete_note command.  Add "note_id"
	validator.
	(exec_omp_get): Handle command "delete_note".

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

	* src/gsad_omp.h: Add header accordingly.

	* src/omp.xsl (delete_note_response): New templates.
	(note) [detailed]: Add delete button.

Modified: trunk/gsa/ChangeLog
===================================================================
--- trunk/gsa/ChangeLog	2010-02-12 16:56:34 UTC (rev 6732)
+++ trunk/gsa/ChangeLog	2010-02-12 17:56:58 UTC (rev 6733)
@@ -1,5 +1,20 @@
 2010-02-12  Matthew Mundell <matthew.mundell at intevation.de>
 
+	Add removal of notes.
+
+	* src/gsad.c (init_validator): Add delete_note command.  Add "note_id"
+	validator.
+	(exec_omp_get): Handle command "delete_note".
+
+	* src/gsad_omp.c (delete_note_omp): New function.
+
+	* src/gsad_omp.h: Add header accordingly.
+
+	* src/omp.xsl (delete_note_response): New templates.
+	(note) [detailed]: Add delete button.
+
+2010-02-12  Matthew Mundell <matthew.mundell at intevation.de>
+
 	* src/html/src/omp.xsl (note) [detailed]: New template.
 	(result) [detailed]: Apply any notes.
 

Modified: trunk/gsa/src/gsad.c
===================================================================
--- trunk/gsa/src/gsad.c	2010-02-12 16:56:34 UTC (rev 6732)
+++ trunk/gsa/src/gsad.c	2010-02-12 17:56:58 UTC (rev 6733)
@@ -180,6 +180,7 @@
                          "|(delete_config)"
                          "|(delete_escalator)"
                          "|(delete_lsc_credential)"
+                         "|(delete_note)"
                          "|(delete_report)"
                          "|(delete_target)"
                          "|(delete_task)"
@@ -238,6 +239,7 @@
   /** @todo Because we fear injections, we're requiring weaker passwords! */
   openvas_validator_add (validator, "lsc_password", "^[-_[:alnum:], ;:\\./\\\\]{0,40}$");
   openvas_validator_add (validator, "max_result", "^[0-9]+$");
+  openvas_validator_add (validator, "note_id",    "^[a-z0-9\\-]+$");
   openvas_validator_add (validator, "name",       "^[-_[:alnum:], \\./]{1,80}$");
   openvas_validator_add (validator, "number",     "^[0-9]+$");
   openvas_validator_add (validator, "oid",        "^[0-9.]{1,80}$");
@@ -1878,6 +1880,7 @@
   const char *agent_format = NULL;
   const char *task_id      = NULL;
   const char *report_id    = NULL;
+  const char *note_id      = NULL;
   const char *format       = NULL;
   const char *package_format = NULL;
   const char *name         = NULL;
@@ -1927,6 +1930,12 @@
       if (openvas_validate (validator, "report_id", report_id))
         report_id = NULL;
 
+      note_id = MHD_lookup_connection_value (connection,
+                                             MHD_GET_ARGUMENT_KIND,
+                                             "note_id");
+      if (openvas_validate (validator, "note_id", note_id))
+        note_id = NULL;
+
       oid = MHD_lookup_connection_value (connection,
                                          MHD_GET_ARGUMENT_KIND,
                                          "oid");
@@ -2093,6 +2102,11 @@
   else if ((!strcmp (cmd, "delete_lsc_credential")) && (name != NULL))
     return delete_lsc_credential_omp (credentials, name);
 
+  else if ((!strcmp (cmd, "delete_note"))
+           && (note_id != NULL) && (strlen (note_id) < VAL_MAX_SIZE)
+           && (report_id != NULL) && (strlen (report_id) < VAL_MAX_SIZE))
+    return delete_note_omp (credentials, note_id, report_id);
+
   else if ((!strcmp (cmd, "delete_report")) && (report_id != NULL)
            && (strlen (report_id) < VAL_MAX_SIZE))
     return delete_report_omp (credentials, report_id, task_id);

Modified: trunk/gsa/src/gsad_omp.c
===================================================================
--- trunk/gsa/src/gsad_omp.c	2010-02-12 16:56:34 UTC (rev 6732)
+++ trunk/gsa/src/gsad_omp.c	2010-02-12 17:56:58 UTC (rev 6733)
@@ -3797,6 +3797,67 @@
 }
 
 /**
+ * @brief Delete note, get report, XSL transform the result.
+ *
+ * @param[in]  credentials  Username and password for authentication.
+ * @param[in]  note_id      ID of note.
+ * @param[in]  report_id    ID of current report.
+ * @param[in]  result_id    ID of result in report.
+ *
+ * @return Result of XSL transformation.
+ */
+char *
+delete_note_omp (credentials_t * credentials, const char *note_id,
+                 const char *report_id)
+{
+  entity_t entity;
+  char *text = NULL;
+  gnutls_session_t session;
+  int socket;
+
+  if (manager_connect (credentials, &socket, &session))
+    return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+                         "An internal error occurred while deleting a note. "
+                         "The note was not deleted. "
+                         "Diagnostics: Failure to connect to manager daemon.",
+                         "/omp?cmd=get_status");
+
+  if (openvas_server_sendf (&session,
+                            "<commands>"
+                            "<delete_note note_id=\"%s\" />"
+                            "<get_report"
+                            " notes=\"1\""
+                            " notes_details=\"1\""
+                            " report_id=\"%s\" />"
+                            "</commands>",
+                            note_id,
+                            report_id) == -1)
+    {
+      openvas_server_close (socket, session);
+      return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+                           "An internal error occurred while deleting a note. "
+                           "The note was not deleted. "
+                           "Diagnostics: Failure to send command to manager daemon.",
+                           "/omp?cmd=get_status");
+    }
+
+  entity = NULL;
+  if (read_entity_and_text (&session, &entity, &text))
+    {
+      openvas_server_close (socket, session);
+      return gsad_message ("Internal error", __FUNCTION__, __LINE__,
+                           "An internal error occurred while deleting a report. "
+                           "It is unclear whether the report has been deleted or not. "
+                           "Diagnostics: Failure to receive response from manager daemon.",
+                           "/omp?cmd=get_status");
+    }
+  free_entity (entity);
+
+  openvas_server_close (socket, session);
+  return xsl_transform_omp (credentials, text);
+}
+
+/**
  * @brief Get all system reports, 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	2010-02-12 16:56:34 UTC (rev 6732)
+++ trunk/gsa/src/gsad_omp.h	2010-02-12 17:56:58 UTC (rev 6733)
@@ -109,6 +109,8 @@
 char * export_config_omp (credentials_t *, const char *, enum content_type*,
                           char **, gsize *);
 
+char * delete_note_omp (credentials_t *, const char *, const char *);
+
 char * get_system_reports_omp (credentials_t *, const char *);
 char * get_system_report_omp (credentials_t *, const char *, const char *,
                               enum content_type*, char **, gsize *);

Modified: trunk/gsa/src/html/src/omp.xsl
===================================================================
--- trunk/gsa/src/html/src/omp.xsl	2010-02-12 16:56:34 UTC (rev 6732)
+++ trunk/gsa/src/html/src/omp.xsl	2010-02-12 17:56:58 UTC (rev 6733)
@@ -3888,6 +3888,22 @@
   <xsl:call-template name="html-report-details"/>
 </xsl:template>
 
+<!--     DELETE_NOTE_RESPONSE -->
+
+<xsl:template match="delete_note_response">
+  <xsl:call-template name="command_result_dialog">
+    <xsl:with-param name="operation">
+      Delete Note
+    </xsl:with-param>
+    <xsl:with-param name="status">
+      <xsl:value-of select="@status"/>
+    </xsl:with-param>
+    <xsl:with-param name="msg">
+      <xsl:value-of select="@status_text"/>
+    </xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+
 <!--     NOTE -->
 
 <xsl:template match="note" mode="detailed">
@@ -3895,6 +3911,12 @@
     <b>Note</b><br/>
     <pre><xsl:value-of select="text"/></pre>
     Last modified: <xsl:value-of select="modification_time"/>.
+    <div style="float:right; text-align:right">
+      <a href="/omp?cmd=delete_note&amp;note_id={@id}&amp;report_id={../../../../@id}"
+         title="Delete Note" style="margin-left:3px;">
+        <img src="/img/delete.png" border="0" alt="Delete"/>
+      </a>
+    </div>
   </div>
 </xsl:template>
 



More information about the Openvas-commits mailing list