Jakub Filak 6bf513
From 9ef1d95f9556db4fdf02b283e1602b9e63b693c8 Mon Sep 17 00:00:00 2001
Jakub Filak 6bf513
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak 6bf513
Date: Thu, 9 Oct 2014 10:24:42 +0200
Jakub Filak 2164d6
Subject: [PATCH] ureport: attach contact email if configured
Jakub Filak 6bf513
Jakub Filak 6bf513
Related to rhbz#1150389
Jakub Filak 6bf513
Jakub Filak 6bf513
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak 6bf513
---
Jakub Filak 6bf513
 src/plugins/abrt-action-ureport | 35 ++++++++++++++++++++++++++++++++---
Jakub Filak 6bf513
 1 file changed, 32 insertions(+), 3 deletions(-)
Jakub Filak 6bf513
Jakub Filak 6bf513
diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
Jakub Filak 6bf513
index 1abe7b3..df5f3d3 100755
Jakub Filak 6bf513
--- a/src/plugins/abrt-action-ureport
Jakub Filak 6bf513
+++ b/src/plugins/abrt-action-ureport
Jakub Filak 6bf513
@@ -8,6 +8,7 @@
Jakub Filak 6bf513
 import sys
Jakub Filak 6bf513
 import os
Jakub Filak 6bf513
 import getopt
Jakub Filak 6bf513
+import augeas
Jakub Filak 6bf513
 
Jakub Filak 6bf513
 from report import dd_opendir, DD_FAIL_QUIETLY_ENOENT, run_event_state
Jakub Filak 6bf513
 from reportclient import set_verbosity, error_msg_and_die, error_msg, log1, log
Jakub Filak 6bf513
@@ -33,12 +34,30 @@ def init_gettext():
Jakub Filak 6bf513
     gettext.textdomain(GETTEXT_PROGNAME)
Jakub Filak 6bf513
 
Jakub Filak 6bf513
 
Jakub Filak 6bf513
-def spawn_and_wait(prog):
Jakub Filak 6bf513
+def get_augeas(module, file_path):
Jakub Filak 6bf513
+    """
Jakub Filak 6bf513
+    A function for efficient configuration of Augeas.
Jakub Filak 6bf513
+    Augeas modules are placed in /usr/share/augeas/lenses/dist
Jakub Filak 6bf513
+    """
Jakub Filak 6bf513
+
Jakub Filak 6bf513
+    aug_obj = augeas.Augeas(flags=augeas.Augeas.NO_MODL_AUTOLOAD)
Jakub Filak 6bf513
+    aug_obj.set("/augeas/load/{0}/lens".format(module), "{0}.lns".format(module))
Jakub Filak 6bf513
+    aug_obj.set("/augeas/load/{0}/incl".format(module), file_path)
Jakub Filak 6bf513
+    aug_obj.load()
Jakub Filak 6bf513
+    return aug_obj
Jakub Filak 6bf513
+
Jakub Filak 6bf513
+
Jakub Filak 6bf513
+def spawn_and_wait(prog, args=None):
Jakub Filak 6bf513
+    if args is None:
Jakub Filak 6bf513
+        args = [prog]
Jakub Filak 6bf513
+    else:
Jakub Filak 6bf513
+        args.insert(0, prog)
Jakub Filak 6bf513
+
Jakub Filak 6bf513
     try:
Jakub Filak 6bf513
-        return os.spawnlp(os.P_WAIT, prog, prog)
Jakub Filak 6bf513
+        return os.spawnvpe(os.P_WAIT, prog, args, os.environ)
Jakub Filak 6bf513
     except OSError as err:
Jakub Filak 6bf513
         error_msg(_("Unable to start '%s', error message was: '%s'"),
Jakub Filak 6bf513
-                    prog, err)
Jakub Filak 6bf513
+                    " ".join(args), err)
Jakub Filak 6bf513
         return -1
Jakub Filak 6bf513
 
Jakub Filak 6bf513
 def try_parse_number(dd, filename):
Jakub Filak 6bf513
@@ -92,6 +111,7 @@ if __name__ == "__main__":
Jakub Filak 6bf513
             verbose += 1
Jakub Filak 6bf513
 
Jakub Filak 6bf513
     set_verbosity(verbose)
Jakub Filak 6bf513
+    os.environ["ABRT_VERBOSE"] = str(verbose)
Jakub Filak 6bf513
 
Jakub Filak 6bf513
     # getcwd might fail if cwd was deleted
Jakub Filak 6bf513
     try:
Jakub Filak 6bf513
@@ -159,6 +179,15 @@ if __name__ == "__main__":
Jakub Filak 6bf513
                 log(_("Adding you to CC List of the existing bugzilla bug"))
Jakub Filak 6bf513
                 run_event("watch_Bugzilla", dirname)
Jakub Filak 6bf513
 
Jakub Filak 6bf513
+        email = os.getenv("uReport_ContactEmail")
Jakub Filak 6bf513
+        if not email:
Jakub Filak 6bf513
+            augeas = get_augeas("libreport", "/etc/libreport/plugins/ureport.conf")
Jakub Filak 6bf513
+            email = augeas.get("/files/etc/libreport/plugins/ureport.conf/ContactEmail")
Jakub Filak 6bf513
+
Jakub Filak 6bf513
+        if email:
Jakub Filak 6bf513
+            log1("Attaching ContactEmail: " + email)
Jakub Filak 6bf513
+            spawn_and_wait("reporter-ureport", ["-A", "-E"])
Jakub Filak 6bf513
+
Jakub Filak 6bf513
         sys.exit(exitcode)
Jakub Filak 6bf513
     else:
Jakub Filak 6bf513
         error_msg_and_die(_("reporter-ureport failed with exit code %d" % exitcode))
Jakub Filak 6bf513
-- 
Jakub Filak 6bf513
2.1.0
Jakub Filak 6bf513