diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-25 14:22:15 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-25 14:22:15 +0100 |
commit | bb36076a03ce7bb40113d618db6d0343b8477c3f (patch) | |
tree | 917dbbeadcbfa235434d51891feafc13dfe97e2e /lib/Plugins | |
parent | 7b721840773a6faf2fa93562aeae1cc4c7d05804 (diff) | |
download | abrt-bb36076a03ce7bb40113d618db6d0343b8477c3f.tar.gz abrt-bb36076a03ce7bb40113d618db6d0343b8477c3f.tar.xz abrt-bb36076a03ce7bb40113d618db6d0343b8477c3f.zip |
rhfastcheck: a new reporter plugin based on Gavin's work
Plugin quickly checks RH support DB for known solutions.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'lib/Plugins')
-rw-r--r-- | lib/Plugins/Makefile.am | 9 | ||||
-rw-r--r-- | lib/Plugins/rhfastcheck.cpp | 128 | ||||
-rw-r--r-- | lib/Plugins/rhfastcheck.h | 45 | ||||
-rw-r--r-- | lib/Plugins/rhticket.cpp | 2 |
4 files changed, 183 insertions, 1 deletions
diff --git a/lib/Plugins/Makefile.am b/lib/Plugins/Makefile.am index 0c505fd4..fe6a6d9e 100644 --- a/lib/Plugins/Makefile.am +++ b/lib/Plugins/Makefile.am @@ -11,6 +11,7 @@ pluginslib_LTLIBRARIES = \ libRunApp.la \ libSOSreport.la \ libBugzilla.la \ + librhfastcheck.la \ librhticket.la \ libCatcut.la \ libTicketUploader.la \ @@ -121,6 +122,14 @@ libBugzilla_la_CPPFLAGS = $(XMLRPC_CFLAGS) $(XMLRPC_CLIENT_CFLAGS) \ -I$(srcdir)/../../inc -I$(srcdir)/../Utils -DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \ -DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" +# rhfastcheck +librhfastcheck_la_SOURCES = rhfastcheck.h rhfastcheck.cpp +librhfastcheck_la_LIBADD = +librhfastcheck_la_LDFLAGS = -avoid-version +librhfastcheck_la_CPPFLAGS = \ + -I$(srcdir)/../../inc -I$(srcdir)/../Utils -DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \ + -DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" + # rhticket librhticket_la_SOURCES = rhticket.h rhticket.cpp librhticket_la_LIBADD = diff --git a/lib/Plugins/rhfastcheck.cpp b/lib/Plugins/rhfastcheck.cpp new file mode 100644 index 00000000..1519f87a --- /dev/null +++ b/lib/Plugins/rhfastcheck.cpp @@ -0,0 +1,128 @@ +/* + Copyright (C) 2010 ABRT team + Copyright (C) 2010 RedHat Inc + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "abrtlib.h" +#include "abrt_rh_support.h" +#include "CrashTypes.h" +#include "DebugDump.h" +#include "ABRTException.h" +#include "CommLayerInner.h" +#include "rhfastcheck.h" +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +using namespace std; + +/* + * CReporterRHfastcheck + */ +CReporterRHfastcheck::CReporterRHfastcheck() : + m_bSSLVerify(true), + m_sStrataURL("http://support-services-devel.gss.redhat.com:8080/Strata") +{} + +CReporterRHfastcheck::~CReporterRHfastcheck() +{} + +string CReporterRHfastcheck::Report(const map_crash_data_t& pCrashData, + const map_plugin_settings_t& pSettings, + const char *pArgs) +{ + reportfile_t* file = new_reportfile(); + + // TODO: some files are totally useless: + // "Reported", "Message" (plugin's output), "DumpDir", + // "Description" (package description) - maybe skip those? + map_crash_data_t::const_iterator it = pCrashData.begin(); + for (; it != pCrashData.end(); it++) + { + const char *content = it->second[CD_CONTENT].c_str(); + if (it->second[CD_TYPE] == CD_TXT) + { + reportfile_add_binding_from_string(file, it->first.c_str(), content); + } + else if (it->second[CD_TYPE] == CD_BIN) + { + reportfile_add_binding_from_namedfile(file, content, it->first.c_str(), content, /*binary:*/ 1); + } + } + + update_client(_("Creating a signature...")); + const char* signature = reportfile_as_string(file); + char* result = post_signature(m_sStrataURL.c_str(), signature); + + reportfile_free(file); + string retval = result; + free(result); + + if (strncasecmp(retval.c_str(), "error", 5) == 0) + { + throw CABRTException(EXCEP_PLUGIN, "%s", retval.c_str()); + } + return retval; +} + +void CReporterRHfastcheck::SetSettings(const map_plugin_settings_t& pSettings) +{ + m_pSettings = pSettings; + + map_plugin_settings_t::const_iterator end = pSettings.end(); + map_plugin_settings_t::const_iterator it; + it = pSettings.find("URL"); + if (it != end) + { + m_sStrataURL = it->second; + } + it = pSettings.find("Login"); + if (it != end) + { + m_sLogin = it->second; + } + it = pSettings.find("Password"); + if (it != end) + { + m_sPassword = it->second; + } + it = pSettings.find("SSLVerify"); + if (it != end) + { + m_bSSLVerify = string_to_bool(it->second.c_str()); + } +} + +/* Should not be deleted (why?) */ +const map_plugin_settings_t& CReporterRHfastcheck::GetSettings() +{ + m_pSettings["URL"] = m_sStrataURL; + m_pSettings["Login"] = m_sLogin; + m_pSettings["Password"] = m_sPassword; + m_pSettings["SSLVerify"] = m_bSSLVerify ? "yes" : "no"; + + return m_pSettings; +} + +PLUGIN_INFO(REPORTER, + CReporterRHfastcheck, + "RHfastcheck", + "0.0.4", + "Reports bugs to Red Hat support", + "Denys Vlasenko <dvlasenk@redhat.com>", + "https://fedorahosted.org/abrt/wiki", + "" /*PLUGINS_LIB_DIR"/RHfastcheck.GTKBuilder"*/); diff --git a/lib/Plugins/rhfastcheck.h b/lib/Plugins/rhfastcheck.h new file mode 100644 index 00000000..6cd954dd --- /dev/null +++ b/lib/Plugins/rhfastcheck.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2010 ABRT team + Copyright (C) 2010 RedHat Inc + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ +#ifndef RHFASKCHECK_H_ +#define RHFASKCHECK_H_ + +#include "Plugin.h" +#include "Reporter.h" + +class CReporterRHfastcheck: public CReporter +{ + private: + bool m_bSSLVerify; + std::string m_sStrataURL; + std::string m_sLogin; + std::string m_sPassword; + + public: + CReporterRHfastcheck(); + virtual ~CReporterRHfastcheck(); + + virtual std::string Report(const map_crash_data_t& pCrashData, + const map_plugin_settings_t& pSettings, + const char *pArgs); + + virtual void SetSettings(const map_plugin_settings_t& pSettings); + virtual const map_plugin_settings_t& GetSettings(); +}; + +#endif diff --git a/lib/Plugins/rhticket.cpp b/lib/Plugins/rhticket.cpp index b5abf9df..ab364c26 100644 --- a/lib/Plugins/rhticket.cpp +++ b/lib/Plugins/rhticket.cpp @@ -20,11 +20,11 @@ #define _GNU_SOURCE 1 /* for stpcpy */ #include "abrtlib.h" #include "abrt_curl.h" -#include "rhticket.h" #include "CrashTypes.h" #include "DebugDump.h" #include "ABRTException.h" #include "CommLayerInner.h" +#include "rhticket.h" #ifdef HAVE_CONFIG_H # include <config.h> #endif |