SHA256
1
0
forked from pool/gdm
OBS User unknown 2008-12-05 14:24:11 +00:00 committed by Git OBS Bridge
parent 80f14adb49
commit adc7f6d78a
3 changed files with 93 additions and 33 deletions

View File

@ -665,7 +665,7 @@ index 0000000..4ba9d18
+#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
new file mode 100644
index 0000000..93eb5f5
index 0000000..31e76e2
--- /dev/null
+++ b/gui/simple-greeter/gdm-domain-option-widget.c
@@ -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),
+ "/apps/gdm/simple-greeter/recent-domains",
+ gdm_domain_option_widget_lookup_item,
+ (GdmRecentOptionLookupItemFunc) gdm_domain_option_widget_lookup_item,
+ &error);
+
+ if (error != NULL) {
@ -1115,10 +1115,10 @@ index 0000000..4913ede
+#endif /* __GDM_DOMAIN_OPTION_WIDGET_H */
diff --git a/gui/simple-greeter/gdm-domain-provider.c b/gui/simple-greeter/gdm-domain-provider.c
new file mode 100644
index 0000000..2bd9189
index 0000000..2924291
--- /dev/null
+++ 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 -*-
+ *
+ * Copyright (C) 2008 Hans Petter Jansson <hpj@novell.com>
@ -1167,9 +1167,10 @@ index 0000000..2bd9189
+
+typedef enum
+{
+ STATE_IDLE,
+ STATE_QUERY_SEPARATOR,
+ STATE_QUERY_DOMAINS
+ STATE_IDLE, /* Next state: STATE_QUERY_SEPARATOR */
+ STATE_QUERY_SEPARATOR, /* Next state: STATE_QUERY_OWN_DOMAIN or STATE_IDLE */
+ STATE_QUERY_OWN_DOMAIN, /* Next state: STATE_QUERY_TRUSTED_DOMAINS or STATE_IDLE */
+ STATE_QUERY_TRUSTED_DOMAINS, /* Next state: STATE_IDLE */
+}
+State;
+
@ -1194,6 +1195,8 @@ index 0000000..2bd9189
+ GPid cmd_pid;
+ CmdEndFunc cmd_end_func;
+
+ gchar *domains_output;
+
+ guint callback_id;
+};
+
@ -1383,6 +1386,9 @@ index 0000000..2bd9189
+{
+ GdmDomainProviderPrivate *priv = domain_provider->priv;
+
+ g_free (priv->domains_output);
+ priv->domains_output = NULL;
+
+ if (priv->something_changed) {
+ /* Emit changed signal */
+
@ -1395,7 +1401,7 @@ index 0000000..2bd9189
+}
+
+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;
+ GList *domains = NULL;
@ -1405,6 +1411,11 @@ index 0000000..2bd9189
+ gchar **tokens;
+ 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);
+
+ g_qsort_with_data (tokens,
@ -1418,6 +1429,18 @@ index 0000000..2bd9189
+ if (!strlen (tokens [i]))
+ 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]);
+ }
+
@ -1426,6 +1449,8 @@ index 0000000..2bd9189
+ domains = g_list_reverse (domains);
+ }
+
+ g_free (output);
+
+ old_domains = priv->domains;
+ priv->domains = domains;
+
@ -1441,13 +1466,38 @@ index 0000000..2bd9189
+}
+
+static void
+get_domains_begin (GdmDomainProvider *domain_provider)
+get_trusted_domains_begin (GdmDomainProvider *domain_provider)
+{
+ 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))
+ priv->state = STATE_QUERY_DOMAINS;
+ if (async_spawn_and_read (domain_provider, cmd_args, get_trusted_domains_end))
+ 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
+ idle_begin (domain_provider);
+}
@ -1460,15 +1510,18 @@ index 0000000..2bd9189
+ gchar *old_separator;
+
+ if (status == 0 && output != NULL) {
+ gchar *p0;
+ gchar *p0, *p1;
+
+ p0 = strchr (output, '\n');
+ if (!p0)
+ p0 = strchr (output, '\r');
+ p1 = strchr (output, '\r');
+ if (!p0 || (p1 && p1 < p0))
+ p0 = p1;
+
+ if (p0 && p0 != output) {
+ *p0 = 0;
+ separator = g_strdup (output);
+ separator = output;
+ } else {
+ g_free (output);
+ }
+ }
+
@ -1483,7 +1536,7 @@ index 0000000..2bd9189
+ /* Next state */
+
+ if (priv->separator)
+ get_domains_begin (domain_provider);
+ get_own_domain_begin (domain_provider);
+ else
+ idle_begin (domain_provider);
+}
@ -1536,16 +1589,21 @@ index 0000000..2bd9189
+static void
+gdm_domain_provider_finalize (GObject *object)
+{
+ GdmDomainProvider *domain_provider;
+ GdmDomainProvider *domain_provider;
+ GdmDomainProviderPrivate *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GDM_IS_DOMAIN_PROVIDER (object));
+
+ domain_provider = GDM_DOMAIN_PROVIDER (object);
+ priv = domain_provider->priv;
+
+ /* Stop the state machine */
+ cmd_cleanup (domain_provider, NULL);
+
+ g_free (priv->domains_output);
+ priv->domains_output = NULL;
+
+ G_OBJECT_CLASS (gdm_domain_provider_parent_class)->finalize (object);
+}
+
@ -1836,7 +1894,7 @@ index 07cca3f..6079569 100644
#endif /* __GDM_GREETER_PANEL_H */
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
+++ b/gui/simple-greeter/gdm-greeter-session.c
@@ -38,6 +38,8 @@
@ -1954,7 +2012,7 @@ index 83375b2..fe85746 100644
}
static void
@@ -236,13 +296,46 @@ on_select_layout (GdmGreeterSession *session,
@@ -236,13 +296,39 @@ on_select_layout (GdmGreeterSession *session,
}
static void
@ -1968,13 +2026,6 @@ index 83375b2..fe85746 100644
+
+ if (text && strcmp (text, "__local") && strcmp (text, "__other"))
+ 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
@ -2002,7 +2053,7 @@ index 83375b2..fe85746 100644
}
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_client_call_cancel (session->priv->client);
@ -2013,7 +2064,7 @@ index 83375b2..fe85746 100644
}
static void
@@ -300,6 +397,11 @@ toggle_panel (GdmGreeterSession *session,
@@ -300,6 +390,11 @@ toggle_panel (GdmGreeterSession *session,
G_CALLBACK (on_select_session),
session);
@ -2025,7 +2076,7 @@ index 83375b2..fe85746 100644
gtk_widget_show (session->priv->panel);
} else {
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),
session);
@ -2034,7 +2085,7 @@ index 83375b2..fe85746 100644
/* We want to listen for panel mnemonics even if the
* 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);

View File

@ -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
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm

View File

@ -57,7 +57,7 @@ PreReq: %insserv_prereq
License: GPL v2 or later
Group: System/GUI/GNOME
Version: 2.24.0
Release: 14
Release: 15
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@ -287,6 +287,9 @@ fi
%changelog
* 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
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
to VT7, but instead scans for a free VT starting with VT7