Jakub Filak c839828
From 5c21d1e390603fdc56dba33cdc69672b3b75beff Mon Sep 17 00:00:00 2001
Jakub Filak c839828
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak c839828
Date: Wed, 8 Jul 2015 14:16:39 +0200
Jakub Filak c839828
Subject: [PATCH] cli: enable authetication for all commands
Jakub Filak c839828
Jakub Filak c839828
I forgot to test the info, rm and status commands when I was working on
Jakub Filak c839828
commit cb770e507f247476651b84ebbef63a5cd4c41d11 and later on I found out
Jakub Filak c839828
that these commands must be updated to work with the system problems.
Jakub Filak c839828
Jakub Filak c839828
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak c839828
---
Jakub Filak c839828
 src/cli/list.c   |  2 +-
Jakub Filak c839828
 src/cli/rm.c     | 41 ++++++++++++++++++++++++++++-------------
Jakub Filak c839828
 src/cli/status.c |  3 ++-
Jakub Filak c839828
 3 files changed, 31 insertions(+), 15 deletions(-)
Jakub Filak c839828
Jakub Filak c839828
diff --git a/src/cli/list.c b/src/cli/list.c
Jakub Filak c839828
index 31d1835..8bfb3cc 100644
Jakub Filak c839828
--- a/src/cli/list.c
Jakub Filak c839828
+++ b/src/cli/list.c
Jakub Filak c839828
@@ -35,7 +35,7 @@ static problem_data_t *load_problem_data(const char *problem_id)
Jakub Filak c839828
     char *name2 = NULL;
Jakub Filak c839828
 
Jakub Filak c839828
     /* First, check if there is a problem with the passed id */
Jakub Filak c839828
-    GList *problems = get_problems_over_dbus(/*don't authorize*/false);
Jakub Filak c839828
+    GList *problems = get_problems_over_dbus(g_cli_authenticate);
Jakub Filak c839828
     GList *item = g_list_find_custom(problems, problem_id, (GCompareFunc)strcmp);
Jakub Filak c839828
 
Jakub Filak c839828
     /* (git requires at least 5 char hash prefix, we do the same) */
Jakub Filak c839828
diff --git a/src/cli/rm.c b/src/cli/rm.c
Jakub Filak c839828
index fe458ff..37d50e2 100644
Jakub Filak c839828
--- a/src/cli/rm.c
Jakub Filak c839828
+++ b/src/cli/rm.c
Jakub Filak c839828
@@ -19,12 +19,39 @@
Jakub Filak c839828
 
Jakub Filak c839828
 #include "libabrt.h"
Jakub Filak c839828
 #include "builtin-cmd.h"
Jakub Filak c839828
+#include "abrt-cli-core.h"
Jakub Filak c839828
 
Jakub Filak c839828
 /* TODO npajkovs:
Jakub Filak c839828
  *   add -n, --dry-run
Jakub Filak c839828
  *   add -q, --quite
Jakub Filak c839828
  */
Jakub Filak c839828
 
Jakub Filak c839828
+static int remove_using_dbus(const char **dirs_strv)
Jakub Filak c839828
+{
Jakub Filak c839828
+    GList *dirs = NULL;
Jakub Filak c839828
+    while (*dirs_strv)
Jakub Filak c839828
+        dirs = g_list_prepend(dirs, (void *)*dirs_strv++);
Jakub Filak c839828
+    const int ret = delete_problem_dirs_over_dbus(dirs);
Jakub Filak c839828
+    g_list_free(dirs);
Jakub Filak c839828
+    return ret;
Jakub Filak c839828
+}
Jakub Filak c839828
+
Jakub Filak c839828
+static int remove_using_abrtd_or_fs(const char **dirs_strv)
Jakub Filak c839828
+{
Jakub Filak c839828
+    int errs = 0;
Jakub Filak c839828
+    while (*dirs_strv)
Jakub Filak c839828
+    {
Jakub Filak c839828
+        int status;
Jakub Filak c839828
+        const char *rm_dir = *dirs_strv++;
Jakub Filak c839828
+        status = delete_dump_dir_possibly_using_abrtd(rm_dir);
Jakub Filak c839828
+        if (!status)
Jakub Filak c839828
+            log("rm '%s'", rm_dir);
Jakub Filak c839828
+        else
Jakub Filak c839828
+            errs++;
Jakub Filak c839828
+    }
Jakub Filak c839828
+    return errs;
Jakub Filak c839828
+}
Jakub Filak c839828
+
Jakub Filak c839828
 int cmd_remove(int argc, const char **argv)
Jakub Filak c839828
 {
Jakub Filak c839828
     const char *program_usage_string = _(
Jakub Filak c839828
@@ -42,17 +69,5 @@ int cmd_remove(int argc, const char **argv)
Jakub Filak c839828
     if (!argv[0])
Jakub Filak c839828
         show_usage_and_die(program_usage_string, program_options);
Jakub Filak c839828
 
Jakub Filak c839828
-    int errs = 0;
Jakub Filak c839828
-    while (*argv)
Jakub Filak c839828
-    {
Jakub Filak c839828
-        int status;
Jakub Filak c839828
-        const char *rm_dir = *argv++;
Jakub Filak c839828
-        status = delete_dump_dir_possibly_using_abrtd(rm_dir);
Jakub Filak c839828
-        if (!status)
Jakub Filak c839828
-            log("rm '%s'", rm_dir);
Jakub Filak c839828
-        else
Jakub Filak c839828
-            errs++;
Jakub Filak c839828
-    }
Jakub Filak c839828
-
Jakub Filak c839828
-    return errs;
Jakub Filak c839828
+    return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(argv);
Jakub Filak c839828
 }
Jakub Filak c839828
diff --git a/src/cli/status.c b/src/cli/status.c
Jakub Filak c839828
index a65ba05..0635289 100644
Jakub Filak c839828
--- a/src/cli/status.c
Jakub Filak c839828
+++ b/src/cli/status.c
Jakub Filak c839828
@@ -20,12 +20,13 @@
Jakub Filak c839828
 #include <unistd.h>
Jakub Filak c839828
 #include <sys/types.h>
Jakub Filak c839828
 #include "problem_api.h"
Jakub Filak c839828
+#include "abrt-cli-core.h"
Jakub Filak c839828
 
Jakub Filak c839828
 static unsigned int count_problem_dirs(unsigned long since)
Jakub Filak c839828
 {
Jakub Filak c839828
     unsigned count = 0;
Jakub Filak c839828
 
Jakub Filak c839828
-    GList *problems = get_problems_over_dbus(/*don't authorize*/false);
Jakub Filak c839828
+    GList *problems = get_problems_over_dbus(g_cli_authenticate);
Jakub Filak c839828
     for (GList *iter = problems; iter != NULL; iter = g_list_next(iter))
Jakub Filak c839828
     {
Jakub Filak c839828
         const char *problem_id = (const char *)iter->data;
Jakub Filak c839828
-- 
Jakub Filak c839828
2.4.3
Jakub Filak c839828