Commit 1ac67f52 authored by Ray Strode's avatar Ray Strode

drop consolekit support

It was deprecated in 3.16 to be removed in 3.18

https://bugzilla.gnome.org/show_bug.cgi?id=743940
parent 9f96354b
......@@ -47,17 +47,6 @@
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
#ifdef WITH_CONSOLE_KIT
#define CK_NAME "org.freedesktop.ConsoleKit"
#define CK_PATH "/org/freedesktop/ConsoleKit"
#define CK_INTERFACE "org.freedesktop.ConsoleKit"
#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager"
#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
#endif
G_DEFINE_QUARK (gdm-common-error, gdm_common_error);
const char *
......@@ -356,295 +345,6 @@ create_transient_display (GDBusConnection *connection,
return TRUE;
}
#ifdef WITH_CONSOLE_KIT
static gboolean
get_current_session_id (GDBusConnection *connection,
char **session_id)
{
GError *local_error = NULL;
GVariant *reply;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
CK_MANAGER_PATH,
CK_MANAGER_INTERFACE,
"GetCurrentSession",
NULL, /* parameters */
G_VARIANT_TYPE ("(o)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to determine session: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_get (reply, "(o)", session_id);
g_variant_unref (reply);
return TRUE;
}
static gboolean
get_seat_id_for_session (GDBusConnection *connection,
const char *session_id,
char **seat_id)
{
GError *local_error = NULL;
GVariant *reply;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
session_id,
CK_SESSION_INTERFACE,
"GetSeatId",
NULL, /* parameters */
G_VARIANT_TYPE ("(o)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to determine seat: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_get (reply, "(o)", seat_id);
g_variant_unref (reply);
return TRUE;
}
static char *
get_current_seat_id (GDBusConnection *connection)
{
gboolean res;
char *session_id;
char *seat_id;
session_id = NULL;
seat_id = NULL;
res = get_current_session_id (connection, &session_id);
if (res) {
res = get_seat_id_for_session (connection, session_id, &seat_id);
}
g_free (session_id);
return seat_id;
}
static gboolean
activate_session_id_for_ck (GDBusConnection *connection,
const char *seat_id,
const char *session_id)
{
GError *local_error = NULL;
GVariant *reply;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
seat_id,
CK_SEAT_INTERFACE,
"ActivateSession",
g_variant_new ("(o)", session_id),
NULL,
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to activate session: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_unref (reply);
return TRUE;
}
static gboolean
session_is_login_window (GDBusConnection *connection,
const char *session_id)
{
GError *local_error = NULL;
GVariant *reply;
const char *value;
gboolean ret;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
session_id,
CK_SESSION_INTERFACE,
"GetSessionType",
NULL,
G_VARIANT_TYPE ("(s)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to determine session type: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_get (reply, "(&s)", &value);
if (value == NULL || value[0] == '\0' || strcmp (value, "LoginWindow") != 0) {
ret = FALSE;
} else {
ret = TRUE;
}
g_variant_unref (reply);
return ret;
}
static gboolean
seat_can_activate_sessions (GDBusConnection *connection,
const char *seat_id)
{
GError *local_error = NULL;
GVariant *reply;
gboolean ret;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
seat_id,
CK_SEAT_INTERFACE,
"CanActivateSessions",
NULL,
G_VARIANT_TYPE ("(b)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to determine if can activate sessions: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_get (reply, "(b)", &ret);
g_variant_unref (reply);
return ret;
}
static const char **
seat_get_sessions (GDBusConnection *connection,
const char *seat_id)
{
GError *local_error = NULL;
GVariant *reply;
const char **value;
reply = g_dbus_connection_call_sync (connection,
CK_NAME,
seat_id,
CK_SEAT_INTERFACE,
"GetSessions",
NULL,
G_VARIANT_TYPE ("(ao)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, &local_error);
if (reply == NULL) {
g_warning ("Unable to list sessions: %s", local_error->message);
g_error_free (local_error);
return FALSE;
}
g_variant_get (reply, "(^ao)", &value);
g_variant_unref (reply);
return value;
}
static gboolean
get_login_window_session_id_for_ck (GDBusConnection *connection,
const char *seat_id,
char **session_id)
{
gboolean can_activate_sessions;
const char **sessions;
int i;
*session_id = NULL;
sessions = NULL;
g_debug ("checking if seat can activate sessions");
can_activate_sessions = seat_can_activate_sessions (connection, seat_id);
if (! can_activate_sessions) {
g_debug ("seat is unable to activate sessions");
return FALSE;
}
sessions = seat_get_sessions (connection, seat_id);
for (i = 0; sessions [i] != NULL; i++) {
const char *ssid;
ssid = sessions [i];
if (session_is_login_window (connection, ssid)) {
*session_id = g_strdup (ssid);
break;
}
}
g_free (sessions);
return TRUE;
}
static gboolean
goto_login_session_for_ck (GDBusConnection *connection,
GError **error)
{
gboolean ret;
gboolean res;
char *session_id;
char *seat_id;
ret = FALSE;
/* First look for any existing LoginWindow sessions on the seat.
If none are found, create a new one. */
seat_id = get_current_seat_id (connection);
if (seat_id == NULL || seat_id[0] == '\0') {
g_debug ("seat id is not set; can't switch sessions");
g_set_error (error, GDM_COMMON_ERROR, 0, _("Could not identify the current session."));
return FALSE;
}
res = get_login_window_session_id_for_ck (connection, seat_id, &session_id);
if (! res) {
g_set_error (error, GDM_COMMON_ERROR, 1, _("User unable to switch sessions."));
return FALSE;
}
if (session_id != NULL) {
res = activate_session_id_for_ck (connection, seat_id, session_id);
if (res) {
ret = TRUE;
}
}
if (! ret && g_strcmp0 (seat_id, "/org/freedesktop/ConsoleKit/Seat1") == 0) {
res = create_transient_display (connection, error);
if (res) {
ret = TRUE;
}
}
return ret;
}
#endif
#ifdef WITH_SYSTEMD
static gboolean
......@@ -844,11 +544,7 @@ gdm_goto_login_session (GError **error)
}
#endif
#ifdef WITH_CONSOLE_KIT
return goto_login_session_for_ck (connection, error);
#else
return FALSE;
#endif
}
static void
......
......@@ -244,10 +244,6 @@ AC_ARG_WITH(tcp-wrappers,
[Use TCP Wrappers @<:@default=auto@:>@]),,
with_tcp_wrappers=auto)
AC_ARG_WITH(console-kit,
AS_HELP_STRING([--with-console-kit],
[Add ConsoleKit support @<:@default=auto@:>@]),,
with_console_kit=no)
AC_ARG_WITH(systemd,
AS_HELP_STRING([--with-systemd],
......@@ -877,18 +873,6 @@ fi
AC_SUBST(XINERAMA_LIBS)
CPPFLAGS="$xinerama_save_cppflags"
dnl ---------------------------------------------------------------------------
dnl - Check for ConsoleKit support
dnl ---------------------------------------------------------------------------
use_console_kit=no
if test "x$with_console_kit" != "xno" ; then
use_console_kit=yes
AC_DEFINE(WITH_CONSOLE_KIT, 1, [Define to enable ConsoleKit support])
fi
AM_CONDITIONAL(WITH_CONSOLE_KIT, test x$use_console_kit = xyes)
AC_SUBST(WITH_CONSOLE_KIT)
dnl ---------------------------------------------------------------------------
dnl - Check for systemd support
dnl ---------------------------------------------------------------------------
......@@ -1121,14 +1105,6 @@ fi
AC_SUBST(GDM_CUSTOM_CONF)
AC_SUBST(GDM_OLD_CONF, '${gdmconfdir}/gdm.conf')
AC_ARG_WITH(consolekit-directory,
[AC_HELP_STRING([--with-consolekit-directory],
[Specify the directory of ck-get-x11-display-device @<:@default=libexecdir@:>@])],,
[with_consolekit_directory="\${libexecdir}"])
CONSOLEKIT_DIR=$with_consolekit_directory
AC_SUBST(CONSOLEKIT_DIR)
AC_ARG_WITH(gnome-settings-daemon-directory,
[AC_HELP_STRING([--with-gnome-settings-daemon-directory],
[Specify the directory of gnome-settings-daemon used by the chooser @<:@default=libexecdir@:>@])],,
......@@ -1610,7 +1586,6 @@ echo "
dmconfdir: ${dmconfdir}
localstatedir: ${localstatedir}
datadir: ${datadir}
consolekit location: ${with_consolekit_directory}
gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
gnome-session-check-accel location: ${with_check_accelerated_directory}
source code location: ${srcdir}
......@@ -1640,7 +1615,6 @@ echo \
" Xinerama support: ${XINERAMA_SUPPORT}
XDMCP support: ${XDMCP_SUPPORT}
SELinux support: ${use_selinux}
ConsoleKit support: ${use_console_kit}
systemd support: ${use_systemd}
systemd unit dir: ${with_systemdsystemunitdir}
plymouth support: ${use_plymouth}
......@@ -1650,15 +1624,3 @@ echo \
Enable documentation: ${enable_documentation}
Install GDM's Xsession: ${enable_gdm_xsession}
"
if test x"${use_console_kit}" = x"yes"; then
echo \
" WARNING:
ConsoleKit support is deprecated and is going to be removed before
the next major release. More details, and patches to add back in
ConsoleKit support can be found here:
https://wiki.gnome.org/Projects/ConsoleKit
"
fi
......@@ -20,7 +20,6 @@ AM_CPPFLAGS = \
-DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \
-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \
-DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \
-DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \
$(DISABLE_DEPRECATED_CFLAGS) \
$(DAEMON_CFLAGS) \
$(XLIB_CFLAGS) \
......@@ -265,11 +264,6 @@ EXTRA_gdm_SOURCES = \
$(XDMCP_SOURCES) \
$(NULL)
CONSOLE_KIT_SOURCES = \
$(NULL)
EXTRA_gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
gdm_LDADD = \
$(top_builddir)/common/libgdmcommon.la \
$(XLIB_LIBS) \
......@@ -281,10 +275,6 @@ gdm_LDADD = \
$(EXTRA_DAEMON_LIBS) \
$(NULL)
if WITH_CONSOLE_KIT
gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
endif
CLEANFILES = \
gdm-display-glue.c \
gdm-local-display-factory-glue.c \
......
......@@ -282,9 +282,6 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
char *seat_id;
seat_id = launch_environment->priv->x11_display_seat_id;
if (g_str_has_prefix (seat_id, "/org/freedesktop/ConsoleKit/")) {
seat_id += strlen ("/org/freedesktop/ConsoleKit/");
}
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
}
......
......@@ -42,7 +42,6 @@
#define GDM_LOCAL_DISPLAY_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LOCAL_DISPLAY_FACTORY, GdmLocalDisplayFactoryPrivate))
#define CK_SEAT1_PATH "/org/freedesktop/ConsoleKit/Seat1"
#define SYSTEMD_SEAT0_PATH "seat0"
#define GDM_DBUS_PATH "/org/gnome/DisplayManager"
......@@ -206,10 +205,6 @@ get_seat_of_transient_display (GdmLocalDisplayFactory *factory)
}
#endif
if (seat_id == NULL) {
seat_id = CK_SEAT1_PATH;
}
return seat_id;
}
......@@ -575,7 +570,6 @@ static gboolean
gdm_local_display_factory_start (GdmDisplayFactory *base_factory)
{
GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory);
GdmDisplay *display;
g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
......@@ -586,10 +580,7 @@ gdm_local_display_factory_start (GdmDisplayFactory *base_factory)
}
#endif
/* On ConsoleKit just create Seat1, and that's it. */
display = create_display (factory, CK_SEAT1_PATH, NULL, TRUE);
return display != NULL;
return FALSE;
}
static gboolean
......
......@@ -59,15 +59,6 @@
#define GDM_MANAGER_PATH GDM_DBUS_PATH "/Manager"
#define GDM_MANAGER_DISPLAYS_PATH GDM_DBUS_PATH "/Displays"
#define CK_NAME "org.freedesktop.ConsoleKit"
#define CK_PATH "/org/freedesktop/ConsoleKit"
#define CK_INTERFACE "org.freedesktop.ConsoleKit"
#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager"
#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
typedef struct
......@@ -243,36 +234,6 @@ get_session_id_for_pid_systemd (pid_t pid,
}
#endif
#ifdef WITH_CONSOLE_KIT
static char *
get_session_id_for_pid_consolekit (GDBusConnection *connection,
pid_t pid,
GError **error)
{
GVariant *reply;
char *retval;
reply = g_dbus_connection_call_sync (connection,
"org.freedesktop.ConsoleKit",
"/org/freedesktop/ConsoleKit/Manager",
"org.freedesktop.ConsoleKit.Manager",
"GetSessionForUnixProcess",
g_variant_new ("(u)", pid),
G_VARIANT_TYPE ("(o)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL, error);
if (reply == NULL) {
return NULL;
}
g_variant_get (reply, "(o)", &retval);
g_variant_unref (reply);
return retval;
}
#endif
static char *
get_session_id_for_pid (GDBusConnection *connection,
pid_t pid,
......@@ -284,10 +245,6 @@ get_session_id_for_pid (GDBusConnection *connection,
}
#endif
#ifdef WITH_CONSOLE_KIT
return get_session_id_for_pid_consolekit (connection, pid, error);
#endif
return NULL;
}
......@@ -314,40 +271,6 @@ get_uid_for_systemd_session_id (const char *session_id,
}
#endif
#ifdef WITH_CONSOLE_KIT
static gboolean
get_uid_for_consolekit_session_id (GDBusConnection *connection,
const char *session_id,
uid_t *out_uid,
GError **error)
{
GVariant *reply;
guint32 uid;
reply = g_dbus_connection_call_sync (connection,
"org.freedesktop.ConsoleKit",
session_id,
"org.freedesktop.ConsoleKit.Session",
"GetUnixUser",
NULL,
G_VARIANT_TYPE ("(u)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
error);
if (reply == NULL) {
return FALSE;
}
g_variant_get (reply, "(u)", &uid);
g_variant_unref (reply);
*out_uid = (uid_t) uid;
return TRUE;
}
#endif
static gboolean
get_uid_for_session_id (GDBusConnection *connection,
const char *session_id,
......@@ -360,10 +283,6 @@ get_uid_for_session_id (GDBusConnection *connection,
}
#endif
#ifdef WITH_CONSOLE_KIT
return get_uid_for_consolekit_session_id (connection, session_id, uid, error);
#endif
return FALSE;
}
......@@ -379,45 +298,6 @@ lookup_by_session_id (const char *id,
return g_strcmp0 (current, looking_for) == 0;
}
#ifdef WITH_CONSOLE_KIT
static gboolean
is_consolekit_login_session (GdmManager *self,
GDBusConnection *connection,
const char *session_id,
GError **error)
{
GVariant *reply;
char *session_type = NULL;
reply = g_dbus_connection_call_sync (connection,
"org.freedesktop.ConsoleKit",
session_id,
"org.freedesktop.ConsoleKit.Session",
"GetSessionType",
NULL,
G_VARIANT_TYPE ("(s)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
error);
if (reply == NULL) {
return FALSE;
}
g_variant_get (reply, "(s)", &session_type);
g_variant_unref (reply);
if (g_strcmp0 (session_type, "LoginWindow") != 0) {
g_free (session_type);
return FALSE;
}
g_free (session_type);
return TRUE;
}
#endif
#ifdef WITH_SYSTEMD
static gboolean
is_systemd_login_session (GdmManager *self,
......@@ -461,10 +341,6 @@ is_login_session (GdmManager *self,
}
#endif
#ifdef WITH_CONSOLE_KIT
return is_consolekit_login_session (self, connection, session_id, error);
#endif
return FALSE;
}
......@@ -501,46 +377,6 @@ activate_session_id_for_systemd (GdmManager *manager,
}
#endif
#ifdef WITH_CONSOLE_KIT
static gboolean
activate_session_id_for_ck (GdmManager *manager,
const char *seat_id,
const char *session_id)
{
GError *error = NULL;
GVariant *reply;
reply = g_dbus_connection_call_sync (manager->priv->connection,
CK_NAME,
seat_id,
"org.freedesktop.ConsoleKit.Seat",
"ActivateSession",
g_variant_new ("(o)", session_id),
NULL, /* expected reply */
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&error);
if (reply == NULL) {
g_debug ("GdmManager: ConsoleKit %s raised:\n %s\n\n",
g_dbus_error_get_remote_error (error), error->message);
g_error_free (error);
/* It is very likely that the "error" just reported is
* that the session is already active. Unfortunately,
* ConsoleKit doesn't use proper error codes and it
* translates the error message, so we have no real way
* to detect this case...
*/
return TRUE;
}
g_variant_unref (reply);
return TRUE;
}
#endif
static gboolean
activate_session_id (GdmManager *manager,
const char *seat_id,
......@@ -553,11 +389,7 @@ activate_session_id (GdmManager *manager,
}
#endif
#ifdef WITH_CONSOLE_KIT
return activate_session_id_for_ck (manager, seat_id, session_id);
#else
return FALSE;
#endif
}
#ifdef WITH_SYSTEMD
......@@ -592,38 +424,6 @@ session_unlock_for_systemd (GdmManager *manager,
}
#endif
#ifdef WITH_CONSOLE_KIT
static gboolean
session_unlock_for_ck (GdmManager *manager,
const char *ssid)
{
GError *error = NULL;
GVariant *reply;
reply = g_dbus_connection_call_sync (manager->priv->connection,
CK_NAME,
ssid,
CK_SESSION_INTERFACE,
"Unlock",
NULL, /* parameters */
NULL, /* expected reply */
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&error);
if (reply == NULL) {
g_debug ("GdmManager: ConsoleKit %s raised:\n %s\n\n",
g_dbus_error_get_remote_error (error), error->message);
g_error_free (error);
return FALSE;
}
g_variant_unref (reply);
return TRUE;
}
#endif
static gboolean
session_unlock (GdmManager *manager,
const char *ssid)
......@@ -637,11 +437,7 @@ session_unlock (GdmManager *manager,
}
#endif
#ifdef WITH_CONSOLE_KIT
return session_unlock_for_ck (manager, ssid);
#else
return TRUE;
#endif
}
static GdmSession *
......@@ -674,38 +470,6 @@ find_session_for_user_on_seat (GdmManager *manager,
return NULL;
}
<