Jiri Moskovcak a42079
From 89de28a3510c6e7a30ca053caea35ccabfbde75a Mon Sep 17 00:00:00 2001
Jiri Moskovcak a42079
From: Miroslav Lichvar <mlichvar@redhat.com>
Jiri Moskovcak a42079
Date: Thu, 21 Jul 2011 15:34:50 +0200
Jiri Moskovcak a42079
Subject: [PATCH 3/4] remove forgotten abrt-action-kerneloops files
Jiri Moskovcak a42079
Jiri Moskovcak a42079
---
Jiri Moskovcak a42079
 src/plugins/abrt-action-kerneloops.c   |  173 --------------------------------
Jiri Moskovcak a42079
 src/plugins/abrt-action-kerneloops.txt |   68 -------------
Jiri Moskovcak a42079
 2 files changed, 0 insertions(+), 241 deletions(-)
Jiri Moskovcak a42079
 delete mode 100644 src/plugins/abrt-action-kerneloops.c
Jiri Moskovcak a42079
 delete mode 100644 src/plugins/abrt-action-kerneloops.txt
Jiri Moskovcak a42079
Jiri Moskovcak a42079
diff --git a/src/plugins/abrt-action-kerneloops.c b/src/plugins/abrt-action-kerneloops.c
Jiri Moskovcak a42079
deleted file mode 100644
Jiri Moskovcak a42079
index a117266..0000000
Jiri Moskovcak a42079
--- a/src/plugins/abrt-action-kerneloops.c
Jiri Moskovcak a42079
+++ /dev/null
Jiri Moskovcak a42079
@@ -1,173 +0,0 @@
Jiri Moskovcak a42079
-/*
Jiri Moskovcak a42079
-    Copyright (C) 2010  ABRT team
Jiri Moskovcak a42079
-    Copyright (C) 2010  RedHat Inc
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    This program is free software; you can redistribute it and/or modify
Jiri Moskovcak a42079
-    it under the terms of the GNU General Public License as published by
Jiri Moskovcak a42079
-    the Free Software Foundation; either version 2 of the License, or
Jiri Moskovcak a42079
-    (at your option) any later version.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    This program is distributed in the hope that it will be useful,
Jiri Moskovcak a42079
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
Jiri Moskovcak a42079
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Jiri Moskovcak a42079
-    GNU General Public License for more details.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    Authors:
Jiri Moskovcak a42079
-       Anton Arapov <anton@redhat.com>
Jiri Moskovcak a42079
-       Arjan van de Ven <arjan@linux.intel.com>
Jiri Moskovcak a42079
- */
Jiri Moskovcak a42079
-#include <curl/curl.h>
Jiri Moskovcak a42079
-#include "abrtlib.h"
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-/* helpers */
Jiri Moskovcak a42079
-static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
Jiri Moskovcak a42079
-{
Jiri Moskovcak a42079
-    size *= nmemb;
Jiri Moskovcak a42079
-/*
Jiri Moskovcak a42079
-    char *c, *c1, *c2;
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    log("received: '%*.*s'", (int)size, (int)size, (char*)ptr);
Jiri Moskovcak a42079
-    c = (char*)xzalloc(size + 1);
Jiri Moskovcak a42079
-    memcpy(c, ptr, size);
Jiri Moskovcak a42079
-    c1 = strstr(c, "201 ");
Jiri Moskovcak a42079
-    if (c1)
Jiri Moskovcak a42079
-    {
Jiri Moskovcak a42079
-        c1 += 4;
Jiri Moskovcak a42079
-        c2 = strchr(c1, '\n');
Jiri Moskovcak a42079
-        if (c2)
Jiri Moskovcak a42079
-            *c2 = 0;
Jiri Moskovcak a42079
-    }
Jiri Moskovcak a42079
-    free(c);
Jiri Moskovcak a42079
-*/
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    return size;
Jiri Moskovcak a42079
-}
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-/* Send oops data to kerneloops.org-style site, using HTTP POST */
Jiri Moskovcak a42079
-/* Returns 0 on success */
Jiri Moskovcak a42079
-static CURLcode http_post_to_kerneloops_site(const char *url, const char *oopsdata)
Jiri Moskovcak a42079
-{
Jiri Moskovcak a42079
-    CURLcode ret;
Jiri Moskovcak a42079
-    CURL *handle;
Jiri Moskovcak a42079
-    struct curl_httppost *post = NULL;
Jiri Moskovcak a42079
-    struct curl_httppost *last = NULL;
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    handle = curl_easy_init();
Jiri Moskovcak a42079
-    if (!handle)
Jiri Moskovcak a42079
-        error_msg_and_die("Can't create curl handle");
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    curl_easy_setopt(handle, CURLOPT_URL, url);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    curl_formadd(&post, &last,
Jiri Moskovcak a42079
-            CURLFORM_COPYNAME, "oopsdata",
Jiri Moskovcak a42079
-            CURLFORM_COPYCONTENTS, oopsdata,
Jiri Moskovcak a42079
-            CURLFORM_END);
Jiri Moskovcak a42079
-    curl_formadd(&post, &last,
Jiri Moskovcak a42079
-            CURLFORM_COPYNAME, "pass_on_allowed",
Jiri Moskovcak a42079
-            CURLFORM_COPYCONTENTS, "yes",
Jiri Moskovcak a42079
-            CURLFORM_END);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    curl_easy_setopt(handle, CURLOPT_HTTPPOST, post);
Jiri Moskovcak a42079
-    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writefunction);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    ret = curl_easy_perform(handle);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    curl_formfree(post);
Jiri Moskovcak a42079
-    curl_easy_cleanup(handle);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    return ret;
Jiri Moskovcak a42079
-}
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-static void report_to_kerneloops(
Jiri Moskovcak a42079
-                const char *dump_dir_name,
Jiri Moskovcak a42079
-                map_string_h *settings)
Jiri Moskovcak a42079
-{
Jiri Moskovcak a42079
-    problem_data_t *problem_data = create_problem_data_for_reporting(dump_dir_name);
Jiri Moskovcak a42079
-    if (!problem_data)
Jiri Moskovcak a42079
-        xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    const char *backtrace = get_problem_item_content_or_NULL(problem_data, FILENAME_BACKTRACE);
Jiri Moskovcak a42079
-    if (!backtrace)
Jiri Moskovcak a42079
-        error_msg_and_die("Error sending kernel oops due to missing backtrace");
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    const char *env = getenv("KerneloopsReporter_SubmitURL");
Jiri Moskovcak a42079
-    const char *submitURL = (env ? env : get_map_string_item_or_empty(settings, "SubmitURL"));
Jiri Moskovcak a42079
-    if (!submitURL[0])
Jiri Moskovcak a42079
-        submitURL = "http://submit.kerneloops.org/submitoops.php";
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    log(_("Submitting oops report to %s"), submitURL);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    CURLcode ret = http_post_to_kerneloops_site(submitURL, backtrace);
Jiri Moskovcak a42079
-    if (ret != CURLE_OK)
Jiri Moskovcak a42079
-        error_msg_and_die("Kernel oops has not been sent due to %s", curl_easy_strerror(ret));
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    free_problem_data(problem_data);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    /* Server replies with:
Jiri Moskovcak a42079
-     * 200 thank you for submitting the kernel oops information
Jiri Moskovcak a42079
-     * RemoteIP: 34192fd15e34bf60fac6a5f01bba04ddbd3f0558
Jiri Moskovcak a42079
-     * - no URL or bug ID apparently...
Jiri Moskovcak a42079
-     */
Jiri Moskovcak a42079
-    struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
Jiri Moskovcak a42079
-    if (dd)
Jiri Moskovcak a42079
-    {
Jiri Moskovcak a42079
-        char *msg = xasprintf("kerneloops: URL=%s", submitURL);
Jiri Moskovcak a42079
-        add_reported_to(dd, msg);
Jiri Moskovcak a42079
-        free(msg);
Jiri Moskovcak a42079
-        dd_close(dd);
Jiri Moskovcak a42079
-    }
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    log("Kernel oops report was uploaded");
Jiri Moskovcak a42079
-}
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-int main(int argc, char **argv)
Jiri Moskovcak a42079
-{
Jiri Moskovcak a42079
-    abrt_init(argv);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    map_string_h *settings = new_map_string();
Jiri Moskovcak a42079
-    const char *dump_dir_name = ".";
Jiri Moskovcak a42079
-    GList *conf_file = NULL;
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    /* Can't keep these strings/structs static: _() doesn't support that */
Jiri Moskovcak a42079
-    const char *program_usage_string = _(
Jiri Moskovcak a42079
-        "\b [-v] [-c CONFFILE]... -d DIR\n"
Jiri Moskovcak a42079
-        "\n"
Jiri Moskovcak a42079
-        "Reports kernel oops to kerneloops.org (or similar) site.\n"
Jiri Moskovcak a42079
-        "\n"
Jiri Moskovcak a42079
-        "Files with names listed in $EXCLUDE_FROM_REPORT are not included\n"
Jiri Moskovcak a42079
-        "into the tarball.\n"
Jiri Moskovcak a42079
-        "\n"
Jiri Moskovcak a42079
-        "CONFFILE lines should have 'PARAM = VALUE' format.\n"
Jiri Moskovcak a42079
-        "Recognized string parameter: SubmitURL.\n"
Jiri Moskovcak a42079
-        "Parameter can be overridden via $KerneloopsReporter_SubmitURL."
Jiri Moskovcak a42079
-    );
Jiri Moskovcak a42079
-    enum {
Jiri Moskovcak a42079
-        OPT_v = 1 << 0,
Jiri Moskovcak a42079
-        OPT_d = 1 << 1,
Jiri Moskovcak a42079
-        OPT_c = 1 << 2,
Jiri Moskovcak a42079
-    };
Jiri Moskovcak a42079
-    /* Keep enum above and order of options below in sync! */
Jiri Moskovcak a42079
-    struct options program_options[] = {
Jiri Moskovcak a42079
-        OPT__VERBOSE(&g_verbose),
Jiri Moskovcak a42079
-        OPT_STRING('d', NULL, &dump_dir_name, "DIR" , _("Dump directory")),
Jiri Moskovcak a42079
-        OPT_LIST(  'c', NULL, &conf_file    , "FILE", _("Configuration file")),
Jiri Moskovcak a42079
-        OPT_END()
Jiri Moskovcak a42079
-    };
Jiri Moskovcak a42079
-    /*unsigned opts =*/ parse_opts(argc, argv, program_options, program_usage_string);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    export_abrt_envvars(0);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    while (conf_file)
Jiri Moskovcak a42079
-    {
Jiri Moskovcak a42079
-        char *fn = (char *)conf_file->data;
Jiri Moskovcak a42079
-        VERB1 log("Loading settings from '%s'", fn);
Jiri Moskovcak a42079
-        load_conf_file(fn, settings, /*skip key w/o values:*/ true);
Jiri Moskovcak a42079
-        VERB3 log("Loaded '%s'", fn);
Jiri Moskovcak a42079
-        conf_file = g_list_remove(conf_file, fn);
Jiri Moskovcak a42079
-    }
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    report_to_kerneloops(dump_dir_name, settings);
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-    free_map_string(settings);
Jiri Moskovcak a42079
-    return 0;
Jiri Moskovcak a42079
-}
Jiri Moskovcak a42079
diff --git a/src/plugins/abrt-action-kerneloops.txt b/src/plugins/abrt-action-kerneloops.txt
Jiri Moskovcak a42079
deleted file mode 100644
Jiri Moskovcak a42079
index 468287f..0000000
Jiri Moskovcak a42079
--- a/src/plugins/abrt-action-kerneloops.txt
Jiri Moskovcak a42079
+++ /dev/null
Jiri Moskovcak a42079
@@ -1,68 +0,0 @@
Jiri Moskovcak a42079
-abrt-action-kerneloops(1)
Jiri Moskovcak a42079
-=========================
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-NAME
Jiri Moskovcak a42079
-----
Jiri Moskovcak a42079
-abrt-action-kerneloops - Reports kernel oops to kerneloops.org (or similar)
Jiri Moskovcak a42079
-site.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-SYNOPSIS
Jiri Moskovcak a42079
---------
Jiri Moskovcak a42079
-'abrt-action-kerneloops' [-v] [-c CONFFILE]... [ -d DIR ]
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-DESCRIPTION
Jiri Moskovcak a42079
------------
Jiri Moskovcak a42079
-The tool is used to report the crash to the Kerneloops tracker.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-Configuration file
Jiri Moskovcak a42079
-~~~~~~~~~~~~~~~~~~
Jiri Moskovcak a42079
-Configuration file contains entries in a format "Option = Value".
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-The options are:
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-'SubmitURL'::
Jiri Moskovcak a42079
-        The URL of the kerneloops tracker, the default is
Jiri Moskovcak a42079
-        "http://submit.kerneloops.org/submitoops.php".
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-Integration with ABRT events
Jiri Moskovcak a42079
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jiri Moskovcak a42079
-'abrt-action-kerneloops' can be used as a reporter, to allow users to report
Jiri Moskovcak a42079
-problems to the Kerneloops tracker. This usage is pre-configured in
Jiri Moskovcak a42079
-/etc/libreport/events.d/koops_event.conf:
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-------------
Jiri Moskovcak a42079
-EVENT=report_Kerneloops analyzer=Kerneloops abrt-action-kerneloops
Jiri Moskovcak a42079
-------------
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-It can be also used automatically and immediately without user interaction.
Jiri Moskovcak a42079
-When this is desired, modify the event configuration file to run the tool on
Jiri Moskovcak a42079
-the 'post-create' event:
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-------------
Jiri Moskovcak a42079
-EVENT=post-create analyzer=Kerneloops  abrt-action-kerneloops
Jiri Moskovcak a42079
-------------
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-OPTIONS
Jiri Moskovcak a42079
--------
Jiri Moskovcak a42079
--v::
Jiri Moskovcak a42079
-   Be more verbose. Can be given multiple times.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
--d DIR::
Jiri Moskovcak a42079
-   Path to dump directory.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
--c CONFFILE::
Jiri Moskovcak a42079
-   Path to configration file. When used in ABRT event system, the file
Jiri Moskovcak a42079
-   contains site-wide configuration. Users can change the values via
Jiri Moskovcak a42079
-   environment variables.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-ENVIRONMENT VARIABLES
Jiri Moskovcak a42079
----------------------
Jiri Moskovcak a42079
-Environment variables take precedence over values provided in
Jiri Moskovcak a42079
-the configuration file.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-'KerneloopsReporter_SubmitURL'::
Jiri Moskovcak a42079
-        The URL of the kerneloops tracker.
Jiri Moskovcak a42079
-
Jiri Moskovcak a42079
-AUTHORS
Jiri Moskovcak a42079
--------
Jiri Moskovcak a42079
-* ABRT team
Jiri Moskovcak a42079
-- 
Jiri Moskovcak a42079
1.7.6
Jiri Moskovcak a42079