summaryrefslogtreecommitdiffstats
path: root/lib/Plugins
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-25 14:22:15 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-25 14:22:15 +0100
commitbb36076a03ce7bb40113d618db6d0343b8477c3f (patch)
tree917dbbeadcbfa235434d51891feafc13dfe97e2e /lib/Plugins
parent7b721840773a6faf2fa93562aeae1cc4c7d05804 (diff)
downloadabrt-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.am9
-rw-r--r--lib/Plugins/rhfastcheck.cpp128
-rw-r--r--lib/Plugins/rhfastcheck.h45
-rw-r--r--lib/Plugins/rhticket.cpp2
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