[Openvas-commits] r3084 - in trunk/openvas-manager: . src
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Apr 9 15:29:54 CEST 2009
Author: mattm
Date: 2009-04-09 15:29:40 +0200 (Thu, 09 Apr 2009)
New Revision: 3084
Modified:
trunk/openvas-manager/ChangeLog
trunk/openvas-manager/src/manage.c
trunk/openvas-manager/src/manage.h
trunk/openvas-manager/src/otp.c
Log:
Write OTP report messages directly to the report on disk, instead of
buffering the messages in memory.
* src/manage.h (task_t): Correct run_status type. Add current_report.
Remove message arrays.
(make_task): Adjust annotation.
(make_report_id): Include in exportlocal annotation.
* src/manage.c (free_message): Remove.
(free_task, make_task): Handle current report. Remove message array
handling.
(create_report_file): New function. Body from src/otp.c save_report.
(start_task): Create report stream before starting
* src/otp.c (free_message): Enable. Take only one arg.
(write_message): Take stream and type args directly.
(write_timestamp): Take host arg.
(save_report): Just close the report stream.
(append_timestamp): New function.
(append_debug_message, append_hole_message, append_info_message)
(append_log_message, append_note_message): Write the message to the report
stream.
(process_otp_server_input): Free current_message after appending it.
Append timestamps in time cases. In SERVER_DEBUG_OID and SERVER_HOLE_OID
also check that the current_server_task exists. Move report saving from
HOST_END to SCAN_END.
Modified: trunk/openvas-manager/ChangeLog
===================================================================
--- trunk/openvas-manager/ChangeLog 2009-04-09 13:26:33 UTC (rev 3083)
+++ trunk/openvas-manager/ChangeLog 2009-04-09 13:29:40 UTC (rev 3084)
@@ -1,3 +1,32 @@
+2009-04-09 Matthew Mundell <matt at mundell.ukfsn.org>
+
+ Write OTP report messages directly to the report on disk, instead of
+ buffering the messages in memory.
+
+ * src/manage.h (task_t): Correct run_status type. Add current_report.
+ Remove message arrays.
+ (make_task): Adjust annotation.
+ (make_report_id): Include in exportlocal annotation.
+
+ * src/manage.c (free_message): Remove.
+ (free_task, make_task): Handle current report. Remove message array
+ handling.
+ (create_report_file): New function. Body from src/otp.c save_report.
+ (start_task): Create report stream before starting
+
+ * src/otp.c (free_message): Enable. Take only one arg.
+ (write_message): Take stream and type args directly.
+ (write_timestamp): Take host arg.
+ (save_report): Just close the report stream.
+ (append_timestamp): New function.
+ (append_debug_message, append_hole_message, append_info_message)
+ (append_log_message, append_note_message): Write the message to the report
+ stream.
+ (process_otp_server_input): Free current_message after appending it.
+ Append timestamps in time cases. In SERVER_DEBUG_OID and SERVER_HOLE_OID
+ also check that the current_server_task exists. Move report saving from
+ HOST_END to SCAN_END.
+
2009-04-09 Michael Wiegand <michael.wiegand at intevation.de>
* src/tests/common.c: Added connect_to_manager_host_port, a modification
@@ -5,7 +34,7 @@
ports. Made connect_to_manager a wrapper around
connect_to_manager_host_port using OPENVASMD_ADDRESS and OPENVASMD_PORT.
-2009-04-01 Matthew Mundell <matt at mundell.ukfsn.org>
+2009-04-08 Matthew Mundell <matt at mundell.ukfsn.org>
Cleanup and annotate more, from Splint.
Modified: trunk/openvas-manager/src/manage.c
===================================================================
--- trunk/openvas-manager/src/manage.c 2009-04-09 13:26:33 UTC (rev 3083)
+++ trunk/openvas-manager/src/manage.c 2009-04-09 13:29:40 UTC (rev 3084)
@@ -538,24 +538,7 @@
return TRUE;
}
-// FIX should be in otp.c
/**
- * @brief Free a message for g_ptr_array_foreach.
- *
- * @param[in] message Pointer to the message.
- * @param[in] dummy Dummy parameter.
- */
-static void
-free_message (/*@only@*/ gpointer message,
- /*@unused@*/ gpointer dummy)
-{
- message_t* msg = (message_t*) message;
- if (msg->description) free (msg->description);
- if (msg->oid) free (msg->oid);
- free (msg);
-}
-
-/**
* @brief Free a task.
*
* Free all the members of a task.
@@ -565,8 +548,7 @@
static void
free_task (/*@special@*/ /*@dependent@*/ task_t* task)
/*@ensures isnull task->name@*/
- /*@releases task->comment, task->open_ports, task->debugs, task->holes,
- task->infos, task->logs, task->notes@*/
+ /*@releases task->comment, task->open_ports@*/
{
tracef (" Freeing task %u: \"%s\" %s (%i) %.*s[...]\n\n",
task->id,
@@ -581,32 +563,12 @@
if (task->description) free (task->description);
if (task->start_time) free (task->start_time);
if (task->end_time) free (task->end_time);
- if (task->open_ports) (void) g_array_free (task->open_ports, TRUE);
- if (task->debugs)
+ if (task->current_report)
{
- g_ptr_array_foreach (task->debugs, free_message, NULL);
- (void) g_ptr_array_free (task->debugs, TRUE);
+ (void) fclose (task->current_report); // FIX check for error
+ task->current_report = NULL;
}
- if (task->holes)
- {
- g_ptr_array_foreach (task->holes, free_message, NULL);
- (void) g_ptr_array_free (task->holes, TRUE);
- }
- if (task->infos)
- {
- g_ptr_array_foreach (task->infos, free_message, NULL);
- (void) g_ptr_array_free (task->infos, TRUE);
- }
- if (task->logs)
- {
- g_ptr_array_foreach (task->logs, free_message, NULL);
- (void) g_ptr_array_free (task->logs, TRUE);
- }
- if (task->notes)
- {
- g_ptr_array_foreach (task->notes, free_message, NULL);
- (void) g_ptr_array_free (task->notes, TRUE);
- }
+ if (task->open_ports) (void) g_array_free (task->open_ports, TRUE);
}
/**
@@ -679,17 +641,8 @@
index->description_size = 0;
index->run_status = TASK_STATUS_NEW;
index->report_count = 0;
+ index->current_report = NULL;
index->open_ports = NULL;
- index->debugs = g_ptr_array_new ();
- index->debugs_size = 0;
- index->holes = g_ptr_array_new ();
- index->holes_size = 0;
- index->infos = g_ptr_array_new ();
- index->infos_size = 0;
- index->logs = g_ptr_array_new ();
- index->logs_size = 0;
- index->notes = g_ptr_array_new ();
- index->notes_size = 0;
/*@=mustfreeonly@*/
tracef (" Made task %u at %p\n", index->id, index);
num_tasks++;
@@ -1180,6 +1133,125 @@
}
/**
+ * @brief Create the current report file for a task.
+ *
+ * @param[in] task The task.
+ *
+ * @return 0 success, -1 failed to open file, -2 ID or credentials error,
+ * -3 failed to symlink file to task dir, -4 failed to create dir,
+ * -5 failed to generate ID, -6 report file already exists.
+ */
+static int
+create_report_file (task_t* task)
+{
+ const char* id;
+ char* report_id;
+ gchar* user_dir_name;
+ gchar* dir_name;
+ gchar* name;
+ gchar* symlink_name;
+ FILE* file;
+
+ if (current_credentials.username == NULL) return -2;
+
+ assert (task->current_report == NULL);
+ if (task->current_report) return -6;
+
+ tracef (" Saving report (%s) on task %u\n", task->start_time, task->id);
+
+ if (task_id_string (task, &id)) return -2;
+
+ user_dir_name = g_build_filename (PREFIX
+ "/var/lib/openvas/mgr/users/",
+ current_credentials.username,
+ "reports",
+ NULL);
+
+ /* Ensure user reports directory exists. */
+
+ if (g_mkdir_with_parents (user_dir_name, 33216 /* -rwx------ */) == -1)
+ {
+ fprintf (stderr, "Failed to create report dir %s: %s\n",
+ user_dir_name,
+ strerror (errno));
+ g_free (user_dir_name);
+ return -4;
+ }
+
+ /* Generate report directory name. */
+
+ report_id = make_report_id ();
+ if (report_id == NULL)
+ {
+ g_free (user_dir_name);
+ return -5;
+ }
+
+ dir_name = g_build_filename (PREFIX
+ "/var/lib/openvas/mgr/users/",
+ current_credentials.username,
+ "tasks",
+ id,
+ "reports",
+ report_id,
+ NULL);
+
+ symlink_name = g_build_filename (user_dir_name, report_id, NULL);
+ free (report_id);
+ g_free (user_dir_name);
+
+ /* Ensure task report directory exists. */
+
+ if (g_mkdir_with_parents (dir_name, 33216 /* -rwx------ */) == -1)
+ {
+ fprintf (stderr, "Failed to create report dir %s: %s\n",
+ dir_name,
+ strerror (errno));
+ g_free (dir_name);
+ g_free (symlink_name);
+ return -4;
+ }
+
+ /* Link report directory into task directory. */
+
+ if (symlink (dir_name, symlink_name))
+ {
+ (void) rmdir (dir_name);
+ fprintf (stderr, "Failed to symlink %s to %s\n",
+ dir_name,
+ symlink_name);
+ g_free (dir_name);
+ g_free (symlink_name);
+ return -3;
+ }
+
+ /* Save report stream. */
+
+ name = g_build_filename (dir_name, "report.nbe", NULL);
+
+ file = fopen (name, "w");
+ if (file == NULL)
+ {
+ (void) rmdir (dir_name);
+ fprintf (stderr, "Failed to open report file %s: %s\n",
+ name,
+ strerror (errno));
+ g_free (dir_name);
+ g_free (name);
+ g_free (symlink_name);
+ return -1;
+ }
+
+ task->current_report = file;
+ task->report_count++;
+
+ g_free (dir_name);
+ g_free (name);
+ g_free (symlink_name);
+ return 0;
+}
+
+/**
* @brief Start a task.
*
* Use \ref send_to_server to queue the task start sequence in \ref to_server.
@@ -1193,14 +1265,23 @@
{
tracef (" start task %u\n", task->id);
+ // FIX atomic
+
if (task->run_status == TASK_STATUS_REQUESTED
|| task->run_status == TASK_STATUS_RUNNING)
return 0;
+ /* Create the report file. */
+
+ if (create_report_file (task)) return -2;
+
+ /* Start the task. */
+
if (send_to_server ("CLIENT <|> PREFERENCES <|>\n")) return -1;
if (send_to_server ("ntp_keep_communication_alive <|> yes\n")) return -1;
if (send_to_server ("ntp_client_accepts_notes <|> yes\n")) return -1;
+ // FIX still getting FINISHED msgs
if (send_to_server ("ntp_opt_show_end <|> no\n")) return -1;
//if (send_to_server ("ntp_short_status <|> yes\n")) return -1;
if (send_to_server ("plugin_set <|> \n")) return -1;
@@ -1238,7 +1319,6 @@
if (task->open_ports) (void) g_array_free (task->open_ports, TRUE);
task->open_ports = g_array_new (FALSE, FALSE, (guint) sizeof (port_t));
task->open_ports_size = 0;
- // FIX holes,... reset_task_data (task);
current_server_task = task;
Modified: trunk/openvas-manager/src/manage.h
===================================================================
--- trunk/openvas-manager/src/manage.h 2009-04-09 13:26:33 UTC (rev 3083)
+++ trunk/openvas-manager/src/manage.h 2009-04-09 13:29:40 UTC (rev 3084)
@@ -26,6 +26,7 @@
#ifndef OPENVAS_MANAGER_MANAGE_H
#define OPENVAS_MANAGER_MANAGE_H
+#include <stdio.h>
#include <glib.h>
#include <ossp/uuid.h>
@@ -111,26 +112,23 @@
char* description; ///< Description.
gsize description_length; ///< Length of description.
gsize description_size; ///< Actual size allocated for description.
- short run_status; ///< Run status of task.
+ task_status_t run_status; ///< Run status of task.
char* start_time; ///< Time the task last started.
char* end_time; ///< Time the task last ended.
unsigned int report_count; ///< The number of existing reports on the task.
/* The rest are for the current scan. */
+ /*@null@*/
+ FILE* current_report; ///< Report stream during the task.
char* attack_state; ///< Attack status.
unsigned int current_port; ///< Port currently under test.
unsigned int max_port; ///< Last port to test.
/*@null@*/
GArray *open_ports; ///< Open ports that the server has found.
int open_ports_size; ///< Number of open ports.
- GPtrArray *debugs; ///< Identified messages of class "debug".
int debugs_size; ///< Number of debugs.
- GPtrArray *holes; ///< Identified messages of class "hole".
int holes_size; ///< Number of holes.
- GPtrArray *infos; ///< Identified messages of class "info".
int infos_size; ///< Number of infos.
- GPtrArray *logs; ///< Identified messages of class "log".
int logs_size; ///< Number of logs.
- GPtrArray *notes; ///< Identified messages of class "note".
int notes_size; ///< Number of notes.
} task_t;
@@ -157,7 +155,7 @@
/*@null@*/ /*@dependent@*/ /*@special@*/
task_t*
make_task (/*@only@*/ char*, unsigned int, /*@only@*/ char*)
- /*@defines result->debugs, result->open_ports@*/
+ /*@defines result->open_ports@*/
/*@ensures isnull result->description@*/;
int
@@ -205,11 +203,11 @@
// FIX how is this doc'd?
#define OVAS_MANAGE_REPORT_ID_LENGTH UUID_LEN_STR
+/*@-exportlocal@*/
/*@only@*/ /*@null@*/
char*
make_report_id ();
-/*@-exportlocal@*/
gchar*
report_path_task_name (gchar*);
Modified: trunk/openvas-manager/src/otp.c
===================================================================
--- trunk/openvas-manager/src/otp.c 2009-04-09 13:26:33 UTC (rev 3083)
+++ trunk/openvas-manager/src/otp.c 2009-04-09 13:29:40 UTC (rev 3084)
@@ -193,23 +193,19 @@
return message;
}
-#if 0
-// FIX currently in manage.c
/**
* @brief Free a message for g_ptr_array_foreach.
*
* @param[in] message Pointer to the message.
* @param[in] dummy Dummy parameter.
*/
-void
-free_message (gpointer message, gpointer dummy)
+static void
+free_message (/*@out@*/ /*@only@*/ message_t* message)
{
- message_t* msg = (message_t*) message;
- if (msg->description) free (msg->description);
- if (msg->oid) free (msg->oid);
- free (msg);
+ if (message->description) free (message->description);
+ if (message->oid) free (message->oid);
+ free (message);
}
-#endif
/**
* @brief Set the description of a message.
@@ -255,31 +251,14 @@
* @param[in] message_data The stream and message type.
*/
static void
-write_message (gpointer message, gpointer message_data)
+write_message (message_t* message, FILE* stream, char* type)
{
- message_t* msg = (message_t*) message;
- message_data_t* data = (message_data_t*) message_data;
- fprintf (data->stream, "results|%s|%s|", "dik", "dik"); // FIX
- print_port (data->stream, &msg->port);
- fprintf (data->stream, "|%s|%s|%s|\n",
- msg->oid, data->type, msg->description);
+ fprintf (stream, "results|%s|%s|", "dik", "dik"); // FIX
+ print_port (stream, &message->port);
+ fprintf (stream, "|%s|%s|%s|\n", message->oid, type, message->description);
}
/**
- * @brief Write an array of messages to a stream.
- *
- * @param[in] file The stream.
- * @param[in] messages Array of messages.
- * @param[in] type Type of message.
- */
-static void
-write_messages (FILE* file, GPtrArray* messages, char* type)
-{
- message_data_t data = { file, type };
- g_ptr_array_foreach (messages, write_message, &data);
-}
-
-/**
* @brief Write a timestamp to a stream.
*
* @param[in] file The stream.
@@ -287,220 +266,142 @@
* @param[in] time The time.
*/
static void
-write_timestamp (FILE* file, char* type, char* time)
+write_timestamp (FILE* file, const char* host, const char* type,
+ const char* time)
{
- fprintf (file, "timestamps|%s|%s|%s|%s|\n", "dik", "dik", type, time); // FIX
+ fprintf (file, "timestamps||%s|%s|%s|\n", host, type, time);
}
/**
- * @brief Save a report to a file.
+ * @brief Close the current report.
*
- * @param[in] task The task.
+ * @param[in] task The task.
*
- * @return 0 success, -1 failed to open file, -2 failed to close file,
- * -3 failed to symlink file to task dir, -4 failed to create dir,
- * -5 failed to generate ID.
+ * @return 0 success, -1 current_report NULL, -2 failed to close file.
*/
static int
save_report (task_t* task)
{
- const char* id;
- char* report_id;
- gchar* user_dir_name;
- gchar* dir_name;
- gchar* name;
- gchar* symlink_name;
- FILE* file;
+ assert (task->current_report != NULL);
+ if (task->current_report == NULL) return -1;
- if (current_credentials.username == NULL) return -1;
-
tracef (" Saving report (%s) on task %u\n", task->start_time, task->id);
- if (task_id_string (task, &id)) return -1;
-
- user_dir_name = g_build_filename (PREFIX
- "/var/lib/openvas/mgr/users/",
- current_credentials.username,
- "reports",
- NULL);
-
- /* Ensure user reports directory exists. */
-
- if (g_mkdir_with_parents (user_dir_name, 33216 /* -rwx------ */) == -1)
+ if (fclose (task->current_report))
{
- fprintf (stderr, "Failed to create report dir %s: %s\n",
- user_dir_name,
- strerror (errno));
- g_free (user_dir_name);
- return -4;
- }
-
- /* Generate report directory name. */
-
- report_id = make_report_id ();
- if (report_id == NULL)
- {
- g_free (user_dir_name);
- return -5;
- }
-
- dir_name = g_build_filename (PREFIX
- "/var/lib/openvas/mgr/users/",
- current_credentials.username,
- "tasks",
- id,
- "reports",
- report_id,
- NULL);
-
- symlink_name = g_build_filename (user_dir_name, report_id, NULL);
- free (report_id);
- g_free (user_dir_name);
-
- /* Ensure task report directory exists. */
-
- if (g_mkdir_with_parents (dir_name, 33216 /* -rwx------ */) == -1)
- {
- fprintf (stderr, "Failed to create report dir %s: %s\n",
- dir_name,
- strerror (errno));
- g_free (dir_name);
- g_free (symlink_name);
- return -4;
- }
-
- /* Link report directory into task directory. */
-
- if (symlink (dir_name, symlink_name))
- {
- (void) rmdir (dir_name);
- fprintf (stderr, "Failed to symlink %s to %s\n",
- dir_name,
- symlink_name);
- g_free (dir_name);
- g_free (symlink_name);
- return -3;
- }
-
- /* Write report. */
-
- name = g_build_filename (dir_name, "report.nbe", NULL);
-
- file = fopen (name, "w");
- if (file == NULL)
- {
- (void) rmdir (dir_name);
- fprintf (stderr, "Failed to open report file %s: %s\n",
- name,
- strerror (errno));
- g_free (dir_name);
- g_free (name);
- g_free (symlink_name);
- return -1;
- }
-
- write_timestamp (file, "scan_start", task->start_time); // FIX
- write_timestamp (file, "host_start", task->start_time);
-
- //write_messages (file, task->open_ports, task->open_ports_size); FIX
- write_messages (file, task->debugs, "Debug Message");
- write_messages (file, task->holes, "Security Hole");
- write_messages (file, task->infos, "Security Warning");
- write_messages (file, task->logs, "Log Message");
- write_messages (file, task->notes, "Security Note");
-
- write_timestamp (file, "host_end", task->end_time);
- write_timestamp (file, "scan_end", task->end_time); // FIX
-
- if (fclose (file))
- {
- (void) unlink (name);
- (void) rmdir (dir_name);
- fprintf (stderr, "Failed to close report file %s: %s\n",
- name,
- strerror (errno));
- g_free (dir_name);
- g_free (name);
- g_free (symlink_name);
+ perror ("Failed to close report stream");
return -2;
}
+ task->current_report = NULL;
- task->report_count++;
+ // FIX save report.nbe.cnt or equiv (task->*_size)
- g_free (dir_name);
- g_free (name);
- g_free (symlink_name);
return 0;
}
-/* Appending messages to tasks. */ // FIX ... to reports.
+/* Appending messages to reports. */
/**
- * @brief Append a debug message to a task.
+ * @brief Append a timestamp to a report.
*
* @param[in] task Task.
* @param[in] message Message.
*/
static void
-append_debug_message (task_t* task, /*@keep@*/ message_t* message)
+append_timestamp (task_t* task, const char* host, const char* type,
+ const char* time)
{
- g_ptr_array_add (task->debugs, (gpointer) message);
- task->debugs_size++;
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ write_timestamp (task->current_report, host, type, time);
}
/**
- * @brief Append a hole message to a task.
+ * @brief Append a debug message to a report.
*
* @param[in] task Task.
* @param[in] message Message.
*/
static void
-append_hole_message (task_t* task, /*@keep@*/ message_t* message)
+append_debug_message (task_t* task, message_t* message)
{
- g_ptr_array_add (task->holes, (gpointer) message);
- task->holes_size++;
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ {
+ write_message (message, task->current_report, "Debug Message");
+ task->debugs_size++;
+ }
}
/**
- * @brief Append an info message to a task.
+ * @brief Append a hole message to a report.
*
* @param[in] task Task.
* @param[in] message Message.
*/
static void
-append_info_message (task_t* task, /*@keep@*/ message_t* message)
+append_hole_message (task_t* task, message_t* message)
{
- g_ptr_array_add (task->infos, (gpointer) message);
- task->infos_size++;
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ {
+ write_message (message, task->current_report, "Security Hole");
+ task->holes_size++;
+ }
}
/**
- * @brief Append a log message to a task.
+ * @brief Append an info message to a report.
*
* @param[in] task Task.
* @param[in] message Message.
*/
static void
-append_log_message (task_t* task, /*@keep@*/ message_t* message)
+append_info_message (task_t* task, message_t* message)
{
- g_ptr_array_add (task->logs, (gpointer) message);
- task->logs_size++;
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ {
+ write_message (message, task->current_report, "Security Warning");
+ task->infos_size++;
+ }
}
/**
- * @brief Append a note message to a task.
+ * @brief Append a log message to a report.
*
* @param[in] task Task.
* @param[in] message Message.
*/
static void
-append_note_message (task_t* task, /*@keep@*/ message_t* message)
+append_log_message (task_t* task, message_t* message)
{
- g_ptr_array_add (task->notes, (gpointer) message);
- task->notes_size++;
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ {
+ write_message (message, task->current_report, "Log Message");
+ task->logs_size++;
+ }
}
+/**
+ * @brief Append a note message to a report.
+ *
+ * @param[in] task Task.
+ * @param[in] message Message.
+ */
+static void
+append_note_message (task_t* task, message_t* message)
+{
+ assert (task->current_report != NULL);
+ if (task->current_report)
+ {
+ write_message (message, task->current_report, "Security Note");
+ task->notes_size++;
+ }
+}
+
/* Server preferences. */
@@ -1325,12 +1226,13 @@
}
case SERVER_DEBUG_OID:
{
- if (current_message)
+ if (current_message != NULL && current_server_task != NULL)
{
char* oid = g_strdup (field);
set_message_oid (current_message, oid);
append_debug_message (current_server_task, current_message);
+ free_message (current_message);
current_message = NULL;
}
set_server_state (SERVER_DONE);
@@ -1391,12 +1293,13 @@
}
case SERVER_HOLE_OID:
{
- if (current_message)
+ if (current_message != NULL && current_server_task != NULL)
{
char* oid = g_strdup (field);
set_message_oid (current_message, oid);
append_hole_message (current_server_task, current_message);
+ free_message (current_message);
current_message = NULL;
}
set_server_state (SERVER_DONE);
@@ -1463,6 +1366,7 @@
set_message_oid (current_message, oid);
append_info_message (current_server_task, current_message);
+ free_message (current_message);
current_message = NULL;
}
set_server_state (SERVER_DONE);
@@ -1529,6 +1433,7 @@
set_message_oid (current_message, oid);
append_log_message (current_server_task, current_message);
+ free_message (current_message);
current_message = NULL;
}
set_server_state (SERVER_DONE);
@@ -1595,6 +1500,7 @@
set_message_oid (current_message, oid);
append_note_message (current_server_task, current_message);
+ free_message (current_message);
current_message = NULL;
}
set_server_state (SERVER_DONE);
@@ -1857,7 +1763,7 @@
}
case SERVER_TIME_HOST_START_HOST:
{
- //if (strncasecmp ("chiles", field, 11) == 0) // FIX
+ // FIX pass to append_timestamp
set_server_state (SERVER_TIME_HOST_START_TIME);
break;
}
@@ -1870,6 +1776,11 @@
if (current_server_task->start_time)
free (current_server_task->start_time);
current_server_task->start_time = time;
+
+ append_timestamp (current_server_task,
+ "dik", // FIX
+ "host_start",
+ field);
}
set_server_state (SERVER_DONE);
switch (parse_server_done (&messages))
@@ -1884,7 +1795,7 @@
}
case SERVER_TIME_HOST_END_HOST:
{
- //if (strncasecmp ("chiles", field, 11) == 0) // FIX
+ // FIX pass to append_timestamp
set_server_state (SERVER_TIME_HOST_END_TIME);
break;
}
@@ -1893,12 +1804,17 @@
if (current_server_task)
{
char* time = g_strdup (field);
+
tracef (" server got end time: %s\n", time);
+
if (current_server_task->end_time)
free (current_server_task->end_time);
current_server_task->end_time = time;
- if (save_report (current_server_task)) return -1;
+ append_timestamp (current_server_task,
+ "dik", // FIX
+ "host_end",
+ field);
}
set_server_state (SERVER_DONE);
switch (parse_server_done (&messages))
@@ -1914,7 +1830,13 @@
case SERVER_TIME_SCAN_START:
{
if (current_server_task)
- current_server_task->run_status = TASK_STATUS_RUNNING;
+ {
+ current_server_task->run_status = TASK_STATUS_RUNNING;
+ append_timestamp (current_server_task,
+ "",
+ "scan_start",
+ field);
+ }
set_server_state (SERVER_DONE);
switch (parse_server_done (&messages))
{
@@ -1929,7 +1851,14 @@
case SERVER_TIME_SCAN_END:
{
if (current_server_task)
- current_server_task->run_status = TASK_STATUS_DONE;
+ {
+ current_server_task->run_status = TASK_STATUS_DONE;
+ append_timestamp (current_server_task,
+ "",
+ "scan_end",
+ field);
+ }
+ if (save_report (current_server_task)) return -1;
current_server_task = NULL;
set_server_state (SERVER_DONE);
switch (parse_server_done (&messages))
More information about the Openvas-commits
mailing list