This commit is contained in:
parent
80f14adb49
commit
adc7f6d78a
@ -665,7 +665,7 @@ index 0000000..4ba9d18
|
|||||||
+#endif /* __GDM_DOMAIN_CHOOSER_WIDGET_H */
|
+#endif /* __GDM_DOMAIN_CHOOSER_WIDGET_H */
|
||||||
diff --git a/gui/simple-greeter/gdm-domain-option-widget.c b/gui/simple-greeter/gdm-domain-option-widget.c
|
diff --git a/gui/simple-greeter/gdm-domain-option-widget.c b/gui/simple-greeter/gdm-domain-option-widget.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..93eb5f5
|
index 0000000..31e76e2
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/gui/simple-greeter/gdm-domain-option-widget.c
|
+++ b/gui/simple-greeter/gdm-domain-option-widget.c
|
||||||
@@ -0,0 +1,379 @@
|
@@ -0,0 +1,379 @@
|
||||||
@ -968,7 +968,7 @@ index 0000000..93eb5f5
|
|||||||
+
|
+
|
||||||
+ gdm_recent_option_widget_set_gconf_key (GDM_RECENT_OPTION_WIDGET (domain_option_widget),
|
+ gdm_recent_option_widget_set_gconf_key (GDM_RECENT_OPTION_WIDGET (domain_option_widget),
|
||||||
+ "/apps/gdm/simple-greeter/recent-domains",
|
+ "/apps/gdm/simple-greeter/recent-domains",
|
||||||
+ gdm_domain_option_widget_lookup_item,
|
+ (GdmRecentOptionLookupItemFunc) gdm_domain_option_widget_lookup_item,
|
||||||
+ &error);
|
+ &error);
|
||||||
+
|
+
|
||||||
+ if (error != NULL) {
|
+ if (error != NULL) {
|
||||||
@ -1115,10 +1115,10 @@ index 0000000..4913ede
|
|||||||
+#endif /* __GDM_DOMAIN_OPTION_WIDGET_H */
|
+#endif /* __GDM_DOMAIN_OPTION_WIDGET_H */
|
||||||
diff --git a/gui/simple-greeter/gdm-domain-provider.c b/gui/simple-greeter/gdm-domain-provider.c
|
diff --git a/gui/simple-greeter/gdm-domain-provider.c b/gui/simple-greeter/gdm-domain-provider.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..2bd9189
|
index 0000000..2924291
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/gui/simple-greeter/gdm-domain-provider.c
|
+++ b/gui/simple-greeter/gdm-domain-provider.c
|
||||||
@@ -0,0 +1,478 @@
|
@@ -0,0 +1,536 @@
|
||||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
|
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
|
||||||
+ *
|
+ *
|
||||||
+ * Copyright (C) 2008 Hans Petter Jansson <hpj@novell.com>
|
+ * Copyright (C) 2008 Hans Petter Jansson <hpj@novell.com>
|
||||||
@ -1167,9 +1167,10 @@ index 0000000..2bd9189
|
|||||||
+
|
+
|
||||||
+typedef enum
|
+typedef enum
|
||||||
+{
|
+{
|
||||||
+ STATE_IDLE,
|
+ STATE_IDLE, /* Next state: STATE_QUERY_SEPARATOR */
|
||||||
+ STATE_QUERY_SEPARATOR,
|
+ STATE_QUERY_SEPARATOR, /* Next state: STATE_QUERY_OWN_DOMAIN or STATE_IDLE */
|
||||||
+ STATE_QUERY_DOMAINS
|
+ STATE_QUERY_OWN_DOMAIN, /* Next state: STATE_QUERY_TRUSTED_DOMAINS or STATE_IDLE */
|
||||||
|
+ STATE_QUERY_TRUSTED_DOMAINS, /* Next state: STATE_IDLE */
|
||||||
+}
|
+}
|
||||||
+State;
|
+State;
|
||||||
+
|
+
|
||||||
@ -1194,6 +1195,8 @@ index 0000000..2bd9189
|
|||||||
+ GPid cmd_pid;
|
+ GPid cmd_pid;
|
||||||
+ CmdEndFunc cmd_end_func;
|
+ CmdEndFunc cmd_end_func;
|
||||||
+
|
+
|
||||||
|
+ gchar *domains_output;
|
||||||
|
+
|
||||||
+ guint callback_id;
|
+ guint callback_id;
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
@ -1383,6 +1386,9 @@ index 0000000..2bd9189
|
|||||||
+{
|
+{
|
||||||
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
||||||
+
|
+
|
||||||
|
+ g_free (priv->domains_output);
|
||||||
|
+ priv->domains_output = NULL;
|
||||||
|
+
|
||||||
+ if (priv->something_changed) {
|
+ if (priv->something_changed) {
|
||||||
+ /* Emit changed signal */
|
+ /* Emit changed signal */
|
||||||
+
|
+
|
||||||
@ -1395,7 +1401,7 @@ index 0000000..2bd9189
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void
|
+static void
|
||||||
+get_domains_end (GdmDomainProvider *domain_provider, gchar *output, gint status)
|
+get_trusted_domains_end (GdmDomainProvider *domain_provider, gchar *output, gint status)
|
||||||
+{
|
+{
|
||||||
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
||||||
+ GList *domains = NULL;
|
+ GList *domains = NULL;
|
||||||
@ -1405,6 +1411,11 @@ index 0000000..2bd9189
|
|||||||
+ gchar **tokens;
|
+ gchar **tokens;
|
||||||
+ gint i;
|
+ gint i;
|
||||||
+
|
+
|
||||||
|
+ if (priv->domains_output) {
|
||||||
|
+ output = g_realloc (output, strlen (output) + strlen (priv->domains_output) + 1);
|
||||||
|
+ strcat (output, priv->domains_output);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ tokens = g_strsplit_set (output, "\n\r", N_DOMAINS_MAX);
|
+ tokens = g_strsplit_set (output, "\n\r", N_DOMAINS_MAX);
|
||||||
+
|
+
|
||||||
+ g_qsort_with_data (tokens,
|
+ g_qsort_with_data (tokens,
|
||||||
@ -1418,6 +1429,18 @@ index 0000000..2bd9189
|
|||||||
+ if (!strlen (tokens [i]))
|
+ if (!strlen (tokens [i]))
|
||||||
+ continue;
|
+ continue;
|
||||||
+
|
+
|
||||||
|
+ /* Ensure no duplicates */
|
||||||
|
+ if (i > 0 && !g_ascii_strcasecmp (tokens [i], tokens [i - 1]))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ /* Ensure no builtin */
|
||||||
|
+ if (!g_ascii_strcasecmp (tokens [i], "BUILTIN"))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ /* Ensure no local host name */
|
||||||
|
+ if (!g_ascii_strcasecmp (tokens [i], g_get_host_name ()))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
+ domains = g_list_prepend (domains, tokens [i]);
|
+ domains = g_list_prepend (domains, tokens [i]);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -1426,6 +1449,8 @@ index 0000000..2bd9189
|
|||||||
+ domains = g_list_reverse (domains);
|
+ domains = g_list_reverse (domains);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ g_free (output);
|
||||||
|
+
|
||||||
+ old_domains = priv->domains;
|
+ old_domains = priv->domains;
|
||||||
+ priv->domains = domains;
|
+ priv->domains = domains;
|
||||||
+
|
+
|
||||||
@ -1441,13 +1466,38 @@ index 0000000..2bd9189
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void
|
+static void
|
||||||
+get_domains_begin (GdmDomainProvider *domain_provider)
|
+get_trusted_domains_begin (GdmDomainProvider *domain_provider)
|
||||||
+{
|
+{
|
||||||
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
||||||
+ const gchar * const cmd_args [] = { "wbinfo", "--all-domains", NULL };
|
+ const gchar * const cmd_args [] = { "wbinfo", "--trusted-domains", NULL };
|
||||||
+
|
+
|
||||||
+ if (async_spawn_and_read (domain_provider, cmd_args, get_domains_end))
|
+ if (async_spawn_and_read (domain_provider, cmd_args, get_trusted_domains_end))
|
||||||
+ priv->state = STATE_QUERY_DOMAINS;
|
+ priv->state = STATE_QUERY_TRUSTED_DOMAINS;
|
||||||
|
+ else
|
||||||
|
+ idle_begin (domain_provider);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+get_own_domain_end (GdmDomainProvider *domain_provider, gchar *output, gint status)
|
||||||
|
+{
|
||||||
|
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
||||||
|
+
|
||||||
|
+ if (status == 0 && output != NULL && *output)
|
||||||
|
+ priv->domains_output = output;
|
||||||
|
+
|
||||||
|
+ /* Next state */
|
||||||
|
+
|
||||||
|
+ get_trusted_domains_begin (domain_provider);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+get_own_domain_begin (GdmDomainProvider *domain_provider)
|
||||||
|
+{
|
||||||
|
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
|
||||||
|
+ const gchar * const cmd_args [] = { "wbinfo", "--own-domain", NULL };
|
||||||
|
+
|
||||||
|
+ if (async_spawn_and_read (domain_provider, cmd_args, get_own_domain_end))
|
||||||
|
+ priv->state = STATE_QUERY_OWN_DOMAIN;
|
||||||
+ else
|
+ else
|
||||||
+ idle_begin (domain_provider);
|
+ idle_begin (domain_provider);
|
||||||
+}
|
+}
|
||||||
@ -1460,15 +1510,18 @@ index 0000000..2bd9189
|
|||||||
+ gchar *old_separator;
|
+ gchar *old_separator;
|
||||||
+
|
+
|
||||||
+ if (status == 0 && output != NULL) {
|
+ if (status == 0 && output != NULL) {
|
||||||
+ gchar *p0;
|
+ gchar *p0, *p1;
|
||||||
+
|
+
|
||||||
+ p0 = strchr (output, '\n');
|
+ p0 = strchr (output, '\n');
|
||||||
+ if (!p0)
|
+ p1 = strchr (output, '\r');
|
||||||
+ p0 = strchr (output, '\r');
|
+ if (!p0 || (p1 && p1 < p0))
|
||||||
|
+ p0 = p1;
|
||||||
+
|
+
|
||||||
+ if (p0 && p0 != output) {
|
+ if (p0 && p0 != output) {
|
||||||
+ *p0 = 0;
|
+ *p0 = 0;
|
||||||
+ separator = g_strdup (output);
|
+ separator = output;
|
||||||
|
+ } else {
|
||||||
|
+ g_free (output);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -1483,7 +1536,7 @@ index 0000000..2bd9189
|
|||||||
+ /* Next state */
|
+ /* Next state */
|
||||||
+
|
+
|
||||||
+ if (priv->separator)
|
+ if (priv->separator)
|
||||||
+ get_domains_begin (domain_provider);
|
+ get_own_domain_begin (domain_provider);
|
||||||
+ else
|
+ else
|
||||||
+ idle_begin (domain_provider);
|
+ idle_begin (domain_provider);
|
||||||
+}
|
+}
|
||||||
@ -1536,16 +1589,21 @@ index 0000000..2bd9189
|
|||||||
+static void
|
+static void
|
||||||
+gdm_domain_provider_finalize (GObject *object)
|
+gdm_domain_provider_finalize (GObject *object)
|
||||||
+{
|
+{
|
||||||
+ GdmDomainProvider *domain_provider;
|
+ GdmDomainProvider *domain_provider;
|
||||||
|
+ GdmDomainProviderPrivate *priv;
|
||||||
+
|
+
|
||||||
+ g_return_if_fail (object != NULL);
|
+ g_return_if_fail (object != NULL);
|
||||||
+ g_return_if_fail (GDM_IS_DOMAIN_PROVIDER (object));
|
+ g_return_if_fail (GDM_IS_DOMAIN_PROVIDER (object));
|
||||||
+
|
+
|
||||||
+ domain_provider = GDM_DOMAIN_PROVIDER (object);
|
+ domain_provider = GDM_DOMAIN_PROVIDER (object);
|
||||||
|
+ priv = domain_provider->priv;
|
||||||
+
|
+
|
||||||
+ /* Stop the state machine */
|
+ /* Stop the state machine */
|
||||||
+ cmd_cleanup (domain_provider, NULL);
|
+ cmd_cleanup (domain_provider, NULL);
|
||||||
+
|
+
|
||||||
|
+ g_free (priv->domains_output);
|
||||||
|
+ priv->domains_output = NULL;
|
||||||
|
+
|
||||||
+ G_OBJECT_CLASS (gdm_domain_provider_parent_class)->finalize (object);
|
+ G_OBJECT_CLASS (gdm_domain_provider_parent_class)->finalize (object);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
@ -1836,7 +1894,7 @@ index 07cca3f..6079569 100644
|
|||||||
|
|
||||||
#endif /* __GDM_GREETER_PANEL_H */
|
#endif /* __GDM_GREETER_PANEL_H */
|
||||||
diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
|
diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
|
||||||
index 83375b2..fe85746 100644
|
index 83375b2..251e7c8 100644
|
||||||
--- a/gui/simple-greeter/gdm-greeter-session.c
|
--- a/gui/simple-greeter/gdm-greeter-session.c
|
||||||
+++ b/gui/simple-greeter/gdm-greeter-session.c
|
+++ b/gui/simple-greeter/gdm-greeter-session.c
|
||||||
@@ -38,6 +38,8 @@
|
@@ -38,6 +38,8 @@
|
||||||
@ -1954,7 +2012,7 @@ index 83375b2..fe85746 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -236,13 +296,46 @@ on_select_layout (GdmGreeterSession *session,
|
@@ -236,13 +296,39 @@ on_select_layout (GdmGreeterSession *session,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1968,13 +2026,6 @@ index 83375b2..fe85746 100644
|
|||||||
+
|
+
|
||||||
+ if (text && strcmp (text, "__local") && strcmp (text, "__other"))
|
+ if (text && strcmp (text, "__local") && strcmp (text, "__other"))
|
||||||
+ session->priv->domain = g_strdup (text);
|
+ session->priv->domain = g_strdup (text);
|
||||||
+
|
|
||||||
+ domain_and_user = maybe_prepend_domain_to_user (session, session->priv->user);
|
|
||||||
+
|
|
||||||
+ gdm_greeter_client_call_select_user (session->priv->client,
|
|
||||||
+ domain_and_user);
|
|
||||||
+
|
|
||||||
+ g_free (domain_and_user);
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void
|
+static void
|
||||||
@ -2002,7 +2053,7 @@ index 83375b2..fe85746 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -251,6 +344,10 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
|
@@ -251,6 +337,10 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
|
||||||
{
|
{
|
||||||
gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel));
|
gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel));
|
||||||
gdm_greeter_client_call_cancel (session->priv->client);
|
gdm_greeter_client_call_cancel (session->priv->client);
|
||||||
@ -2013,7 +2064,7 @@ index 83375b2..fe85746 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -300,6 +397,11 @@ toggle_panel (GdmGreeterSession *session,
|
@@ -300,6 +390,11 @@ toggle_panel (GdmGreeterSession *session,
|
||||||
G_CALLBACK (on_select_session),
|
G_CALLBACK (on_select_session),
|
||||||
session);
|
session);
|
||||||
|
|
||||||
@ -2025,7 +2076,7 @@ index 83375b2..fe85746 100644
|
|||||||
gtk_widget_show (session->priv->panel);
|
gtk_widget_show (session->priv->panel);
|
||||||
} else {
|
} else {
|
||||||
gtk_widget_destroy (session->priv->panel);
|
gtk_widget_destroy (session->priv->panel);
|
||||||
@@ -542,6 +644,8 @@ gdm_greeter_session_init (GdmGreeterSession *session)
|
@@ -542,6 +637,8 @@ gdm_greeter_session_init (GdmGreeterSession *session)
|
||||||
G_CALLBACK (on_user_authorized),
|
G_CALLBACK (on_user_authorized),
|
||||||
session);
|
session);
|
||||||
|
|
||||||
@ -2034,7 +2085,7 @@ index 83375b2..fe85746 100644
|
|||||||
/* We want to listen for panel mnemonics even if the
|
/* We want to listen for panel mnemonics even if the
|
||||||
* login window is focused, so we intercept them here.
|
* login window is focused, so we intercept them here.
|
||||||
*/
|
*/
|
||||||
@@ -563,6 +667,9 @@ gdm_greeter_session_finalize (GObject *object)
|
@@ -563,6 +660,9 @@ gdm_greeter_session_finalize (GObject *object)
|
||||||
|
|
||||||
g_return_if_fail (greeter_session->priv != NULL);
|
g_return_if_fail (greeter_session->priv != NULL);
|
||||||
|
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Dec 4 01:26:30 CST 2008 - hpj@novell.com
|
Thu Dec 4 23:47:59 CST 2008 - hpj@novell.com
|
||||||
|
|
||||||
|
- Update gdm-domain-logon.patch to omit undesirable domains
|
||||||
|
(bnc#450143).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 3 01:26:30 CST 2008 - hpj@novell.com
|
||||||
|
|
||||||
- Replace gdm-2.21.5-vt7-temporary-hack.patch with
|
- Replace gdm-2.21.5-vt7-temporary-hack.patch with
|
||||||
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
|
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
|
||||||
|
5
gdm.spec
5
gdm.spec
@ -57,7 +57,7 @@ PreReq: %insserv_prereq
|
|||||||
License: GPL v2 or later
|
License: GPL v2 or later
|
||||||
Group: System/GUI/GNOME
|
Group: System/GUI/GNOME
|
||||||
Version: 2.24.0
|
Version: 2.24.0
|
||||||
Release: 14
|
Release: 15
|
||||||
Summary: The GNOME 2.x Display Manager
|
Summary: The GNOME 2.x Display Manager
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Source1: gdm.pamd
|
Source1: gdm.pamd
|
||||||
@ -287,6 +287,9 @@ fi
|
|||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Thu Dec 04 2008 hpj@novell.com
|
* Thu Dec 04 2008 hpj@novell.com
|
||||||
|
- Update gdm-domain-logon.patch to omit undesirable domains
|
||||||
|
(bnc#450143).
|
||||||
|
* Wed Dec 03 2008 hpj@novell.com
|
||||||
- Replace gdm-2.21.5-vt7-temporary-hack.patch with
|
- Replace gdm-2.21.5-vt7-temporary-hack.patch with
|
||||||
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
|
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
|
||||||
to VT7, but instead scans for a free VT starting with VT7
|
to VT7, but instead scans for a free VT starting with VT7
|
||||||
|
Loading…
x
Reference in New Issue
Block a user