From e910da3bbd526714b8cbd1cd124e8a752d7c0882 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 10 Oct 2008 21:50:58 +0000 Subject: [PATCH] - Rewrite patch another time leverage better api and be more terse --- ...-session-2.24.0-add-can-shutdown-api.patch | 102 ++++++------------ gnome-session.spec | 6 +- 2 files changed, 38 insertions(+), 70 deletions(-) diff --git a/gnome-session-2.24.0-add-can-shutdown-api.patch b/gnome-session-2.24.0-add-can-shutdown-api.patch index 581c55b..a09382a 100644 --- a/gnome-session-2.24.0-add-can-shutdown-api.patch +++ b/gnome-session-2.24.0-add-can-shutdown-api.patch @@ -1,59 +1,7 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-api gnome-session-2.24.0/gnome-session/gsm-consolekit.c --- gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-api 2008-09-22 17:21:08.000000000 -0400 -+++ gnome-session-2.24.0/gnome-session/gsm-consolekit.c 2008-10-10 16:39:55.000000000 -0400 -@@ -54,6 +54,9 @@ struct _GsmConsolekitPrivate - DBusGConnection *dbus_connection; - DBusGProxy *bus_proxy; - DBusGProxy *ck_proxy; -+#ifdef HAVE_POLKIT_GNOME -+ PolKitSession *pk_session; -+#endif - guint32 is_connected : 1; - }; - -@@ -140,11 +143,14 @@ static gboolean - gsm_consolekit_ensure_ck_connection (GsmConsolekit *manager, - GError **error) - { -+ DBusConnection *connection; - GError *connection_error; - gboolean is_connected; -+ const char *cookie; - - connection_error = NULL; - -+ connection = NULL; - if (manager->priv->dbus_connection == NULL) { - manager->priv->dbus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, - &connection_error); -@@ -154,6 +160,8 @@ gsm_consolekit_ensure_ck_connection (Gsm - is_connected = FALSE; - goto out; - } -+ -+ connection = dbus_g_connection_get_connection (manager->priv->dbus_connection); - } - - if (manager->priv->bus_proxy == NULL) { -@@ -198,6 +206,17 @@ gsm_consolekit_ensure_ck_connection (Gsm - } - } - -+#ifdef HAVE_POLKIT_GNOME -+ cookie = g_getenv ("XDG_SESSION_COOKIE"); -+ if (manager->priv->pk_session == NULL && connection != NULL && cookie != NULL) { -+ DBusError error; -+ -+ dbus_error_init (&error); -+ manager->priv->pk_session = polkit_session_new_from_cookie (connection, cookie, &error); -+ dbus_error_free (&error); -+ } -+#endif -+ - is_connected = TRUE; - - out: -@@ -825,20 +844,62 @@ gsm_consolekit_can_switch_user (GsmConso ++++ gnome-session-2.24.0/gnome-session/gsm-consolekit.c 2008-10-10 17:43:35.000000000 -0400 +@@ -825,20 +826,78 @@ gsm_consolekit_can_switch_user (GsmConso return ret; } @@ -63,10 +11,10 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-ap + const char *action_id) +{ + PolKitGnomeContext *gnome_context; -+ PolKitPolicyCache *policy_cache; -+ PolKitPolicyFileEntry *file_entry; -+ PolKitPolicyDefault *policy; + PolKitAction *action; ++ PolKitCaller *caller; ++ DBusError dbus_error; ++ PolKitError *error; + PolKitResult result; + + gnome_context = polkit_gnome_context_get (NULL); @@ -75,21 +23,38 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-ap + return FALSE; + } + -+ policy_cache = polkit_context_get_policy_cache (gnome_context->pk_context); -+ file_entry = polkit_policy_cache_get_entry_by_id (policy_cache, action_id); -+ policy = polkit_policy_file_entry_get_default (file_entry); ++ if (gnome_context->pk_tracker == NULL) { ++ return FALSE; ++ } ++ ++ dbus_error_init (&dbus_error); ++ caller = polkit_tracker_get_caller_from_pid (gnome_context->pk_tracker, ++ getpid (), ++ &dbus_error); ++ dbus_error_free (&dbus_error); ++ ++ if (caller == NULL) { ++ return FALSE; ++ } ++ + action = polkit_action_new (); ++ + if (!polkit_action_set_action_id (action, action_id)) { + polkit_action_unref (action); ++ polkit_caller_unref (caller); + return FALSE; + } + + result = POLKIT_RESULT_UNKNOWN; -+ if (manager->priv->pk_session != NULL) { -+ result = polkit_policy_default_can_session_do_action (policy, -+ action, -+ manager->priv->pk_session); ++ error = NULL; ++ result = polkit_context_is_caller_authorized (gnome_context->pk_context, ++ action, caller, FALSE, ++ &error); ++ if (polkit_error_is_set (error)) { ++ polkit_error_free (error); + } ++ polkit_action_unref (action); ++ polkit_caller_unref (caller); + + return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN; +} @@ -101,7 +66,6 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-ap #ifdef HAVE_POLKIT_GNOME gboolean res; GError *error; -+ error = NULL; res = gsm_consolekit_ensure_ck_connection (manager, &error); if (!res) { @@ -117,7 +81,7 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-ap #else g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot restart system"); return FALSE; -@@ -857,8 +918,11 @@ gsm_consolekit_can_stop (GsmConsolekit * +@@ -857,8 +916,11 @@ gsm_consolekit_can_stop (GsmConsolekit * g_warning ("Could not connect to ConsoleKit: %s", error->message); g_error_free (error); @@ -132,7 +96,7 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-consolekit.c.add-can-shutdown-ap return FALSE; diff -up gnome-session-2.24.0/gnome-session/gsm-manager.c.add-can-shutdown-api gnome-session-2.24.0/gnome-session/gsm-manager.c --- gnome-session-2.24.0/gnome-session/gsm-manager.c.add-can-shutdown-api 2008-09-22 17:21:08.000000000 -0400 -+++ gnome-session-2.24.0/gnome-session/gsm-manager.c 2008-10-10 16:16:17.000000000 -0400 ++++ gnome-session-2.24.0/gnome-session/gsm-manager.c 2008-10-10 16:41:14.000000000 -0400 @@ -2313,6 +2313,35 @@ gsm_manager_shutdown (GsmManager *manage } @@ -171,7 +135,7 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-manager.c.add-can-shutdown-api g GError **error) diff -up gnome-session-2.24.0/gnome-session/gsm-manager.h.add-can-shutdown-api gnome-session-2.24.0/gnome-session/gsm-manager.h --- gnome-session-2.24.0/gnome-session/gsm-manager.h.add-can-shutdown-api 2008-09-22 17:21:08.000000000 -0400 -+++ gnome-session-2.24.0/gnome-session/gsm-manager.h 2008-10-10 16:16:17.000000000 -0400 ++++ gnome-session-2.24.0/gnome-session/gsm-manager.h 2008-10-10 16:41:14.000000000 -0400 @@ -151,6 +151,10 @@ gboolean gsm_manager_is_inhib gboolean gsm_manager_shutdown (GsmManager *manager, @@ -185,7 +149,7 @@ diff -up gnome-session-2.24.0/gnome-session/gsm-manager.h.add-can-shutdown-api g GError **error); diff -up gnome-session-2.24.0/gnome-session/org.gnome.SessionManager.xml.add-can-shutdown-api gnome-session-2.24.0/gnome-session/org.gnome.SessionManager.xml --- gnome-session-2.24.0/gnome-session/org.gnome.SessionManager.xml.add-can-shutdown-api 2008-09-22 17:21:08.000000000 -0400 -+++ gnome-session-2.24.0/gnome-session/org.gnome.SessionManager.xml 2008-10-10 16:16:17.000000000 -0400 ++++ gnome-session-2.24.0/gnome-session/org.gnome.SessionManager.xml 2008-10-10 16:41:14.000000000 -0400 @@ -252,6 +252,20 @@ diff --git a/gnome-session.spec b/gnome-session.spec index 1312b27..17052df 100644 --- a/gnome-session.spec +++ b/gnome-session.spec @@ -12,7 +12,7 @@ Summary: GNOME session manager Name: gnome-session Version: 2.24.0 -Release: 9%{?dist} +Release: 10%{?dist} URL: http://www.gnome.org Source0: http://download.gnome.org/sources/gnome-session/2.24/%{name}-%{version}.tar.bz2 Source1: redhat-default-session @@ -196,6 +196,10 @@ fi %changelog +* Fri Oct 10 2008 Ray Strode - 2.24.0-10 +- Rewrite patch another time leverage better api and be more + terse + * Fri Oct 10 2008 Ray Strode - 2.24.0-9 - Bring shutdown menu item back. More fallout from my buggy patch introduced in -7