[Openvas-commits] r9002 - in trunk/openvas-manager: . src
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Sep 9 14:32:10 CEST 2010
Author: mattm
Date: 2010-09-09 14:32:05 +0200 (Thu, 09 Sep 2010)
New Revision: 9002
Modified:
trunk/openvas-manager/ChangeLog
trunk/openvas-manager/src/manage.c
trunk/openvas-manager/src/manage.h
trunk/openvas-manager/src/manage_sql.c
Log:
Add HTTP GET escalator.
* src/manage.c (escalator_method_t): Add ESCALATOR_METHOD_HTTP_GET.
* src/manage.c (escalator_method_name, escalator_method_from_name): Add
HTTP GET escalator.
* src/manage_sql.c (http_get): New function.
(escalate_1): Add ESCALATOR_METHOD_HTTP_GET case.
Modified: trunk/openvas-manager/ChangeLog
===================================================================
--- trunk/openvas-manager/ChangeLog 2010-09-08 21:20:00 UTC (rev 9001)
+++ trunk/openvas-manager/ChangeLog 2010-09-09 12:32:05 UTC (rev 9002)
@@ -1,3 +1,15 @@
+2010-09-09 Matthew Mundell <matthew.mundell at greenbone.net>
+
+ Add HTTP GET escalator.
+
+ * src/manage.c (escalator_method_t): Add ESCALATOR_METHOD_HTTP_GET.
+
+ * src/manage.c (escalator_method_name, escalator_method_from_name): Add
+ HTTP GET escalator.
+
+ * src/manage_sql.c (http_get): New function.
+ (escalate_1): Add ESCALATOR_METHOD_HTTP_GET case.
+
2010-09-08 Matthew Mundell <matthew.mundell at greenbone.net>
* src/report_formats/HTML/HTML.xsl (wrap): Replace with line-tokenizing
Modified: trunk/openvas-manager/src/manage.c
===================================================================
--- trunk/openvas-manager/src/manage.c 2010-09-08 21:20:00 UTC (rev 9001)
+++ trunk/openvas-manager/src/manage.c 2010-09-09 12:32:05 UTC (rev 9002)
@@ -300,9 +300,10 @@
{
switch (method)
{
- case ESCALATOR_METHOD_EMAIL: return "Email";
- case ESCALATOR_METHOD_SYSLOG: return "Syslog";
- default: return "Internal Error";
+ case ESCALATOR_METHOD_EMAIL: return "Email";
+ case ESCALATOR_METHOD_HTTP_GET: return "HTTP Get";
+ case ESCALATOR_METHOD_SYSLOG: return "Syslog";
+ default: return "Internal Error";
}
}
@@ -352,6 +353,8 @@
{
if (strcasecmp (name, "Email") == 0)
return ESCALATOR_METHOD_EMAIL;
+ if (strcasecmp (name, "HTTP Get") == 0)
+ return ESCALATOR_METHOD_HTTP_GET;
if (strcasecmp (name, "Syslog") == 0)
return ESCALATOR_METHOD_SYSLOG;
return ESCALATOR_METHOD_ERROR;
Modified: trunk/openvas-manager/src/manage.h
===================================================================
--- trunk/openvas-manager/src/manage.h 2010-09-08 21:20:00 UTC (rev 9001)
+++ trunk/openvas-manager/src/manage.h 2010-09-09 12:32:05 UTC (rev 9002)
@@ -199,6 +199,7 @@
{
ESCALATOR_METHOD_ERROR,
ESCALATOR_METHOD_EMAIL,
+ ESCALATOR_METHOD_HTTP_GET,
ESCALATOR_METHOD_SYSLOG
} escalator_method_t;
Modified: trunk/openvas-manager/src/manage_sql.c
===================================================================
--- trunk/openvas-manager/src/manage_sql.c 2010-09-08 21:20:00 UTC (rev 9001)
+++ trunk/openvas-manager/src/manage_sql.c 2010-09-09 12:32:05 UTC (rev 9002)
@@ -4394,6 +4394,74 @@
}
/**
+ * @brief GET an HTTP resource.
+ *
+ * @param[in] url URL.
+ *
+ * @return 0 success, -1 error.
+ */
+static int
+http_get (const char *url)
+{
+ int ret;
+ gchar *standard_out = NULL;
+ gchar *standard_err = NULL;
+ gint exit_status;
+ gchar **cmd;
+
+ tracef (" HTTP_GET %s", url);
+
+ cmd = (gchar **) g_malloc (5 * sizeof (gchar *));
+ cmd[0] = g_strdup ("/usr/bin/wget");
+ cmd[1] = g_strdup ("-O");
+ cmd[2] = g_strdup ("-");
+ cmd[3] = g_strdup (url);
+ cmd[4] = NULL;
+ g_debug ("%s: Spawning in /tmp/: %s %s %s %s\n",
+ __FUNCTION__, cmd[0], cmd[1], cmd[2], cmd[3]);
+ if ((g_spawn_sync ("/tmp/",
+ cmd,
+ NULL, /* Environment. */
+ G_SPAWN_SEARCH_PATH,
+ NULL, /* Setup function. */
+ NULL,
+ &standard_out,
+ &standard_err,
+ &exit_status,
+ NULL)
+ == FALSE)
+ || (WIFEXITED (exit_status) == 0)
+ || WEXITSTATUS (exit_status))
+ {
+ g_debug ("%s: wget failed: %d (WIF %i, WEX %i)",
+ __FUNCTION__,
+ exit_status,
+ WIFEXITED (exit_status),
+ WEXITSTATUS (exit_status));
+ g_debug ("%s: stdout: %s\n", __FUNCTION__, standard_out);
+ g_debug ("%s: stderr: %s\n", __FUNCTION__, standard_err);
+ ret = -1;
+ }
+ else
+ {
+ if (strlen (standard_out) > 80)
+ standard_out[80] = '\0';
+ g_message (" HTTP_GET %s: %s", url, standard_out);
+ ret = 0;
+ }
+
+ g_free (cmd[0]);
+ g_free (cmd[1]);
+ g_free (cmd[2]);
+ g_free (cmd[3]);
+ g_free (cmd[4]);
+ g_free (cmd);
+ g_free (standard_out);
+ g_free (standard_err);
+ return ret;
+}
+
+/**
* @brief Format string for simple notice escalator email.
*/
#define SIMPLE_NOTICE_FORMAT \
@@ -4506,6 +4574,74 @@
return -1;
break;
}
+ case ESCALATOR_METHOD_HTTP_GET:
+ {
+ char *url;
+
+ url = escalator_data (escalator, "method", "URL");
+
+ if (url)
+ {
+ int ret, formatting;
+ gchar *point, *end;
+ GString *new_url;
+
+ new_url = g_string_new ("");
+ for (formatting = 0, point = url, end = (url + strlen (url));
+ point < end;
+ point++)
+ if (formatting)
+ {
+ switch (*point)
+ {
+ case '$':
+ g_string_append_c (new_url, '$');
+ break;
+ case 'c':
+ {
+ gchar *condition_desc;
+ condition_desc = escalator_condition_description
+ (condition, escalator);
+ g_string_append (new_url, condition_desc);
+ g_free (condition_desc);
+ break;
+ }
+ case 'e':
+ {
+ gchar *event_desc;
+ event_desc = event_description (event, event_data,
+ NULL);
+ g_string_append (new_url, event_desc);
+ g_free (event_desc);
+ break;
+ }
+ case 'n':
+ {
+ char *name = task_name (task);
+ g_string_append (new_url, name);
+ free (name);
+ break;
+ }
+ default:
+ g_string_append_c (new_url, '$');
+ g_string_append_c (new_url, *point);
+ break;
+ }
+ formatting = 0;
+ }
+ else if (*point == '$')
+ formatting = 1;
+ else
+ g_string_append_c (new_url, *point);
+
+ ret = http_get (new_url->str);
+ g_string_free (new_url, TRUE);
+ g_free (url);
+ return ret;
+ }
+ return -1;
+ break;
+ }
case ESCALATOR_METHOD_SYSLOG:
{
char *submethod;
More information about the Openvas-commits
mailing list