diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Makefile.am | 5 | ||||
-rw-r--r-- | src/lib/Polkit.cpp | 102 | ||||
-rw-r--r-- | src/lib/Polkit.h | 42 |
3 files changed, 1 insertions, 148 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 055d99f4..cb42abe7 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -62,8 +62,7 @@ libABRTdUtils_la_SOURCES = \ parse_release.cpp \ make_descr.cpp \ $(HEADER_DIR)/comm_layer_inner.h CommLayerInner.cpp \ - $(HEADER_DIR)/plugin.h Plugin.cpp \ - Polkit.h Polkit.cpp + $(HEADER_DIR)/plugin.h Plugin.cpp libABRTdUtils_la_CPPFLAGS = \ -Wall \ -I$(srcdir)/../include \ @@ -72,12 +71,10 @@ libABRTdUtils_la_CPPFLAGS = \ -DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \ -DCONF_DIR=\"$(CONF_DIR)\" \ -DVAR_RUN=\"$(VAR_RUN)\" \ - $(POLKIT_CFLAGS) \ -D_GNU_SOURCE libABRTdUtils_la_LDFLAGS = \ -version-info 0:1:0 libABRTdUtils_la_LIBADD = \ - $(POLKIT_LIBS) \ -ldl libABRT_web_utils_la_SOURCES = \ diff --git a/src/lib/Polkit.cpp b/src/lib/Polkit.cpp deleted file mode 100644 index a5e07760..00000000 --- a/src/lib/Polkit.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - Polkit.cpp - PolicyKit integration for ABRT - - Copyright (C) 2009 Daniel Novotny (dnovotny@redhat.com) - Copyright (C) 2009 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 <polkit/polkit.h> -#include <glib-object.h> -#include <sys/types.h> -#include <unistd.h> - -#include "Polkit.h" -#include "abrtlib.h" - -/*number of seconds: timeout for the authorization*/ -#define POLKIT_TIMEOUT 20 - -static gboolean do_cancel(GCancellable* cancellable) -{ - log("Timer has expired; cancelling authorization check\n"); - g_cancellable_cancel(cancellable); - return FALSE; -} - - -static PolkitResult do_check(PolkitSubject *subject, const char *action_id) -{ - PolkitAuthority *authority; - PolkitAuthorizationResult *result; - GError *error = NULL; - GCancellable * cancellable; - - authority = polkit_authority_get(); - cancellable = g_cancellable_new(); - - guint cancel_timeout = g_timeout_add(POLKIT_TIMEOUT * 1000, - (GSourceFunc) do_cancel, - cancellable); - - result = polkit_authority_check_authorization_sync(authority, - subject, - action_id, - NULL, - POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION, - cancellable, - &error); - g_object_unref(authority); - g_source_remove(cancel_timeout); - if (error) - { - g_error_free(error); - return PolkitUnknown; - } - - if (result) - { - if (polkit_authorization_result_get_is_challenge(result)) - { - /* Can't happen (happens only with - * POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE flag) */ - g_object_unref(result); - return PolkitChallenge; - } - if (polkit_authorization_result_get_is_authorized(result)) - { - g_object_unref(result); - return PolkitYes; - } - g_object_unref(result); - return PolkitNo; - } - - return PolkitUnknown; -} - -PolkitResult polkit_check_authorization(const char *dbus_name, const char *action_id) -{ - g_type_init(); - PolkitSubject *subject = polkit_system_bus_name_new(dbus_name); - return do_check(subject, action_id); -} - -PolkitResult polkit_check_authorization(pid_t pid, const char *action_id) -{ - g_type_init(); - PolkitSubject *subject = polkit_unix_process_new(pid); - return do_check(subject, action_id); -} diff --git a/src/lib/Polkit.h b/src/lib/Polkit.h deleted file mode 100644 index d9e097ac..00000000 --- a/src/lib/Polkit.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - Polkit.h - header file for PolicyKit integration - - Copyright (C) 2009 Daniel Novotny (dnovotny@redhat.com) - Copyright (C) 2009 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 ABRT_POLKIT_H -#define ABRT_POLKIT_H - -#include <sys/types.h> -#include <unistd.h> - -typedef enum { -/* Authorization status is unknown */ - PolkitUnknown = 0x0, - /* Subject is authorized for the action */ - PolkitYes = 0x01, - /* Subject is not authorized for the action */ - PolkitNo = 0x02, - /* Challenge is needed for this action, only when flag is - * POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE */ - PolkitChallenge = 0x03 -} PolkitResult; - -PolkitResult polkit_check_authorization(const char *dbus_name, const char *action_id); -PolkitResult polkit_check_authorization(pid_t pid, const char *action_id); - -#endif |