SHA256
1
0
forked from pool/gdm
OBS User unknown 2008-08-13 23:48:24 +00:00 committed by Git OBS Bridge
parent 1dad7090c8
commit be6da14d1b
35 changed files with 200 additions and 3467 deletions

View File

@ -1,21 +0,0 @@
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="gdm">
<allow send_interface="org.freedesktop.ConsoleKit.Manager"/>
<allow send_interface="org.freedesktop.ConsoleKit.Seat"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"/>
<allow send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="OpenConsoleWithParameters"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"
send_member="Lock"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"
send_member="Unlock"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.DBus.Properties" />
</policy>
</busconfig>

View File

@ -1,63 +0,0 @@
diff -upr gdm-2.19.5-pre/daemon/getvt.c gdm-2.19.5-post/daemon/getvt.c
--- gdm-2.19.5-pre/daemon/getvt.c 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/getvt.c 2007-08-03 20:14:13.000000000 -0500
@@ -181,8 +181,10 @@ get_free_vt_sys (int *vtfd)
int vtno;
unsigned short vtmask;
struct vt_stat vtstat;
+ guint v_state;
*vtfd = -1;
+ fdv = -1;
do {
errno = 0;
@@ -193,26 +195,33 @@ get_free_vt_sys (int *vtfd)
#endif
, 0);
} while G_UNLIKELY (errno == EINTR);
- if (fd < 0)
- return -1;
- if (ioctl (fd, VT_GETSTATE, &vtstat) < 0) {
- VE_IGNORE_EINTR (close (fd));
- return -1;
- }
+ if (fd >= 0 && ioctl (fd, VT_GETSTATE, &vtstat) >= 0)
+ v_state = vtstat.v_state;
+ else
+ v_state = 0;
- for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno;
- vtstat.v_state & vtmask; vtno++, vtmask <<= 1);
- if (!vtmask) {
- VE_IGNORE_EINTR (close (fd));
- return -1;
+ for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
+ /* Is this console in use? */
+ if (v_state & vtmask)
+ continue;
+
+ /* No, try to open it */
+ fdv = open_vt (vtno);
+ if (fdv >= 0)
+ break;
+
+ /* If we're here, kernel indicated that the console was free,
+ * but we failed to open it. Just go on to higher VTs. */
}
- fdv = open_vt (vtno);
- if (fdv < 0) {
+ if (fdv < 0)
+ vtno = -1;
+
+ if (fd >= 0) {
VE_IGNORE_EINTR (close (fd));
- return -1;
}
+
*vtfd = fdv;
return vtno;
}
Only in gdm-2.19.5-post: error.21177

View File

@ -1,98 +0,0 @@
--- gdm-2.8.0.7/configure.ac~ 2007-01-19 14:00:55.000000000 -0500
+++ gdm-2.8.0.7/configure.ac 2007-01-19 14:07:11.000000000 -0500
@@ -141,7 +142,7 @@ PKG_CHECK_MODULES(VICIOUS, gtk+-2.0 >= $
AC_SUBST(VICIOUS_CFLAGS)
AC_SUBST(VICIOUS_LIBS)
-PKG_CHECK_MODULES(DAEMON, gtk+-2.0 >= $GTK_REQUIRED)
+PKG_CHECK_MODULES(DAEMON, gtk+-2.0 >= $GTK_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
AC_SUBST(DAEMON_CFLAGS)
AC_SUBST(DAEMON_LIBS)
--- gdm-2.8.0.7/daemon/gdm.c~ 2007-01-19 14:00:55.000000000 -0500
+++ gdm-2.8.0.7/daemon/gdm.c 2007-01-19 14:14:12.000000000 -0500
@@ -42,6 +42,9 @@
#include <syslog.h>
#include <locale.h>
+#define DBUS_API_SUBJECT_TO_CHANGE
+#include <dbus/dbus-glib.h>
+
/* This should be moved to auth.c I suppose */
#include <X11/Xauth.h>
@@ -70,6 +73,10 @@
#include <libdevinfo.h>
#endif /* HAVE_LOGINDEVPERM */
+#define MONITOR_SERVICE "com.novell.Pkcs11Monitor"
+#define MONITOR_PATH "/com/novell/Pkcs11Monitor"
+#define MONITOR_INTERFACE "com.novell.Pkcs11Monitor"
+
/* Local functions */
static void gdm_config_parse (void);
static void gdm_handle_message (GdmConnection *conn,
@@ -78,6 +85,8 @@ static void gdm_handle_message (GdmConne
static void gdm_handle_user_message (GdmConnection *conn,
const char *msg,
gpointer data);
+static void gdm_reset_local_displays (void);
+static void gdm_watch_for_security_tokens (void);
static void gdm_daemonify (void);
static void gdm_safe_restart (void);
static void gdm_try_logout_action (GdmDisplay *disp);
--- gdm-2.19.3/daemon/gdm.c~ 2007-07-25 14:52:56.000000000 -0400
+++ gdm-2.19.3/daemon/gdm.c 2007-07-25 14:56:18.000000000 -0400
@@ -1800,6 +1800,8 @@ main (int argc, char *argv[])
gdm_xdmcp_run ();
}
+ gdm_watch_for_security_tokens ();
+
/* We always exit via exit (), and sadly we need to g_main_quit ()
* at times not knowing if it's this main or a recursive one we're
* quitting.
@@ -4355,3 +4357,43 @@ gdm_handle_user_message (GdmConnection *
gdm_connection_close (conn);
}
}
+
+static void
+gdm_reset_local_displays (void)
+{
+ GSList *li;
+
+ for (li = gdm_daemon_config_get_display_list (); li != NULL; li = li->next) {
+ GdmDisplay *d = li->data;
+
+ if (d->attached)
+ send_slave_command (d, GDM_NOTIFY_RESET);
+ }
+}
+
+static void
+gdm_watch_for_security_tokens (void)
+{
+ DBusGConnection *conn;
+ GError *err = NULL;
+ DBusGProxy *monitor;
+
+ conn = dbus_g_bus_get (DBUS_BUS_SYSTEM, &err);
+ if (!conn) {
+ gdm_error (_("Cannot connect to dbus bus; smart card support disabled: %s"),
+ err->message);
+ g_error_free (err);
+ return;
+ }
+
+ monitor = dbus_g_proxy_new_for_name (conn,
+ MONITOR_SERVICE,
+ MONITOR_PATH,
+ MONITOR_INTERFACE);
+
+ dbus_g_proxy_add_signal (monitor, "SecurityTokenInserted", G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
+
+ dbus_g_proxy_add_signal (monitor, "SecurityTokenRemoved", G_TYPE_STRING, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenRemoved", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
+}

View File

@ -1,183 +0,0 @@
diff -upr gdm-2.19.5-pre/daemon/gdm.c gdm-2.19.5-post/daemon/gdm.c
--- gdm-2.19.5-pre/daemon/gdm.c 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm.c 2007-08-03 20:23:38.000000000 -0500
@@ -4363,6 +4363,14 @@ gdm_handle_user_message (GdmConnection *
gdm_connection_write (conn, "OK false\n");
} else if (strcmp (msg, GDM_SUP_CLOSE) == 0) {
gdm_connection_close (conn);
+ } else if (strcmp (msg, GDM_SOP_CANCEL_LOGIN_REQUESTS) == 0) {
+ GSList *li;
+ for (li = gdm_daemon_config_get_display_list (); li != NULL; li = li->next) {
+ GdmDisplay *d = li->data;
+ if (!d->logged_in) {
+ send_slave_command (d, GDM_NOTIFY_RESET);
+ }
+ }
} else {
gdm_connection_write (conn, "ERROR 0 Not implemented\n");
gdm_connection_close (conn);
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 20:23:38.000000000 -0500
@@ -233,6 +233,7 @@ G_BEGIN_DECLS
#define GDM_NOTIFY_SOFT_RESTART_SERVERS "SOFT_RESTART_SERVERS"
#define GDM_NOTIFY_GO "GO"
#define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
+#define GDM_NOTIFY_RESET "RESET"
G_END_DECLS
diff -upr gdm-2.19.5-pre/daemon/gdm-socket-protocol.h gdm-2.19.5-post/daemon/gdm-socket-protocol.h
--- gdm-2.19.5-pre/daemon/gdm-socket-protocol.h 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-socket-protocol.h 2007-08-03 20:23:38.000000000 -0500
@@ -157,6 +157,8 @@
#define GDM_SOP_SHOW_QUESTION_DIALOG "SHOW_QUESTION_DIALOG" /* show the question dialog from daemon */
#define GDM_SOP_SHOW_ASKBUTTONS_DIALOG "SHOW_ASKBUTTON_DIALOG" /* show the askbutton dialog from daemon */
+/* Reset any in progress authentication conversations */
+#define GDM_SOP_CANCEL_LOGIN_REQUESTS "CANCEL_LOGIN_REQUESTS" /* no arguments */
/* Ack for a slave message */
/* Note that an extra response can follow an 'ack' */
diff -upr gdm-2.19.5-pre/daemon/slave.c gdm-2.19.5-post/daemon/slave.c
--- gdm-2.19.5-pre/daemon/slave.c 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/slave.c 2007-08-03 20:24:23.000000000 -0500
@@ -175,6 +175,12 @@ static int gdm_normal_runlevel =
static pid_t extra_process = 0;
static int extra_status = 0;
+/* a dup of the other side of greeter_fd_in so that
+ * the slave can talk to itself from its sig handler
+ * using the greeter ipc mechanism
+ */
+static int slave_fd_out = -1;
+
#ifdef HAVE_TSOL
static gboolean have_suntsol_extension = FALSE;
#endif
@@ -663,7 +669,7 @@ ignore_xerror_handler (Display *disp, XE
}
static void
-whack_greeter_fds (void)
+whack_greeter_and_slave_fds (void)
{
if (greeter_fd_out > 0)
VE_IGNORE_EINTR (close (greeter_fd_out));
@@ -671,6 +677,9 @@ whack_greeter_fds (void)
if (greeter_fd_in > 0)
VE_IGNORE_EINTR (close (greeter_fd_in));
greeter_fd_in = -1;
+ if (slave_fd_out > 0)
+ VE_IGNORE_EINTR (close (slave_fd_out));
+ slave_fd_out = -1;
}
static void
@@ -1156,7 +1165,7 @@ gdm_slave_whack_greeter (void)
d->greetpid = 0;
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
@@ -2005,7 +2014,7 @@ restart_the_greeter (void)
d->greetpid = 0;
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
}
@@ -2295,6 +2304,12 @@ gdm_slave_wait_for_login (void)
break;
}
+ if (do_cancel) {
+ gdm_debug ("canceling...");
+ gdm_slave_greeter_ctl_no_ret (GDM_RESETOK, "");
+ continue;
+ }
+
if (login_user == NULL) {
const char *failuresound = gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE);
@@ -2908,9 +2923,10 @@ gdm_slave_greeter (void)
default:
VE_IGNORE_EINTR (close (pipe1[0]));
- VE_IGNORE_EINTR (close (pipe2[1]));
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
+
+ slave_fd_out = pipe2[1];
greeter_fd_out = pipe1[1];
greeter_fd_in = pipe2[0];
@@ -5208,7 +5224,7 @@ gdm_slave_child_handler (int sig)
greet = FALSE;
d->greetpid = 0;
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
do_restart_greeter = TRUE;
@@ -5220,7 +5236,7 @@ gdm_slave_child_handler (int sig)
continue;
}
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
/* if greet is TRUE, then the greeter died outside of our
* control really, so clean up and die, something is wrong
@@ -5363,6 +5379,11 @@ gdm_slave_handle_usr2_message (void)
gdm_wait_for_go = FALSE;
} else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) {
gdm_twiddle_pointer (d);
+ } else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
+ if (!d->logged_in) {
+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
+ STX, BEL, GDM_INTERRUPT_CANCEL);
+ }
}
} else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
gdm_got_ack = TRUE;
Only in gdm-2.19.5-post/daemon: slave.c~
Only in gdm-2.19.5-post: error.18580
diff -upr gdm-2.19.5-pre/gui/greeter/greeter.c gdm-2.19.5-post/gui/greeter/greeter.c
--- gdm-2.19.5-pre/gui/greeter/greeter.c 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-03 20:23:38.000000000 -0500
@@ -278,7 +278,6 @@ process_operation (guchar op_code,
GtkWidget *dlg;
char *tmp;
char *session;
- GreeterItemInfo *conversation_info;
static GnomeCanvasItem *disabled_cover = NULL;
gint lookup_status = SESSION_LOOKUP_SUCCESS;
gchar *firstmsg = NULL;
@@ -483,16 +482,9 @@ process_operation (guchar op_code,
first_prompt = TRUE;
- conversation_info = greeter_lookup_id ("pam-conversation");
-
- if (conversation_info)
- {
- tmp = ve_locale_to_utf8 (args);
- g_object_set (G_OBJECT (conversation_info->item),
- "text", tmp,
- NULL);
- g_free (tmp);
- }
+ greeter_item_ulist_unset_selected_user ();
+ greeter_item_pam_prompt ("", PW_ENTRY_SIZE, TRUE);
+ greeter_item_pam_message ("");
printf ("%c\n", STX);
fflush (stdout);

View File

@ -1,250 +0,0 @@
Index: gdm-2.19.7/daemon/gdm.c
===================================================================
--- gdm-2.19.7.orig/daemon/gdm.c
+++ gdm-2.19.7/daemon/gdm.c
@@ -4395,7 +4395,7 @@ gdm_handle_user_message (GdmConnection *
}
static void
-gdm_reset_local_displays (void)
+send_command_to_locals (const char *msg)
{
GSList *li;
@@ -4403,11 +4403,23 @@ gdm_reset_local_displays (void)
GdmDisplay *d = li->data;
if (d->attached)
- send_slave_command (d, GDM_NOTIFY_RESET);
+ send_slave_command (d, msg);
}
}
static void
+gdm_reset_local_displays (void)
+{
+ send_command_to_locals (GDM_NOTIFY_RESET);
+}
+
+static void
+gdm_do_token_login (void)
+{
+ send_command_to_locals (GDM_NOTIFY_TOKEN_LOGIN);
+}
+
+static void
gdm_watch_for_security_tokens (void)
{
DBusGConnection *conn;
@@ -4428,7 +4440,7 @@ gdm_watch_for_security_tokens (void)
MONITOR_INTERFACE);
dbus_g_proxy_add_signal (monitor, "SecurityTokenInserted", G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_do_token_login), NULL, NULL);
dbus_g_proxy_add_signal (monitor, "SecurityTokenRemoved", G_TYPE_STRING, G_TYPE_INVALID);
dbus_g_proxy_connect_signal (monitor, "SecurityTokenRemoved", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
Index: gdm-2.19.7/daemon/gdm-daemon-config.c
===================================================================
--- gdm-2.19.7.orig/daemon/gdm-daemon-config.c
+++ gdm-2.19.7/daemon/gdm-daemon-config.c
@@ -552,7 +552,8 @@ gdm_daemon_config_key_to_string_per_disp
if (strcmp (group, "greeter") == 0 ||
strcmp (group, "gui") == 0 ||
- is_key (keystring, GDM_KEY_PAM_STACK)) {
+ is_key (keystring, GDM_KEY_PAM_STACK) ||
+ is_key (keystring, GDM_KEY_PAM_STACK_SMARTCARD)) {
ret = gdm_daemon_config_key_to_string (file, keystring, retval);
}
Index: gdm-2.19.7/daemon/gdm-daemon-config-entries.h
===================================================================
--- gdm-2.19.7.orig/daemon/gdm-daemon-config-entries.h
+++ gdm-2.19.7/daemon/gdm-daemon-config-entries.h
@@ -211,6 +211,7 @@ typedef enum {
GDM_ID_SYSTEM_COMMANDS_IN_MENU,
GDM_ID_ALLOW_LOGOUT_ACTIONS,
GDM_ID_RBAC_SYSTEM_COMMAND_KEYS,
+ GDM_ID_SMART_CARD_PAM_STACK,
GDK_ID_LAST
} GdmConfigKey;
@@ -366,6 +367,7 @@ static const GdmConfigEntry gdm_daemon_c
{ GDM_CONFIG_GROUP_SECURITY, "RetryDelay", GDM_CONFIG_VALUE_INT, "1", GDM_ID_RETRY_DELAY },
{ GDM_CONFIG_GROUP_SECURITY, "DisallowTCP", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_DISALLOW_TCP },
{ GDM_CONFIG_GROUP_SECURITY, "PamStack", GDM_CONFIG_VALUE_STRING, "gdm", GDM_ID_PAM_STACK },
+ { GDM_CONFIG_GROUP_SECURITY, "SmartCardPamStack", GDM_CONFIG_VALUE_STRING, "gdm-smartcard", GDM_ID_SMART_CARD_PAM_STACK },
{ GDM_CONFIG_GROUP_SECURITY, "NeverPlaceCookiesOnNFS", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_NEVER_PLACE_COOKIES_ON_NFS },
{ GDM_CONFIG_GROUP_SECURITY, "PasswordRequired", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_PASSWORD_REQUIRED },
Index: gdm-2.19.7/daemon/gdm-daemon-config-keys.h
===================================================================
--- gdm-2.19.7.orig/daemon/gdm-daemon-config-keys.h
+++ gdm-2.19.7/daemon/gdm-daemon-config-keys.h
@@ -105,6 +105,7 @@ G_BEGIN_DECLS
#define GDM_KEY_RETRY_DELAY "security/RetryDelay=1"
#define GDM_KEY_DISALLOW_TCP "security/DisallowTCP=true"
#define GDM_KEY_PAM_STACK "security/PamStack=gdm"
+#define GDM_KEY_PAM_STACK_SMARTCARD "security/SmartCardPamStack=gdm-smartcard"
#define GDM_KEY_NEVER_PLACE_COOKIES_ON_NFS "security/NeverPlaceCookiesOnNFS=true"
#define GDM_KEY_PASSWORD_REQUIRED "security/PasswordRequired=false"
#define GDM_KEY_UTMP_LINE_ATTACHED "security/UtmpLineAttached="
@@ -230,6 +231,7 @@ G_BEGIN_DECLS
#define GDM_NOTIFY_GO "GO"
#define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
#define GDM_NOTIFY_RESET "RESET"
+#define GDM_NOTIFY_TOKEN_LOGIN "TOKEN_LOGIN"
G_END_DECLS
Index: gdm-2.19.7/daemon/gdm-socket-protocol.h
===================================================================
--- gdm-2.19.7.orig/daemon/gdm-socket-protocol.h
+++ gdm-2.19.7/daemon/gdm-socket-protocol.h
@@ -75,6 +75,7 @@
#define GDM_INTERRUPT_CUSTOM_CMD 'M'
#define GDM_INTERRUPT_CANCEL 'X'
#define GDM_INTERRUPT_SELECT_LANG 'O'
+#define GDM_INTERRUPT_TOKEN_LOGIN '$'
/* List delimiter for config file lists */
#define GDM_DELIMITER_MODULES ":"
Index: gdm-2.19.7/daemon/slave.c
===================================================================
--- gdm-2.19.7.orig/daemon/slave.c
+++ gdm-2.19.7/daemon/slave.c
@@ -143,6 +143,8 @@ static gboolean do_configurator =
static gboolean do_cancel = FALSE; /* If this is true, go back to
username entry & unselect
face browser (if present) */
+static gboolean do_token_login = FALSE; /* if true, auth with smart
+ cards */
static gboolean do_restart_greeter = FALSE; /* If this is true, whack the
greeter and try again */
static gboolean restart_greeter_now = FALSE; /* Restart_greeter_when the
@@ -2079,11 +2081,14 @@ play_login_sound (const char *sound_file
static void
gdm_slave_wait_for_login (void)
{
+ gboolean verify_token;
const char *successsound;
char *username;
g_free (login_user);
login_user = NULL;
+ do_token_login = FALSE;
+
/* Chat with greeter */
while (login_user == NULL) {
/* init to a sane value */
@@ -2107,9 +2112,14 @@ gdm_slave_wait_for_login (void)
gdm_debug ("gdm_slave_wait_for_login: In loop");
username = d->preset_user;
d->preset_user = NULL;
+
+ verify_token = do_token_login;
+ do_token_login = FALSE;
+
login_user = gdm_verify_user (d /* the display */,
- username /* username */,
- TRUE /* allow retry */);
+ verify_token ? "" : username /* username */,
+ TRUE /* allow retry */,
+ verify_token);
g_free (username);
gdm_debug ("gdm_slave_wait_for_login: end verify for '%s'",
@@ -5395,6 +5405,11 @@ gdm_slave_handle_usr2_message (void)
gdm_fdprintf (slave_fd_out, "%c%c%c\n",
STX, BEL, GDM_INTERRUPT_CANCEL);
}
+ } else if (strcmp (&s[1], GDM_NOTIFY_TOKEN_LOGIN) == 0) {
+ if (!d->logged_in && d->attached) {
+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
+ STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
+ }
}
} else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
gdm_got_ack = TRUE;
@@ -5595,6 +5610,10 @@ check_for_interruption (const char *msg)
do_restart_greeter = TRUE;
}
break;
+ case GDM_INTERRUPT_TOKEN_LOGIN:
+ do_token_login = TRUE;
+ do_cancel = TRUE;
+ break;
default:
break;
}
Index: gdm-2.19.7/daemon/verify-crypt.c
===================================================================
--- gdm-2.19.7.orig/daemon/verify-crypt.c
+++ gdm-2.19.7/daemon/verify-crypt.c
@@ -101,7 +101,8 @@ print_cant_auth_errbox (void)
gchar *
gdm_verify_user (GdmDisplay *d,
const char *username,
- gboolean allow_retry)
+ gboolean allow_retry,
+ gboolean token)
{
gchar *login, *passwd, *ppasswd;
struct passwd *pwent;
Index: gdm-2.19.7/daemon/verify.h
===================================================================
--- gdm-2.19.7.orig/daemon/verify.h
+++ gdm-2.19.7/daemon/verify.h
@@ -26,7 +26,8 @@
* the timed login timer */
gchar *gdm_verify_user (GdmDisplay *d,
const char *username,
- gboolean allow_retry);
+ gboolean allow_retry,
+ gboolean token);
void gdm_verify_cleanup (GdmDisplay *d);
void gdm_verify_check (void);
void gdm_verify_select_user (const char *user);
Index: gdm-2.19.7/daemon/verify-pam.c
===================================================================
--- gdm-2.19.7.orig/daemon/verify-pam.c
+++ gdm-2.19.7/daemon/verify-pam.c
@@ -878,7 +878,8 @@ log_to_audit_system(const char *login,
gchar *
gdm_verify_user (GdmDisplay *d,
const char *username,
- gboolean allow_retry)
+ gboolean allow_retry,
+ gboolean verify_token)
{
gint pamerr = 0;
struct passwd *pwent = NULL;
@@ -938,8 +939,10 @@ gdm_verify_user (GdmDisplay *d,
* PAM Stacks, in case one display should use a different
* authentication mechanism than another display.
*/
- pam_stack = gdm_daemon_config_get_value_string_per_display (GDM_KEY_PAM_STACK,
- (char *)d->name);
+ pam_stack = gdm_daemon_config_get_value_string_per_display (verify_token ?
+ GDM_KEY_PAM_STACK_SMARTCARD :
+ GDM_KEY_PAM_STACK,
+ (char *)d->name);
if ( ! create_pamh (d, pam_stack, login, &pamc, d->name, &pamerr)) {
if (started_timer)
Index: gdm-2.19.7/daemon/verify-shadow.c
===================================================================
--- gdm-2.19.7.orig/daemon/verify-shadow.c
+++ gdm-2.19.7/daemon/verify-shadow.c
@@ -102,7 +102,8 @@ print_cant_auth_errbox (void)
gchar *
gdm_verify_user (GdmDisplay *d,
const char *username,
- gboolean allow_retry)
+ gboolean allow_retry,
+ gboolean token)
{
gchar *login, *passwd, *ppasswd;
struct passwd *pwent;

View File

@ -1,10 +0,0 @@
--- daemon/slave.c.orig 2007-08-30 18:32:03.526283719 +0000
+++ daemon/slave.c 2007-08-30 18:32:27.536993351 +0000
@@ -2104,6 +2104,7 @@
gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
login_user = gdm_verify_user (d,
(*pwent)->pw_name,
+ FALSE,
FALSE);
gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);

View File

@ -1,21 +0,0 @@
diff -upr gdm-2.20.0-pre/daemon/gdm.c gdm-2.20.0-post/daemon/gdm.c
--- gdm-2.20.0-pre/daemon/gdm.c 2007-09-21 15:48:23.000000000 -0500
+++ gdm-2.20.0-post/daemon/gdm.c 2007-09-21 16:25:47.000000000 -0500
@@ -715,7 +715,7 @@ halt_machine (void)
#ifdef __linux__
change_to_first_and_clear (FALSE);
#endif /* __linux */
-
+ sleep (20);
}
}
@@ -735,7 +735,7 @@ restart_machine (void)
#ifdef __linux__
change_to_first_and_clear (TRUE);
#endif /* __linux */
-
+ sleep (20);
}
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adb64d70d9c2bf87a2f67520f40bba29bd76726baee21440f8b24cf3f6336061
size 3906797

View File

@ -0,0 +1,12 @@
diff -upr gdm-2.21.5-pre/daemon/gdm-server.c gdm-2.21.5-post/daemon/gdm-server.c
--- gdm-2.21.5-pre/daemon/gdm-server.c 2007-11-19 15:53:12.000000000 -0600
+++ gdm-2.21.5-post/daemon/gdm-server.c 2008-01-21 20:18:31.000000000 -0600
@@ -306,6 +306,8 @@ gdm_server_resolve_command_line (GdmServ
if (vtarg != NULL && ! gotvtarg) {
argv[len++] = g_strdup (vtarg);
+ } else if (!query_in_arglist && !gotvtarg) {
+ argv[len++] = g_strdup ("vt7");
}
argv[len++] = NULL;

View File

@ -0,0 +1,16 @@
diff -upr gdm-2.21.9-pre/common/gdm-common.c gdm-2.21.9-post/common/gdm-common.c
--- gdm-2.21.9-pre/common/gdm-common.c 2008-03-28 18:18:23.000000000 -0600
+++ gdm-2.21.9-post/common/gdm-common.c 2008-03-28 18:35:03.000000000 -0600
@@ -57,10 +57,12 @@ gdm_is_version_unstable (void)
void
gdm_set_fatal_warnings_if_unstable (void)
{
+#if 0
if (gdm_is_version_unstable ()) {
g_setenv ("G_DEBUG", "fatal_criticals", FALSE);
g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
}
+#endif
}
int

3
gdm-2.22.0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ff4bef13b15a1c54895eabcc37f7046fa13ca3bc449c9541c38e6993930fffa
size 2244663

View File

@ -1,15 +0,0 @@
--- gdm-2.16.1/daemon/slave.c
+++ gdm-2.16.1/daemon/slave.c
@@ -3438,6 +3438,12 @@
g_setenv ("SHELL", pwent->pw_shell, TRUE);
g_unsetenv ("MAIL"); /* Unset $MAIL for broken shells */
+ if (d->hostname != NULL && d->hostname [0] != '\0') {
+ g_setenv ("XAUTHLOCALHOSTNAME", d->hostname, TRUE);
+ } else {
+ g_setenv ("XAUTHLOCALHOSTNAME", "localhost", TRUE);
+ }
+
if (d->type == TYPE_STATIC) {
g_setenv ("GDM_XSERVER_LOCATION", "local", TRUE);
} else if (d->type == TYPE_XDMCP) {

View File

@ -1,11 +0,0 @@
--- gdm-2.16.1/config/gdm.conf.in
+++ gdm-2.16.1/config/gdm.conf.in
@@ -362,7 +362,7 @@
# large numbers of users and this feature should not be used in such
# environments. The setting of IncludeAll does nothing if Include is set to a
# non-empty value.
-#IncludeAll=false
+IncludeAll=true
# If user or user.png exists in this dir it will be used as his picture.
#GlobalFaceDir=@datadir@/pixmaps/faces/

View File

@ -1,56 +0,0 @@
Index: gdm-2.17.7/gui/gdmsetup.c
===================================================================
--- gdm-2.17.7.orig/gui/gdmsetup.c
+++ gdm-2.17.7/gui/gdmsetup.c
@@ -60,6 +60,8 @@ static gboolean GdmUserChangesUnsaved;
static gboolean GdmRandomFromSelectedChangesWarn;
static gint last_selected_command;
+#define LONG_TIMEOUT G_MAXINT
+
/* set the DOING_GDM_DEVELOPMENT env variable if you want to
* search for the glade file in the current dir and not the system
* install dir, better then something you have to change
@@ -1575,7 +1577,7 @@ combobox_timeout (GtkWidget *combo_box)
static void
toggle_toggled (GtkWidget *toggle)
{
- run_timeout (toggle, 200, toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
}
static void
@@ -1615,13 +1617,13 @@ list_selection_toggled (GtkWidget *toggl
gtk_widget_set_sensitive (widget, FALSE);
}
- run_timeout (toggle, 200, toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
}
static void
intspin_changed (GtkWidget *spin)
{
- run_timeout (spin, 500, intspin_timeout);
+ run_timeout (spin, LONG_TIMEOUT, intspin_timeout);
}
static void
@@ -3270,7 +3272,7 @@ greeter_toggle_timeout (GtkWidget *toggl
static void
greeter_toggle_toggled (GtkWidget *toggle)
{
- run_timeout (toggle, 500, greeter_toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, greeter_toggle_timeout);
}
static void
@@ -3614,7 +3616,7 @@ greeter_entry_untranslate_timeout (GtkWi
static void
greeter_entry_untranslate_changed (GtkWidget *entry)
{
- run_timeout (entry, 500, greeter_entry_untranslate_timeout);
+ run_timeout (entry, LONG_TIMEOUT, greeter_entry_untranslate_timeout);
}
static void

View File

@ -1,225 +0,0 @@
diff -upr gdm-2.19.3-pre/gui/greeter/greeter.c gdm-2.19.3-post/gui/greeter/greeter.c
--- gdm-2.19.3-pre/gui/greeter/greeter.c 2007-06-17 13:07:26.000000000 -0400
+++ gdm-2.19.3-post/gui/greeter/greeter.c 2007-07-31 21:19:51.000000000 -0400
@@ -1239,6 +1239,7 @@ main (int argc, char *argv[])
int r;
gint i;
gchar *key_string = NULL;
+ GdkColor black = { 0, 0, 0, 0 };
if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL)
DOING_GDM_DEVELOPMENT = TRUE;
@@ -1348,6 +1349,7 @@ main (int argc, char *argv[])
}
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_widget_modify_bg (window, GTK_STATE_NORMAL, &black);
if G_UNLIKELY (DOING_GDM_DEVELOPMENT) {
g_signal_connect (G_OBJECT (window), "key_press_event",
@@ -1364,6 +1366,7 @@ main (int argc, char *argv[])
gtk_window_set_default_size (GTK_WINDOW (window),
gdm_wm_screen.width,
gdm_wm_screen.height);
+ gtk_widget_modify_bg (canvas, GTK_STATE_NORMAL, &black);
gtk_container_add (GTK_CONTAINER (window), canvas);
/*
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c
--- gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c 2007-06-17 13:07:26.000000000 -0400
+++ gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c 2007-07-31 21:18:11.000000000 -0400
@@ -24,6 +24,12 @@
#include <glib/gi18n.h>
#include <librsvg/rsvg.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+
#include "gdm.h"
#include "gdmcommon.h"
#include "gdmconfig.h"
@@ -258,6 +264,127 @@ greeter_item_run_button_action_callback
gtk_widget_grab_focus (entry);
}
+/* Create a persistent pixmap. We create a separate display
+ * and set the closedown mode on it to RetainPermanent
+ */
+static GdkPixmap *
+make_root_pixmap (GdkScreen *screen, gint width, gint height)
+{
+ Display *display;
+ char *display_name;
+ Pixmap result;
+ GdkPixmap *gdk_pixmap;
+ int screen_num;
+
+ screen_num = gdk_screen_get_number (screen);
+
+ gdk_flush ();
+
+ display_name = DisplayString (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
+
+ display = XOpenDisplay (display_name);
+
+ if (display == NULL) {
+ g_warning ("Unable to open display '%s' when setting background pixmap\n",
+ (display_name) ? display_name : "NULL");
+ return NULL;
+ }
+
+ XSetCloseDownMode (display, RetainPermanent);
+
+ result = XCreatePixmap (display,
+ RootWindow (display, screen_num),
+ width, height,
+ DefaultDepth (display, screen_num));
+
+ XCloseDisplay (display);
+
+ gdk_pixmap = gdk_pixmap_foreign_new (result);
+ gdk_drawable_set_colormap (GDK_DRAWABLE (gdk_pixmap),
+ gdk_drawable_get_colormap (gdk_screen_get_root_window (screen)));
+
+ return gdk_pixmap;
+}
+
+/* Set the root pixmap, and properties pointing to it. We
+ * do this atomically with XGrabServer to make sure that
+ * we won't leak the pixmap if somebody else it setting
+ * it at the same time. (This assumes that they follow the
+ * same conventions we do)
+ */
+static gboolean
+set_root_pixmap (GdkPixmap *pixmap)
+{
+ Atom type;
+ gulong nitems, bytes_after;
+ gint format;
+ guchar *data_esetroot;
+ Pixmap pixmap_id;
+ Display *display;
+ GdkScreen *screen;
+ int screen_num;
+
+ screen = (GdkScreen *) g_object_get_data (G_OBJECT (pixmap),
+ "gdkscreen");
+
+ screen_num = gdk_screen_get_number (screen);
+
+ if (pixmap != NULL)
+ pixmap_id = GDK_WINDOW_XWINDOW (pixmap);
+ else
+ pixmap_id = 0;
+
+ display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ XGrabServer (display);
+
+ XGetWindowProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", False),
+ 0L, 1L, False, XA_PIXMAP,
+ &type, &format, &nitems, &bytes_after,
+ &data_esetroot);
+
+ if (type == XA_PIXMAP) {
+ if (format == 32 && nitems == 1) {
+ Pixmap old_pixmap;
+
+ old_pixmap = *((Pixmap *) data_esetroot);
+
+ if (pixmap != NULL && old_pixmap != pixmap_id)
+ XKillClient (display, old_pixmap);
+ else if (pixmap == NULL)
+ pixmap_id = old_pixmap;
+ }
+
+ XFree (data_esetroot);
+ }
+
+ if (pixmap != NULL) {
+ XChangeProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE),
+ XA_PIXMAP, 32, PropModeReplace,
+ (guchar *) &pixmap_id, 1);
+ XChangeProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "_XROOTPMAP_ID", FALSE),
+ XA_PIXMAP, 32, PropModeReplace,
+ (guchar *) &pixmap_id, 1);
+
+ XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
+ pixmap_id);
+ } else if (pixmap == NULL) {
+ XDeleteProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE));
+ XDeleteProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "_XROOTPMAP_ID", FALSE));
+ }
+
+ XClearWindow (display, RootWindow (display, screen_num));
+ XUngrabServer (display);
+ XFlush (display);
+
+ return FALSE;
+}
+
void
greeter_item_create_canvas_item (GreeterItemInfo *item)
{
@@ -355,12 +482,53 @@ greeter_item_create_canvas_item (Greeter
}
if (item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL] != NULL)
+ {
+ static int bg_set = 1; /* disabled */
+
item->item = gnome_canvas_item_new (group,
GNOME_TYPE_CANVAS_PIXBUF,
"x", (gdouble) x1,
"y", (gdouble) y1,
"pixbuf", item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL],
NULL);
+
+ if (!bg_set)
+ {
+ GdkPixmap *pixmap;
+ GdkPixbuf *pixbuf;
+ GdkScreen *screen;
+ GdkGC *gc;
+ gint width, height;
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (canvas));
+
+ pixbuf = item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL];
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+
+ pixmap = make_root_pixmap (screen, width, height);
+
+ gc = gdk_gc_new (GDK_DRAWABLE (pixmap));
+
+ gdk_draw_pixbuf (GDK_DRAWABLE (pixmap),
+ gc,
+ pixbuf,
+ 0, 0, 0, 0,
+ width,
+ height,
+ GDK_RGB_DITHER_NORMAL,
+ 0, 0);
+
+ g_object_set_data (G_OBJECT (pixmap), "gdkscreen", screen);
+
+ g_timeout_add (1000, set_root_pixmap, pixmap);
+
+ g_object_unref (gc);
+
+ bg_set = 1;
+ }
+ }
break;
case GREETER_ITEM_TYPE_LABEL:
text = gdm_common_expand_text (item->data.text.orig_text);

View File

@ -1,856 +0,0 @@
diff -upr gdm-2.19.5-pre/configure.ac gdm-2.19.5-post/configure.ac
--- gdm-2.19.5-pre/configure.ac 2007-07-30 13:51:49.000000000 -0500
+++ gdm-2.19.5-post/configure.ac 2007-08-16 15:31:56.000000000 -0500
@@ -902,6 +902,10 @@ AC_SUBST(GDMPREFETCH)
AC_SUBST(GDMPREFETCHLIST)
AC_SUBST(GDMPREFETCHCMD)
+GDM_SCRATCH_DIR="${localstatedir}/gdm"
+AC_DEFINE_UNQUOTED(GDM_SCRATCH_DIR, "$GDM_SCRATCH_DIR", [GDM scratch dir])
+AC_SUBST(GDM_SCRATCH_DIR)
+
AC_ARG_ENABLE(secureremote,
[ --enable-secureremote=[yes/no] Enable to offer a secure X connection through ssh [default=no]],,
enable_secureremote=no)
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h 2007-08-16 15:42:57.000000000 -0500
@@ -185,6 +185,7 @@ typedef enum {
GDM_ID_GRAPHICAL_THEME_RAND,
GDM_ID_GRAPHICAL_THEME_DIR,
GDM_ID_GRAPHICAL_THEMED_COLOR,
+ GDM_ID_SHOW_DOMAIN,
GDM_ID_INFO_MSG_FILE,
GDM_ID_INFO_MSG_FONT,
GDM_ID_PRE_FETCH_PROGRAM,
@@ -465,6 +466,7 @@ static const GdmConfigEntry gdm_daemon_c
{ GDM_CONFIG_GROUP_GREETER, "SoundOnLoginFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_FILE },
{ GDM_CONFIG_GROUP_GREETER, "SoundOnLoginSuccessFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_SUCCESS_FILE },
{ GDM_CONFIG_GROUP_GREETER, "SoundOnLoginFailureFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_FAILURE_FILE },
+ { GDM_CONFIG_GROUP_GREETER, "ShowDomain", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_SHOW_DOMAIN },
{ GDM_CONFIG_GROUP_DAEMON, "SoundProgram", GDM_CONFIG_VALUE_STRING, SOUND_PROGRAM, GDM_ID_SOUND_PROGRAM },
{ GDM_CONFIG_GROUP_CHOOSER, "ScanTime", GDM_CONFIG_VALUE_INT, "4", GDM_ID_SCAN_TIME },
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-16 15:31:56.000000000 -0500
@@ -175,6 +175,7 @@ G_BEGIN_DECLS
#define GDM_KEY_GRAPHICAL_THEME_RAND "greeter/GraphicalThemeRand=false"
#define GDM_KEY_GRAPHICAL_THEME_DIR "greeter/GraphicalThemeDir=" DATADIR "/gdm/themes/"
#define GDM_KEY_GRAPHICAL_THEMED_COLOR "greeter/GraphicalThemedColor=#76848F"
+#define GDM_KEY_SHOW_DOMAIN "greeter/ShowDomain=false"
#define GDM_KEY_INFO_MSG_FILE "greeter/InfoMsgFile="
#define GDM_KEY_INFO_MSG_FONT "greeter/InfoMsgFont="
#define GDM_KEY_PRE_FETCH_PROGRAM "greeter/PreFetchProgram="
@@ -217,6 +218,7 @@ G_BEGIN_DECLS
#define GDM_NOTIFY_TIMED_LOGIN_DELAY "TimedLoginDelay" /* <seconds> */
#define GDM_NOTIFY_TIMED_LOGIN_ENABLE "TimedLoginEnable" /* <true/false as int> */
#define GDM_NOTIFY_DISALLOW_TCP "DisallowTCP" /* <true/false as int> */
+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* <true/false as int> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FILE "SoundOnLoginFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_SUCCESS_FILE "SoundOnLoginSuccessFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
--- gdm-2.19.5-pre/daemon/verify-pam.c 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-16 15:31:56.000000000 -0500
@@ -78,6 +78,8 @@ static unsigned auth_retries;
/* this is another hack */
static gboolean did_we_ask_for_password = FALSE;
+static gboolean is_account_disabled = FALSE;
+static gboolean is_account_expired = FALSE;
static char *selected_user = NULL;
@@ -469,6 +471,7 @@ perhaps_translate_message (const char *m
g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
+ g_hash_table_insert (hash, "Your account is disabled. Please contact your system administrator", _("Your account is disabled. Please contact your system administrator"));
g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
@@ -537,8 +540,8 @@ gdm_verify_pam_conv (int num_msg, struct
gdm_log_init ();
for (replies = 0; replies < num_msg; replies++) {
- const char *m = (*msg)[replies].msg;
- m = perhaps_translate_message (m);
+ const char *m_untranslated = (*msg)[replies].msg;
+ const char *m = perhaps_translate_message (m_untranslated);
switch ((*msg)[replies].msg_style) {
@@ -594,6 +597,12 @@ gdm_verify_pam_conv (int num_msg, struct
case PAM_ERROR_MSG:
/* PAM sent a message that should displayed to the user */
+
+ if (strstr (m_untranslated, "account is disabled"))
+ is_account_disabled = TRUE;
+ else if (strstr (m_untranslated, "account has expired"))
+ is_account_expired = TRUE;
+
gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
@@ -1295,7 +1304,11 @@ gdm_verify_user (GdmDisplay *d,
/* Only give this message if we actually asked for
password, otherwise it would be silly to say that
the password may have been wrong */
- if (did_we_ask_for_password) {
+ if (is_account_disabled) {
+ basemsg = _("\nYour account has been disabled.");
+ } else if (is_account_expired) {
+ basemsg = _("\nYour account has expired.");
+ } else if (did_we_ask_for_password) {
basemsg = _("\nIncorrect username or password. "
"Letters must be typed in the correct "
"case.");
@@ -1304,7 +1317,7 @@ gdm_verify_user (GdmDisplay *d,
"Letters must be typed in the correct "
"case.");
}
- if (is_capslock) {
+ if (is_capslock && !is_account_disabled && !is_account_expired) {
msg = g_strconcat (basemsg, " ",
_("Caps Lock is on."),
NULL);
@@ -1416,6 +1429,9 @@ gdm_verify_setup_user (GdmDisplay *d, co
/* Start authentication session */
did_we_ask_for_password = FALSE;
+ is_account_disabled = FALSE;
+ is_account_expired = FALSE;
+
if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
if (gdm_slave_action_pending ()) {
gdm_error (_("Couldn't authenticate user"));
diff -upr gdm-2.19.5-pre/gui/gdmchooser.c gdm-2.19.5-post/gui/gdmchooser.c
--- gdm-2.19.5-pre/gui/gdmchooser.c 2007-07-30 13:51:03.000000000 -0500
+++ gdm-2.19.5-post/gui/gdmchooser.c 2007-08-16 15:31:56.000000000 -0500
@@ -1799,6 +1799,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_ALLOW_ADD);
gdm_config_get_bool (GDM_KEY_BROADCAST);
gdm_config_get_bool (GDM_KEY_MULTICAST);
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
gdmcomm_comm_bulk_stop ();
@@ -1828,6 +1829,7 @@ gdm_reread_config (int sig, gpointer dat
gdm_config_reload_int (GDM_KEY_SCAN_TIME) ||
gdm_config_reload_bool (GDM_KEY_ALLOW_ADD) ||
gdm_config_reload_bool (GDM_KEY_BROADCAST) ||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
gdm_config_reload_bool (GDM_KEY_MULTICAST)) {
if (RUNNING_UNDER_GDM) {
diff -upr gdm-2.19.5-pre/gui/gdmlogin.c gdm-2.19.5-post/gui/gdmlogin.c
--- gdm-2.19.5-pre/gui/gdmlogin.c 2007-07-30 13:51:02.000000000 -0500
+++ gdm-2.19.5-post/gui/gdmlogin.c 2007-08-16 15:31:56.000000000 -0500
@@ -2910,6 +2910,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE);
gdm_config_get_bool (GDM_KEY_TITLE_BAR);
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
/* Keys not to include in reread_config */
gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
@@ -2992,6 +2993,7 @@ gdm_reread_config (int sig, gpointer dat
gdm_config_reload_bool (GDM_KEY_SYSTEM_MENU) ||
gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
/* Set busy cursor */
diff -upr gdm-2.19.5-pre/gui/greeter/greeter.c gdm-2.19.5-post/gui/greeter/greeter.c
--- gdm-2.19.5-pre/gui/greeter/greeter.c 2007-08-16 15:31:59.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-16 15:31:56.000000000 -0500
@@ -63,6 +63,13 @@
#include "greeter_session.h"
#include "greeter_system.h"
+static GtkWidget *hig_dialog_new (GtkWindow *parent,
+ GtkDialogFlags flags,
+ GtkMessageType type,
+ GtkButtonsType buttons,
+ const gchar *primary_message,
+ const gchar *secondary_message);
+
gboolean DOING_GDM_DEVELOPMENT = FALSE;
GtkWidget *window;
@@ -153,6 +160,53 @@ get_random_theme ()
return theme;
}
+static gchar *errdlg_message = NULL;
+
+static void
+show_errdlg_messages (void)
+{
+ gchar *tmp;
+ GtkWidget *dlg;
+
+ if (!errdlg_message)
+ return;
+
+ /* we should be now fine for focusing new windows */
+ gdm_wm_focus_new_windows (TRUE);
+
+ tmp = ve_locale_to_utf8 (errdlg_message);
+ dlg = hig_dialog_new (NULL /* parent */,
+ GTK_DIALOG_MODAL /* flags */,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ tmp,
+ "");
+ g_free (tmp);
+ g_free (errdlg_message);
+ errdlg_message = NULL;
+
+ gdm_wm_center_window (GTK_WINDOW (dlg));
+
+ gdm_wm_no_login_focus_push ();
+ gtk_dialog_run (GTK_DIALOG (dlg));
+ gtk_widget_destroy (dlg);
+ gdm_wm_no_login_focus_pop ();
+}
+
+static void
+append_errdlg_message (const gchar *message)
+{
+ if (errdlg_message) {
+ gchar *tmp;
+
+ tmp = g_strjoin ("\n\n", errdlg_message, message, NULL);
+ g_free (errdlg_message);
+ errdlg_message = tmp;
+ } else {
+ errdlg_message = g_strdup (message);
+ }
+}
+
static gboolean
greeter_ctrl_handler (GIOChannel *source,
GIOCondition cond,
@@ -243,6 +297,8 @@ process_operation (guchar op_code,
break;
case GDM_PROMPT:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
if (tmp != NULL && strcmp (tmp, _("Username:")) == 0) {
gdm_common_login_sound (gdm_config_get_string (GDM_KEY_SOUND_PROGRAM),
@@ -265,6 +321,8 @@ process_operation (guchar op_code,
break;
case GDM_NOECHO:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
greeter_probably_login_prompt = FALSE;
@@ -284,6 +342,8 @@ process_operation (guchar op_code,
break;
case GDM_MSG:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
greeter_item_pam_message (tmp);
g_free (tmp);
@@ -292,6 +352,8 @@ process_operation (guchar op_code,
break;
case GDM_ERRBOX:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
greeter_item_pam_error (tmp);
g_free (tmp);
@@ -301,30 +363,17 @@ process_operation (guchar op_code,
break;
case GDM_ERRDLG:
- /* we should be now fine for focusing new windows */
- gdm_wm_focus_new_windows (TRUE);
-
tmp = ve_locale_to_utf8 (args);
- dlg = hig_dialog_new (NULL /* parent */,
- GTK_DIALOG_MODAL /* flags */,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- tmp,
- "");
+ append_errdlg_message (tmp);
g_free (tmp);
- gdm_wm_center_window (GTK_WINDOW (dlg));
-
- gdm_wm_no_login_focus_push ();
- gtk_dialog_run (GTK_DIALOG (dlg));
- gtk_widget_destroy (dlg);
- gdm_wm_no_login_focus_pop ();
-
printf ("%c\n", STX);
fflush (stdout);
break;
case GDM_SESS:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
session = gdm_session_lookup (tmp, &lookup_status);
if (lookup_status != SESSION_LOOKUP_SUCCESS) {
@@ -392,10 +441,14 @@ process_operation (guchar op_code,
break;
case GDM_LANG:
+ show_errdlg_messages ();
+
gdm_lang_op_lang (args);
break;
case GDM_SSESS:
+ show_errdlg_messages ();
+
if (gdm_get_save_session () == GTK_RESPONSE_YES)
printf ("%cY\n", STX);
else
@@ -405,6 +458,8 @@ process_operation (guchar op_code,
break;
case GDM_SLANG:
+ show_errdlg_messages ();
+
gdm_lang_op_slang (args);
break;
@@ -447,6 +502,8 @@ process_operation (guchar op_code,
break;
case GDM_QUIT:
+ show_errdlg_messages ();
+
greeter_item_timed_stop ();
if (require_quarter) {
@@ -563,6 +620,8 @@ process_operation (guchar op_code,
break;
case GDM_SAVEDIE:
+ show_errdlg_messages ();
+
/* Set busy cursor */
gdm_common_setup_cursor (GDK_WATCH);
@@ -582,6 +641,8 @@ process_operation (guchar op_code,
break;
default:
+ show_errdlg_messages ();
+
gdm_common_fail_greeter ("Unexpected greeter command received: '%c'", op_code);
break;
}
@@ -918,6 +979,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN);
gdm_config_get_bool (GDM_KEY_DEFAULT_WELCOME);
gdm_config_get_bool (GDM_KEY_DEFAULT_REMOTE_WELCOME);
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
gdm_config_get_bool (GDM_KEY_BROWSER);
@@ -1007,6 +1069,7 @@ greeter_reread_config (int sig, gpointer
gdm_config_reload_bool (GDM_KEY_SHOW_LAST_SESSION) ||
gdm_config_reload_bool (GDM_KEY_ALLOW_ROOT) ||
gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
gdm_config_reload_bool (GDM_KEY_BROWSER)) {
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.5-post/gui/greeter/greeter_canvas_item.c
--- gdm-2.19.5-pre/gui/greeter/greeter_canvas_item.c 2007-08-16 15:31:59.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_canvas_item.c 2007-08-16 15:31:56.000000000 -0500
@@ -20,6 +20,8 @@
#include <math.h>
#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <librsvg/rsvg.h>
@@ -46,6 +48,9 @@
#include "greeter_canvas_text.h"
#include "greeter_parser.h"
+#define WBINFO_DOMAINS_MAX 64
+#define WBINFO_READ_MAX 256
+
/* Keep track of buttons so they can be set sensitive/insensitive */
GtkButton *gtk_ok_button = NULL;
GtkButton *gtk_start_again_button = NULL;
@@ -395,6 +400,189 @@ set_root_pixmap (GdkPixmap *pixmap)
return FALSE;
}
+gboolean greeter_can_do_domain_login = FALSE;
+gchar *greeter_domain_separator = NULL;
+
+gboolean greeter_wbinfo_was_run = FALSE;
+gboolean greeter_wbinfo_is_running = FALSE;
+GPid greeter_wbinfo_pid;
+GIOChannel *greeter_wbinfo_channel;
+GString *greeter_wbinfo_output;
+
+static void
+wbinfo_end (void)
+{
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+ gint wbinfo_status = 0;
+ gchar *wbinfo_output;
+ GtkListStore *domain_list_store;
+ gchar **tokens = NULL;
+ gchar *own_domain = NULL;
+ gint select_index = 0;
+ GtkTreeIter iter;
+ const gchar *text;
+ gint i;
+
+ if (!greeter_wbinfo_is_running)
+ return;
+
+ greeter_wbinfo_is_running = FALSE;
+ waitpid (greeter_wbinfo_pid, &wbinfo_status, 0);
+ g_spawn_close_pid (greeter_wbinfo_pid);
+
+ wbinfo_output = g_string_free (greeter_wbinfo_output, FALSE);
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item)) {
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+ } else {
+ g_free (wbinfo_output);
+ return;
+ }
+
+ /* Set up the domain store model */
+
+ domain_list_store = gtk_list_store_new (1, G_TYPE_STRING);
+
+ /* The "local login" entry */
+
+ gtk_list_store_append (domain_list_store, &iter);
+ gtk_list_store_set (domain_list_store, &iter,
+ 0, _("<Local>"),
+ -1);
+
+ /* Process wbinfo output, if any */
+
+ if (WEXITSTATUS (wbinfo_status) == 0 && wbinfo_output && *wbinfo_output) {
+ /* The first line of output should be the domain separator,
+ * and any remaining lines are trusted domains. */
+ tokens = g_strsplit_set (wbinfo_output, "\n\r", WBINFO_DOMAINS_MAX + 1);
+ }
+
+ g_free (wbinfo_output);
+ g_free (greeter_domain_separator);
+ greeter_domain_separator = NULL;
+
+ if (tokens && tokens [0]) {
+ greeter_can_do_domain_login = TRUE;
+ greeter_domain_separator = g_strdup (tokens [0]);
+
+ own_domain = tokens [1];
+
+ /* Generate a sorted list of domains for the domain selector combo. */
+
+ g_qsort_with_data (&tokens [1],
+ g_strv_length (tokens) - 1,
+ sizeof (gchar *),
+ (GCompareDataFunc) g_ascii_strcasecmp,
+ NULL);
+
+ for (i = 1; tokens [i]; i++) {
+ /* Ensure no blank entries */
+ if (!strlen (tokens [i]))
+ continue;
+
+ gtk_list_store_append (domain_list_store, &iter);
+ gtk_list_store_set (domain_list_store, &iter,
+ 0, tokens [i],
+ -1);
+
+ if (tokens [i] == own_domain)
+ select_index = i;
+ }
+
+ } else {
+ greeter_can_do_domain_login = FALSE;
+ }
+
+ if (tokens)
+ g_strfreev (tokens);
+
+ /* Assign model and default selection to widget */
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (domain_entry),
+ GTK_TREE_MODEL (domain_list_store));
+ gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (domain_entry), 0);
+
+ /* Default to our own domain, but only if the entry was empty */
+ text = gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (domain_entry))));
+ if (!text || !*text)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (domain_entry), select_index);
+
+ g_object_unref (domain_list_store);
+}
+
+static gboolean
+wbinfo_on_output (GIOChannel *channel, GIOCondition condition, gpointer data)
+{
+ gchar buf [WBINFO_READ_MAX];
+ gsize bytes_read;
+ GIOStatus status;
+
+ status = g_io_channel_read_chars (channel, buf, WBINFO_READ_MAX, &bytes_read, NULL);
+
+ if (bytes_read < 1) {
+ wbinfo_end ();
+ return FALSE;
+ }
+
+ g_string_append_len (greeter_wbinfo_output, buf, bytes_read);
+ return TRUE;
+}
+
+static void
+wbinfo_begin (void)
+{
+ gchar *wbinfo_args [] = { "wbinfo", "--separator", "--own-domain", "--trusted-domains", NULL };
+ gchar *wbinfo_env [] = { NULL };
+ gint wbinfo_stdout_fd;
+
+ if (greeter_wbinfo_was_run)
+ return;
+
+ greeter_wbinfo_was_run = TRUE;
+
+ /* Lame guess, in case winbind isn't running, but gets started later. This
+ * is a workaround for testing and broken systems. */
+ greeter_domain_separator = g_strdup ("\\");
+
+ if (!g_spawn_async_with_pipes ("/",
+ wbinfo_args,
+ wbinfo_env,
+ G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL |
+ G_SPAWN_DO_NOT_REAP_CHILD,
+ NULL /* child setup function */,
+ NULL /* child setup user_data */,
+ &greeter_wbinfo_pid,
+ NULL /* &wbinfo_stdin_fd */,
+ &wbinfo_stdout_fd,
+ NULL /* &wbinfo_stderr_fd */,
+ NULL))
+ return;
+
+ greeter_wbinfo_is_running = TRUE;
+ greeter_wbinfo_output = g_string_new ("");
+
+ fcntl (wbinfo_stdout_fd, F_SETFL, O_NONBLOCK);
+
+ greeter_wbinfo_channel = g_io_channel_unix_new (wbinfo_stdout_fd);
+ g_io_channel_set_encoding (greeter_wbinfo_channel, NULL, NULL);
+ g_io_channel_set_close_on_unref (greeter_wbinfo_channel, TRUE);
+ g_io_add_watch (greeter_wbinfo_channel, G_IO_IN | G_IO_HUP, wbinfo_on_output, NULL);
+ g_io_channel_unref (greeter_wbinfo_channel); /* Watch holds remaining ref */
+}
+
+static gboolean
+deselect_entry_text (GtkEntry *entry)
+{
+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, 0);
+ gtk_editable_set_position (GTK_EDITABLE (entry), -1);
+
+ return FALSE;
+}
+
void
greeter_item_create_canvas_item (GreeterItemInfo *item)
{
@@ -686,6 +874,48 @@ greeter_item_create_canvas_item (Greeter
break;
+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
+ entry = gtk_combo_box_entry_new ();
+
+ gtk_widget_set_name (entry, "domain-entry");
+
+ gtk_entry_set_has_frame (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (entry))), FALSE);
+ gtk_widget_modify_font (entry, item->data.text.fonts[GREETER_ITEM_STATE_NORMAL]);
+
+ get_gdk_color_from_rgb (&c, item->data.text.colors[GREETER_ITEM_STATE_NORMAL]);
+ gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &c);
+
+ item->item = gnome_canvas_item_new (group,
+ GNOME_TYPE_CANVAS_WIDGET,
+ "widget", entry,
+ "x", x1,
+ "y", y1,
+ "height", (double)rect.height,
+ "width", (double)rect.width,
+ NULL);
+
+ /* cursor blinking is evil on remote displays, don't do it forever */
+ gdm_common_setup_blinking_entry (gtk_bin_get_child (GTK_BIN (entry)));
+
+ /* Recall the last used domain */
+ if (g_file_get_contents (GDM_SCRATCH_DIR "/last_domain", &text, NULL, NULL)) {
+ GtkWidget *temp_entry;
+
+ temp_entry = gtk_bin_get_child (GTK_BIN (entry));
+
+ gtk_entry_set_text (GTK_ENTRY (temp_entry), text);
+
+ /* The set text gets selected. It looks bad. Avoid that. */
+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) deselect_entry_text, temp_entry, NULL);
+
+ g_free (text);
+ }
+
+ /* Query wbinfo */
+ wbinfo_begin ();
+
+ break;
+
case GREETER_ITEM_TYPE_LIST:
/* Note a list type must be setup later and we will add the list store
* to it then, depending on the type. Likely userlist is the
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_configuration.h gdm-2.19.5-post/gui/greeter/greeter_configuration.h
--- gdm-2.19.5-pre/gui/greeter/greeter_configuration.h 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_configuration.h 2007-08-16 15:31:56.000000000 -0500
@@ -65,6 +65,7 @@ extern gchar *GdmSoundOnLoginFailureFile
extern gboolean GdmSoundOnLoginReady;
extern gboolean GdmSoundOnLoginSuccess;
extern gboolean GdmSoundOnLoginFailure;
+extern gboolean GdmShowDomain;
extern gboolean GDM_IS_LOCAL;
extern gboolean DOING_GDM_DEVELOPMENT;
diff -upr gdm-2.19.5-pre/gui/greeter/greeter.h gdm-2.19.5-post/gui/greeter/greeter.h
--- gdm-2.19.5-pre/gui/greeter/greeter.h 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter.h 2007-08-16 15:31:56.000000000 -0500
@@ -27,6 +27,9 @@ extern GtkWidget *window;
extern gboolean greeter_probably_login_prompt;
+extern gboolean greeter_can_do_domain_login;
+extern gchar *greeter_domain_separator;
+
void greeter_ignore_buttons (gboolean val);
#endif
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item.c gdm-2.19.5-post/gui/greeter/greeter_item.c
--- gdm-2.19.5-pre/gui/greeter/greeter_item.c 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_item.c 2007-08-16 15:57:07.000000000 -0500
@@ -234,6 +234,11 @@ greeter_item_is_visible (GreeterItemInfo
return FALSE;
}
+ if ( ! gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN) &&
+ (info->show_type != NULL &&
+ g_str_has_prefix (info->show_type, "domain")))
+ return FALSE;
+
if (( ! gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
ve_string_empty (gdm_config_get_string (GDM_KEY_TIMED_LOGIN)) ||
NULL == g_getenv("GDM_TIMED_LOGIN_OK")) &&
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item.h gdm-2.19.5-post/gui/greeter/greeter_item.h
--- gdm-2.19.5-pre/gui/greeter/greeter_item.h 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_item.h 2007-08-16 15:31:56.000000000 -0500
@@ -47,7 +47,8 @@ enum _GreeterItemType {
GREETER_ITEM_TYPE_LABEL,
GREETER_ITEM_TYPE_ENTRY,
GREETER_ITEM_TYPE_LIST,
- GREETER_ITEM_TYPE_BUTTON
+ GREETER_ITEM_TYPE_BUTTON,
+ GREETER_ITEM_TYPE_COMBO_BOX_ENTRY
};
/* Make sure to adjust the bitfield in the structure if
@@ -154,7 +155,7 @@ struct _GreeterItemInfo {
union {
/* Note: we want to have alphas, colors and have_color coincide for
* all types that have it */
-#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY)
+#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY || (info)->item_type == GREETER_ITEM_TYPE_COMBO_BOX_ENTRY)
struct {
guint8 alphas[GREETER_ITEM_STATE_MAX];
guint32 colors[GREETER_ITEM_STATE_MAX];
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item_pam.c gdm-2.19.5-post/gui/greeter/greeter_item_pam.c
--- gdm-2.19.5-pre/gui/greeter/greeter_item_pam.c 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_item_pam.c 2007-08-16 15:31:56.000000000 -0500
@@ -25,6 +25,7 @@
#include "gdm-common.h"
#include "gdm-socket-protocol.h"
+#include "gdm-daemon-config-keys.h"
#include "greeter.h"
#include "greeter_item.h"
@@ -37,6 +38,7 @@
#include "gdm.h"
#include "gdmwm.h"
#include "gdmcommon.h"
+#include "gdmconfig.h"
static gboolean messages_to_give = FALSE;
static gboolean replace_msg = TRUE;
@@ -116,11 +118,29 @@ set_text (GreeterItemInfo *info, const c
info->item);
}
+static void
+domain_entry_set_sensitive (gboolean sensitive)
+{
+ if (gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
+ {
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+
+ if (domain_entry)
+ gtk_widget_set_sensitive (domain_entry, sensitive);
+ }
+}
+
void
greeter_item_pam_login (GtkEntry *entry, GreeterItemInfo *info)
{
const char *str;
- char *tmp;
+ char *tmp, *tmp2;
GreeterItemInfo *error_info;
if (gtk_ok_button != NULL)
@@ -152,6 +172,7 @@ greeter_item_pam_login (GtkEntry *entry,
}
gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE);
+ domain_entry_set_sensitive (FALSE);
/* clear the err_box */
if (err_box_clear_handler > 0)
@@ -166,6 +187,33 @@ greeter_item_pam_login (GtkEntry *entry,
}
tmp = ve_locale_from_utf8 (str);
+
+ /* Prepend the domain if applicable */
+ if (greeter_probably_login_prompt && gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
+ {
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+
+ if (domain_entry && (str = gtk_combo_box_get_active_text (GTK_COMBO_BOX (domain_entry))) && *str &&
+ strcmp (str, _("<Local>")))
+ {
+ g_file_set_contents (GDM_SCRATCH_DIR "/last_domain", str, strlen (str), NULL);
+
+ tmp2 = g_strdup_printf ("%s%s%s", str, greeter_domain_separator, tmp);
+ g_free (tmp);
+ tmp = tmp2;
+ }
+ else
+ {
+ g_remove (GDM_SCRATCH_DIR "/last_domain");
+ }
+ }
+
printf ("%c%s\n", STX, tmp);
fflush (stdout);
g_free (tmp);
@@ -224,6 +272,7 @@ greeter_item_pam_setup (void)
/* initially insensitive */
gtk_widget_set_sensitive (entry, FALSE);
+ domain_entry_set_sensitive (FALSE);
}
g_signal_connect (entry, "activate",
@@ -288,6 +337,9 @@ greeter_item_pam_prompt (const char *mes
gtk_entry_set_max_length (GTK_ENTRY (entry), entry_len);
gtk_entry_set_text (GTK_ENTRY (entry), "");
gtk_widget_grab_focus (entry);
+
+ /* Domain selector should only be accessed when entering the user name */
+ domain_entry_set_sensitive (entry_visible);
}
messages_to_give = FALSE;
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_parser.c gdm-2.19.5-post/gui/greeter/greeter_parser.c
--- gdm-2.19.5-pre/gui/greeter/greeter_parser.c 2007-07-30 13:51:01.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter_parser.c 2007-08-16 15:31:56.000000000 -0500
@@ -402,6 +402,11 @@ parse_stock (xmlNodePtr node,
g_free (*translated_text);
*translated_text = g_strdup (_("Username:"));
}
+ else if (g_ascii_strcasecmp ((char *) prop, "domain-label") == 0)
+ {
+ g_free (*translated_text);
+ *translated_text = g_strdup (_("Domain:"));
+ }
else if (g_ascii_strcasecmp ((char *) prop, "ok") == 0)
{
g_free (*translated_text);
@@ -1649,6 +1654,15 @@ parse_entry (xmlNodePtr node,
}
static gboolean
+parse_combo_box_entry (xmlNodePtr node,
+ GreeterItemInfo *info,
+ GError **error)
+{
+ /* A ComboBoxEntry is just an Entry with a dropdown list */
+ return parse_entry (node, info, error);
+}
+
+static gboolean
parse_items (xmlNodePtr node,
GList **items_out,
GreeterItemInfo *parent,
@@ -1704,6 +1718,8 @@ parse_items (xmlNodePtr node,
item_type = GREETER_ITEM_TYPE_LIST;
else if (strcmp ((char *) type, "button") == 0)
item_type = GREETER_ITEM_TYPE_BUTTON;
+ else if (strcmp ((char *) type, "combo-box-entry") == 0)
+ item_type = GREETER_ITEM_TYPE_COMBO_BOX_ENTRY;
else
{
g_set_error (error,
@@ -1750,6 +1766,9 @@ parse_items (xmlNodePtr node,
case GREETER_ITEM_TYPE_BUTTON:
res = parse_gtkbutton (child, info, error);
break;
+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
+ res = parse_combo_box_entry (child, info, error);
+ break;
default:
g_set_error (error,
GREETER_PARSER_ERROR,

View File

@ -1,568 +0,0 @@
diff -upr gdm-2.19.7-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.7-post/daemon/gdm-daemon-config-entries.h
--- gdm-2.19.7-pre/daemon/gdm-daemon-config-entries.h 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/daemon/gdm-daemon-config-entries.h 2007-09-14 00:07:32.000000000 -0500
@@ -110,6 +110,7 @@ typedef enum {
GDM_ID_ALLOW_ROOT,
GDM_ID_ALLOW_REMOTE_ROOT,
GDM_ID_ALLOW_REMOTE_AUTOLOGIN,
+ GDM_ID_SECURE_SHUTDOWN,
GDM_ID_USER_MAX_FILE,
GDM_ID_RELAX_PERM,
GDM_ID_CHECK_DIR_OWNER,
@@ -360,6 +361,7 @@ static const GdmConfigEntry gdm_daemon_c
{ GDM_CONFIG_GROUP_SECURITY, "AllowRoot", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_ALLOW_ROOT },
{ GDM_CONFIG_GROUP_SECURITY, "AllowRemoteRoot", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_ROOT },
{ GDM_CONFIG_GROUP_SECURITY, "AllowRemoteAutoLogin", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_AUTOLOGIN },
+ { GDM_CONFIG_GROUP_SECURITY, "SecureShutdown", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_SECURE_SHUTDOWN },
{ GDM_CONFIG_GROUP_SECURITY, "UserMaxFile", GDM_CONFIG_VALUE_INT, "65536", GDM_ID_USER_MAX_FILE },
{ GDM_CONFIG_GROUP_SECURITY, "RelaxPermissions", GDM_CONFIG_VALUE_INT, "0", GDM_ID_RELAX_PERM },
{ GDM_CONFIG_GROUP_SECURITY, "CheckDirOwner", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_CHECK_DIR_OWNER },
diff -upr gdm-2.19.7-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.7-post/daemon/gdm-daemon-config-keys.h
--- gdm-2.19.7-pre/daemon/gdm-daemon-config-keys.h 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/daemon/gdm-daemon-config-keys.h 2007-09-14 00:07:32.000000000 -0500
@@ -98,6 +98,7 @@ G_BEGIN_DECLS
#define GDM_KEY_ALLOW_ROOT "security/AllowRoot=true"
#define GDM_KEY_ALLOW_REMOTE_ROOT "security/AllowRemoteRoot=false"
#define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin=false"
+#define GDM_KEY_SECURE_SHUTDOWN "security/SecureShutdown=false"
#define GDM_KEY_USER_MAX_FILE "security/UserMaxFile=65536"
#define GDM_KEY_RELAX_PERM "security/RelaxPermissions=0"
#define GDM_KEY_CHECK_DIR_OWNER "security/CheckDirOwner=true"
@@ -208,6 +209,7 @@ G_BEGIN_DECLS
#define GDM_NOTIFY_ALLOW_REMOTE_ROOT "AllowRemoteRoot" /* <true/false as int> */
#define GDM_NOTIFY_ALLOW_ROOT "AllowRoot" /* <true/false as int> */
#define GDM_NOTIFY_ALLOW_REMOTE_AUTOLOGIN "AllowRemoteAutoLogin" /* <true/false as int> */
+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* <true/false as int> */
#define GDM_NOTIFY_SYSTEM_MENU "SystemMenu" /* <true/false as int> */
#define GDM_NOTIFY_CONFIG_AVAILABLE "ConfigAvailable" /* <true/false as int> */
#define GDM_NOTIFY_CHOOSER_BUTTON "ChooserButton" /* <true/false as int> */
diff -upr gdm-2.19.7-pre/daemon/gdm-socket-protocol.h gdm-2.19.7-post/daemon/gdm-socket-protocol.h
--- gdm-2.19.7-pre/daemon/gdm-socket-protocol.h 2007-08-27 11:08:20.000000000 -0500
+++ gdm-2.19.7-post/daemon/gdm-socket-protocol.h 2007-09-14 00:07:32.000000000 -0500
@@ -68,6 +68,8 @@
/* Different login interruptions */
#define GDM_INTERRUPT_TIMED_LOGIN 'T'
#define GDM_INTERRUPT_CONFIGURE 'C'
+#define GDM_INTERRUPT_HALT 'K'
+#define GDM_INTERRUPT_REBOOT 'B'
#define GDM_INTERRUPT_SUSPEND 'S'
#define GDM_INTERRUPT_SELECT_USER 'U'
#define GDM_INTERRUPT_LOGIN_SOUND 'L'
diff -upr gdm-2.19.7-pre/daemon/slave.c gdm-2.19.7-post/daemon/slave.c
--- gdm-2.19.7-pre/daemon/slave.c 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/daemon/slave.c 2007-09-14 00:08:08.000000000 -0500
@@ -140,6 +140,8 @@ static gboolean do_timed_login =
static gboolean do_configurator = FALSE; /* If this is true, login as
* root and start the
* configurator */
+static gboolean do_system_halt = FALSE;
+static gboolean do_system_reboot = FALSE;
static gboolean do_cancel = FALSE; /* If this is true, go back to
username entry & unselect
face browser (if present) */
@@ -2067,6 +2069,96 @@ play_login_sound (const char *sound_file
return TRUE;
}
+static gboolean
+get_root_auth (const gchar *message, struct passwd **pwent)
+{
+ gboolean oldAllowRoot;
+
+ /* clear any error */
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, message);
+
+ /* we always allow root for this */
+ oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
+
+ *pwent = getpwuid (0);
+ if G_UNLIKELY (*pwent == NULL) {
+ /* what? no "root" ?? */
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
+ return FALSE; /* continue */
+ }
+
+ gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
+ login_user = gdm_verify_user (d,
+ (*pwent)->pw_name,
+ FALSE);
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
+
+ /* Clear message */
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
+
+ if G_UNLIKELY (do_restart_greeter) {
+ g_free (login_user);
+ login_user = NULL;
+ do_restart_greeter = FALSE;
+ restart_the_greeter ();
+ return FALSE; /* continue */
+ }
+
+ check_notifies_now ();
+
+ /* The wanker can't remember his password */
+ if (login_user == NULL) {
+ gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ /* Wipe the login */
+ g_free (login_user);
+ login_user = NULL;
+
+ /* Note that this can still fall through to
+ * the timed login if the user doesn't type in the
+ * password fast enough and there is timed login
+ * enabled */
+ if (do_timed_login) {
+ return FALSE; /* break; */
+ }
+
+ /* The user is a wanker */
+ if G_UNLIKELY (do_configurator || do_system_halt || do_system_reboot) {
+ do_configurator = FALSE;
+ do_system_halt = FALSE;
+ do_system_reboot = FALSE;
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ /* Now running as root */
+
+ /* Get the root pwent */
+ *pwent = getpwuid (0);
+
+ if G_UNLIKELY (*pwent == NULL) {
+ /* What? No "root" ?? This is not possible
+ * since we logged in, but I'm paranoid */
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ d->logged_in = TRUE;
+ logged_in_uid = 0;
+ logged_in_gid = 0;
+ gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
+ /* Note: nobody really logged in */
+ gdm_slave_send_string (GDM_SOP_LOGIN, "");
+
+ return TRUE;
+}
+
static void
gdm_slave_wait_for_login (void)
{
@@ -2127,86 +2219,14 @@ gdm_slave_wait_for_login (void)
do_configurator = FALSE;
g_free (login_user);
login_user = NULL;
- /* clear any error */
- gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
- gdm_slave_greeter_ctl_no_ret
- (GDM_MSG,
- _("You must authenticate as root to run configuration."));
-
- /* we always allow root for this */
- oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
-
- pwent = getpwuid (0);
- if G_UNLIKELY (pwent == NULL) {
- /* what? no "root" ?? */
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, pwent->pw_name);
- login_user = gdm_verify_user (d,
- pwent->pw_name,
- FALSE);
- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
-
- /* Clear message */
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
-
- if G_UNLIKELY (do_restart_greeter) {
- g_free (login_user);
- login_user = NULL;
- do_restart_greeter = FALSE;
- restart_the_greeter ();
- continue;
- }
-
- check_notifies_now ();
-
- /* The user can't remember his password */
- if (login_user == NULL) {
- gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- /* Wipe the login */
- g_free (login_user);
- login_user = NULL;
- /* Note that this can still fall through to
- * the timed login if the user doesn't type in the
- * password fast enough and there is timed login
- * enabled */
- if (do_timed_login) {
- break;
- }
+ if (!get_root_auth (_("You must authenticate as root to run configuration."), &pwent)) {
+ if (do_timed_login)
+ break;
- if G_UNLIKELY (do_configurator) {
- do_configurator = FALSE;
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
continue;
}
- /* Now running as root */
-
- /* Get the root pwent */
- pwent = getpwuid (0);
-
- if G_UNLIKELY (pwent == NULL) {
- /* What? No "root" ?? This is not possible
- * since we logged in, but I'm paranoid */
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- d->logged_in = TRUE;
- logged_in_uid = 0;
- logged_in_gid = 0;
- gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
- /* Note: nobody really logged in */
- gdm_slave_send_string (GDM_SOP_LOGIN, "");
-
/* Disable the login screen, we don't want people to
* log in in the meantime */
gdm_slave_greeter_ctl_no_ret (GDM_DISABLE, "");
@@ -2245,6 +2265,43 @@ gdm_slave_wait_for_login (void)
continue;
}
+ if (do_system_halt) {
+ struct passwd *pwent;
+
+ do_system_halt = FALSE;
+ g_free (login_user);
+ login_user = NULL;
+
+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
+ get_root_auth (_("You must authenticate as root to shut down."), &pwent)) {
+ exit_code_to_use = DISPLAY_HALT;
+ term_quit ();
+ } else if (do_timed_login) {
+ break;
+ }
+
+ continue;
+ }
+
+ if (do_system_reboot) {
+ struct passwd *pwent;
+
+ do_system_reboot = FALSE;
+ g_free (login_user);
+ login_user = NULL;
+
+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
+ get_root_auth (_("You must authenticate as root to restart the computer."), &pwent)) {
+ exit_code_to_use = DISPLAY_REBOOT;
+ term_quit ();
+ } else if (do_timed_login) {
+ break;
+ }
+
+ continue;
+ }
+
+
/* The user timed out into a timed login during the
* conversation */
if (do_timed_login) {
@@ -5519,6 +5576,14 @@ check_for_interruption (const char *msg)
/* Not interrupted, continue reading input,
* just proxy this to the master server */
return TRUE;
+ case GDM_INTERRUPT_HALT:
+ if (d->attached)
+ do_system_halt = TRUE;
+ break;
+ case GDM_INTERRUPT_REBOOT:
+ if (d->attached)
+ do_system_reboot = TRUE;
+ break;
case GDM_INTERRUPT_LOGIN_SOUND:
if (d->attached &&
! play_login_sound (gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FILE))) {
@@ -5975,6 +6040,8 @@ gdm_slave_action_pending (void)
{
if (do_timed_login ||
do_configurator ||
+ do_system_halt ||
+ do_system_reboot ||
do_restart_greeter ||
do_cancel)
return FALSE;
@@ -6258,6 +6325,8 @@ gdm_slave_handle_notify (const char *msg
remanage_asap = TRUE;
}
}
+ } else if (sscanf (msg, GDM_NOTIFY_SECURE_SHUTDOWN " %d", &val) == 1) {
+ gdm_daemon_config_set_value_bool (GDM_KEY_SECURE_SHUTDOWN, val);
}
}
diff -upr gdm-2.19.7-pre/gui/gdmlogin.c gdm-2.19.7-post/gui/gdmlogin.c
--- gdm-2.19.7-pre/gui/gdmlogin.c 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/gui/gdmlogin.c 2007-09-14 00:07:32.000000000 -0500
@@ -692,12 +692,15 @@ gdm_run_gdmconfig (GtkWidget *w, gpointe
static void
gdm_login_restart_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to restart the computer?"), "",
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
-
- gdm_kill_thingies ();
- _exit (DISPLAY_REBOOT);
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ gdm_kill_thingies ();
+ _exit (DISPLAY_REBOOT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
+ fflush (stdout);
}
}
@@ -721,12 +724,15 @@ gdm_custom_cmd_handler (GtkWidget *widge
static void
gdm_login_halt_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to Shut Down the computer?"), "",
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
-
- gdm_kill_thingies ();
- _exit (DISPLAY_HALT);
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ gdm_kill_thingies ();
+ _exit (DISPLAY_HALT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
+ fflush (stdout);
}
}
@@ -740,11 +746,14 @@ gdm_login_use_chooser_handler (void)
static void
gdm_login_suspend_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to suspend the computer?"), "",
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
-
- /* suspend interruption */
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ /* suspend interruption */
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
+ fflush (stdout);
+ }
+ } else {
printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
fflush (stdout);
}
@@ -2913,6 +2922,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_TITLE_BAR);
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
/* Keys not to include in reread_config */
gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
@@ -2996,6 +3006,7 @@ gdm_reread_config (int sig, gpointer dat
gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
/* Set busy cursor */
diff -upr gdm-2.19.7-pre/gui/greeter/greeter.c gdm-2.19.7-post/gui/greeter/greeter.c
--- gdm-2.19.7-pre/gui/greeter/greeter.c 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/gui/greeter/greeter.c 2007-09-14 00:07:32.000000000 -0500
@@ -982,6 +982,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
gdm_config_get_bool (GDM_KEY_BROWSER);
+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
/* Keys for custom commands */
for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) {
@@ -1071,6 +1072,7 @@ greeter_reread_config (int sig, gpointer
gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
gdm_config_reload_bool (GDM_KEY_BROWSER)) {
/* Set busy cursor */
diff -upr gdm-2.19.7-pre/gui/greeter/greeter_item.c gdm-2.19.7-post/gui/greeter/greeter_item.c
--- gdm-2.19.7-pre/gui/greeter/greeter_item.c 2007-09-14 00:07:36.000000000 -0500
+++ gdm-2.19.7-post/gui/greeter/greeter_item.c 2007-09-14 00:07:32.000000000 -0500
@@ -214,15 +214,15 @@ greeter_item_is_visible (GreeterItemInfo
strcmp (info->show_type, "system") == 0)
return FALSE;
- if (( ! sysmenu || ! GdmHaltFound) &&
+ if (( ! sysmenu || ! GdmHaltFound || !gdm_common_is_action_available ("HALT")) &&
(info->show_type != NULL &&
strcmp (info->show_type, "halt") == 0))
return FALSE;
- if (( ! sysmenu || ! GdmRebootFound) &&
+ if (( ! sysmenu || ! GdmRebootFound || !gdm_common_is_action_available ("REBOOT")) &&
(info->show_type != NULL &&
strcmp (info->show_type, "reboot") == 0))
return FALSE;
- if (( ! sysmenu || ! GdmSuspendFound) &&
+ if (( ! sysmenu || ! GdmSuspendFound || !gdm_common_is_action_available ("SUSPEND")) &&
(info->show_type != NULL &&
strcmp (info->show_type, "suspend") == 0))
return FALSE;
diff -upr gdm-2.19.7-pre/gui/greeter/greeter_system.c gdm-2.19.7-post/gui/greeter/greeter_system.c
--- gdm-2.19.7-pre/gui/greeter/greeter_system.c 2007-08-27 11:07:52.000000000 -0500
+++ gdm-2.19.7-post/gui/greeter/greeter_system.c 2007-09-14 00:07:32.000000000 -0500
@@ -77,10 +77,15 @@ bin_exists (const char *command)
static void
query_greeter_restart_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
- _exit (DISPLAY_REBOOT);
- }
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ _exit (DISPLAY_REBOOT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
+ fflush (stdout);
+ }
}
static void
@@ -101,27 +106,42 @@ query_greeter_custom_cmd_handler (GtkWid
static void
query_greeter_halt_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
- _exit (DISPLAY_HALT);
- }
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ _exit (DISPLAY_HALT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
+ fflush (stdout);
+ }
}
static void
query_greeter_suspend_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
- /* suspend interruption */
- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
- fflush (stdout);
- }
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ /* suspend interruption */
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
+ fflush (stdout);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
+ fflush (stdout);
+ }
}
static void
greeter_restart_handler (void)
{
- _exit (DISPLAY_REBOOT);
+ if (GDM_KEY_SECURE_SHUTDOWN) {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
+ fflush (stdout);
+ } else {
+ _exit (DISPLAY_REBOOT);
+ }
}
static void
@@ -134,7 +154,12 @@ greeter_custom_cmd_handler (gint cmd_id)
static void
greeter_halt_handler (void)
{
- _exit (DISPLAY_HALT);
+ if (GDM_KEY_SECURE_SHUTDOWN) {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
+ fflush (stdout);
+ } else {
+ _exit (DISPLAY_HALT);
+ }
}
static void
@@ -342,7 +367,7 @@ greeter_system_handler (GreeterItemInfo
vbox,
TRUE, TRUE, 0);
- if (GdmHaltFound) {
+ if (GdmHaltFound && gdm_common_is_action_available ("HALT")) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
halt_radio = gtk_radio_button_new_with_mnemonic (radio_group,
@@ -360,7 +385,7 @@ greeter_system_handler (GreeterItemInfo
gtk_widget_show (halt_radio);
}
- if (GdmRebootFound) {
+ if (GdmRebootFound && gdm_common_is_action_available ("REBOOT")) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
restart_radio = gtk_radio_button_new_with_mnemonic (radio_group,
@@ -404,7 +429,7 @@ greeter_system_handler (GreeterItemInfo
}
}
- if (GdmSuspendFound) {
+ if (GdmSuspendFound && gdm_common_is_action_available ("SUSPEND")) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
suspend_radio = gtk_radio_button_new_with_mnemonic (radio_group,

View File

@ -1,18 +0,0 @@
Index: gdm-2.18.1/gui/gdmflexiserver.desktop.in
===================================================================
--- gdm-2.18.1.orig/gui/gdmflexiserver.desktop.in
+++ gdm-2.18.1/gui/gdmflexiserver.desktop.in
@@ -11,3 +11,4 @@ Categories=GNOME;GTK;System;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gdm
X-GNOME-Bugzilla-Component=general
+OnlyShowIn=GNOME;
Index: gdm-2.18.1/gui/gdmphotosetup.desktop.in
===================================================================
--- gdm-2.18.1.orig/gui/gdmphotosetup.desktop.in
+++ gdm-2.18.1/gui/gdmphotosetup.desktop.in
@@ -13,3 +13,4 @@ Categories=GNOME;GTK;Settings;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gdm
X-GNOME-Bugzilla-Component=general
+OnlyShowIn=GNOME;

View File

@ -1,16 +0,0 @@
Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
Only in gdm-2.19.5-pre/daemon: slave.c.orig
diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
--- gdm-2.19.5-pre/daemon/verify-pam.c 2007-08-03 19:47:48.000000000 -0500
+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-03 19:48:46.000000000 -0500
@@ -610,7 +610,7 @@ gdm_verify_pam_conv (int num_msg, struct
case PAM_TEXT_INFO:
/* PAM sent a message that should displayed to the user */
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, m);
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
break;
Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
Only in gdm-2.19.5-post: error.18283

View File

@ -1,10 +0,0 @@
--- config/XKeepsCrashing
+++ config/XKeepsCrashing
@@ -65,6 +65,7 @@
#
XCONFIGURATOR=
for n in \
+ /usr/sbin/SaX2 \
/usr/bin/system-config-display \
/usr/bin/redhat-config-xfree86 \
/usr/sbin/XFdrake \

View File

@ -1,14 +0,0 @@
--- config/XKeepsCrashing 2007-12-15 17:31:14.000000000 -0500
+++ config/XKeepsCrashing 2008-04-02 16:21:39.000000000 -0400
@@ -134,6 +135,11 @@
exit $?
fi
+if test `grep "DISPLAYMANAGER_XSERVER=" /etc/sysconfig/displaymanager | grep Xgl | wc -l` = "1" && test -x /usr/bin/gnome-xgl-switch; then
+ /usr/bin/gnome-xgl-switch --disable-xgl
+ MSG7=`gettextfunc "Desktop effects have been disabled."`
+fi
+
clear
# Note, dialog required, though this script could be fixed to not require it

View File

@ -1,161 +0,0 @@
Fix for https://bugzilla.novell.com/show_bug.cgi?id=343858
2008-01-15 Federico Mena Quintero <federico@novell.com>
* gui/gdmwm.c (gdm_wm_screen_init): Use the GdkScreen functions to
get the monitors, instead of sanitizing the monitor geometries
here. This assumes an updated GTK+ package with the sanitization
logic in GdkScreen.
diff --git a/gui/gdmwm.c b/gui/gdmwm.c
index 806b944..681de8a 100644
--- a/gui/gdmwm.c
+++ b/gui/gdmwm.c
@@ -84,6 +84,9 @@ static guint save_struts[4] = {0, 0, 0, 0};
void
gdm_wm_screen_init (int cur_screen_num)
{
+ GdkScreen *screen;
+ int i;
+
if (g_getenv ("FAKE_XINERAMA_GDM") != NULL) {
/* for testing Xinerama support on non-xinerama setups */
gdm_wm_screen.x = 100;
@@ -101,129 +104,18 @@ gdm_wm_screen_init (int cur_screen_num)
return;
}
- {
-#ifdef HAVE_XFREE_XINERAMA
- gboolean have_xinerama = FALSE;
-
- gdk_flush ();
- gdk_error_trap_push ();
- have_xinerama = XineramaIsActive (GDK_DISPLAY ());
- gdk_flush ();
- if (gdk_error_trap_pop () != 0)
- have_xinerama = FALSE;
-
- if (have_xinerama) {
- int screen_num, i;
- XineramaScreenInfo *xscreens =
- XineramaQueryScreens (GDK_DISPLAY (),
- &screen_num);
-
-
- if (screen_num <= 0) {
- /* should NEVER EVER happen */
- gdm_common_error ("Xinerama active, but <= 0 screens?");
- gdm_wm_screen.x = 0;
- gdm_wm_screen.y = 0;
- gdm_wm_screen.width = gdk_screen_width ();
- gdm_wm_screen.height = gdk_screen_height ();
-
- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
- gdm_wm_allscreens[0] = gdm_wm_screen;
- gdm_wm_screens = 1;
- return;
- }
+ screen = gdk_screen_get_default ();
- if (screen_num <= cur_screen_num)
- cur_screen_num = 0;
+ gdm_wm_screens = gdk_screen_get_n_monitors (screen);
- gdm_wm_allscreens = g_new0 (GdkRectangle, screen_num);
- gdm_wm_screens = screen_num;
+ gdm_wm_allscreens = g_new (GdkRectangle, gdm_wm_screens);
+ for (i = 0; i < gdm_wm_screens; i++)
+ gdk_screen_get_monitor_geometry (screen, i, gdm_wm_allscreens + i);
- for (i = 0; i < screen_num; i++) {
- gdm_wm_allscreens[i].x = xscreens[i].x_org;
- gdm_wm_allscreens[i].y = xscreens[i].y_org;
- gdm_wm_allscreens[i].width = xscreens[i].width;
- gdm_wm_allscreens[i].height = xscreens[i].height;
-
- if (cur_screen_num == i)
- gdm_wm_screen = gdm_wm_allscreens[i];
- }
-
- XFree (xscreens);
- } else
-#elif HAVE_SOLARIS_XINERAMA
- gboolean have_xinerama = FALSE;
- /* This code from GDK, Copyright (C) 2002 Sun Microsystems */
- int opcode;
- int firstevent;
- int firsterror;
- int n_monitors = 0;
-
- gdk_flush ();
- gdk_error_trap_push ();
- have_xinerama = XQueryExtension (GDK_DISPLAY (),
- "XINERAMA",
- &opcode,
- &firstevent,
- &firsterror);
- gdk_flush ();
- if (gdk_error_trap_pop () != 0)
- have_xinerama = FALSE;
-
- if (have_xinerama) {
- int i;
- int result;
- XRectangle monitors[MAXFRAMEBUFFERS];
- unsigned char hints[16];
-
- result = XineramaGetInfo (GDK_DISPLAY (), 0, monitors, hints, &n_monitors);
- /* Yes I know it should be Success but the current implementation
- * returns the num of monitor
- */
-
- if (result <= 0) {
- /* should NEVER EVER happen */
- gdm_common_error ("Xinerama active, but <= 0 screens?");
- gdm_wm_screen.x = 0;
- gdm_wm_screen.y = 0;
- gdm_wm_screen.width = gdk_screen_width ();
- gdm_wm_screen.height = gdk_screen_height ();
-
- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
- gdm_wm_allscreens[0] = gdm_wm_screen;
- gdm_wm_screens = 1;
- return;
- }
-
- if (n_monitors <= cur_screen_num)
- cur_screen_num = 0;
-
- gdm_wm_allscreens = g_new0 (GdkRectangle, n_monitors);
- gdm_wm_screens = n_monitors;
-
- for (i = 0; i < n_monitors; i++) {
- gdm_wm_allscreens[i].x = monitors[i].x;
- gdm_wm_allscreens[i].y = monitors[i].y;
- gdm_wm_allscreens[i].width = monitors[i].width;
- gdm_wm_allscreens[i].height = monitors[i].height;
-
- if (cur_screen_num == i)
- gdm_wm_screen = gdm_wm_allscreens[i];
- }
-
- } else
-#endif
- {
- gdm_wm_screen.x = 0;
- gdm_wm_screen.y = 0;
- gdm_wm_screen.width = gdk_screen_width ();
- gdm_wm_screen.height = gdk_screen_height ();
+ if (gdm_wm_screens < cur_screen_num)
+ cur_screen_num = 0;
- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
- gdm_wm_allscreens[0] = gdm_wm_screen;
- gdm_wm_screens = 1;
- }
- }
+ gdm_wm_screen = gdm_wm_allscreens[cur_screen_num];
}
void

View File

@ -1,17 +0,0 @@
Index: config/gdm.conf-custom.in
===================================================================
--- config/gdm.conf-custom.in.orig
+++ config/gdm.conf-custom.in
@@ -50,6 +50,12 @@
#
# NOTE: Lines that begin with "#" are considered comments.
#
+# SuSEconfig comments: Some of entries in this file are updated by SuSEconfig,
+# whenever sysconfig entry change. To edit these entries, please use sysconfig
+# (or never touch these sysconfig variables).
+# Comment for each of this entry contains related /etc/sysconfig file and
+# variable.
+#
# Have fun!
[daemon]

View File

@ -1,78 +0,0 @@
--- config/gdm.conf.in
+++ config/gdm.conf.in
@@ -86,10 +86,12 @@
# This value will be overridden with the value from /etc/default/login if it
# contains "ROOT=<pathvalue>".
#DefaultPath=@GDM_USER_PATH@
+DefaultPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# Default path for root. The profile scripts will likely override this value.
# This value will be overridden with the value from /etc/default/login if it
# contains "SUROOT=<pathvalue>".
#RootPath=/sbin:/usr/sbin:@GDM_USER_PATH@
+RootPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# If you are having trouble with using a single server for a long time and want
# GDM to kill/restart the server, turn this on. On Solaris, this value is
@@ -126,9 +128,14 @@
#
# Reboot, Halt and suspend commands, you can add different commands separated
# by a semicolon. GDM will use the first one it can find.
-RebootCommand=@REBOOT_COMMAND@
-HaltCommand=@HALT_COMMAND@
-SuspendCommand=@SUSPEND_COMMAND@
+#RebootCommand=@REBOOT_COMMAND@
+#HaltCommand=@HALT_COMMAND@
+#SuspendCommand=@SUSPEND_COMMAND@
+
+RebootCommand=/sbin/shutdown -r now
+HaltCommand=/sbin/shutdown -h now
+SuspendCommand=/usr/bin/powersave --suspend-to-disk
+
# The following options specify how GDM system commands are supported.
#
@@ -163,7 +170,7 @@
# really a PATH style variable since 2.4.4.2 to allow actual interoperability
# with KDM. Note that <dmconfdir>/Sessions is there for backwards
# compatibility reasons with 2.4.4.x.
-#SessionDesktopDir=/etc/X11/sessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/:@datadir@/xsessions/
+SessionDesktopDir=/usr/share/xsessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/
# This is the default .desktop session. One of the ones in SessionDesktopDir
#DefaultSession=gnome.desktop
# Better leave this blank and HOME will be used. You can use syntax ~/ below
@@ -339,11 +346,12 @@
#PingIntervalSeconds=15
# The port. 177 is the standard port so better keep it that way.
#Port=177
-# Willing script, none is shipped and by default we'll send hostname system id.
-# But if you supply something here, the output of this script will be sent as
-# status of this host so that the chooser can display it. You could for
-# example send load, or mail details for some user, or some such.
-#Willing=@gdmconfdir@/Xwilling
+# Willing script, none is shipped, X11's one is used by default. If
+# none is present we'll send hostname system id. But if you supply
+# something here, the output of this script will be sent as status of
+# this host so that the chooser can display it. You could for example
+# send load, or mail details for some user, or some such.
+Willing=/etc/X11/xdm/Xwilling
[gui]
# The specific gtkrc file we use. It should be the full path to the gtkrc that
@@ -397,7 +405,7 @@
# User ID's less than the MinimalUID value will not be included in the face
# browser or in the gdmselection list for Automatic/Timed login. They will not
# be displayed regardless of the settings for Include and Exclude.
-#MinimalUID=100
+MinimalUID=500
# Users listed in Include will be included in the face browser and in the
# gdmsetup selection list for Automatic/Timed login. Users should be separated
# by commas.
@@ -626,7 +634,7 @@
[server-Standard]
name=Standard server
-command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@
+command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@ -br
flexible=true
# Indicates that the X server should be started at a different process
# priority. Values can be any integer value accepted by the setpriority C

View File

@ -0,0 +1,12 @@
diff -upr gdm-2.22.0-pre/daemon/gdm-server.c gdm-2.22.0-post/daemon/gdm-server.c
--- gdm-2.22.0-pre/daemon/gdm-server.c 2008-04-17 22:29:28.000000000 -0500
+++ gdm-2.22.0-post/daemon/gdm-server.c 2008-07-31 00:35:53.000000000 -0500
@@ -125,7 +125,7 @@ _gdm_server_query_ck_for_display_device
g_return_val_if_fail (GDM_IS_SERVER (server), NULL);
error = NULL;
- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s",
+ command = g_strdup_printf (LIBEXECDIR "/ConsoleKit/ck-get-x11-display-device --display %s",
server->priv->display_name);
g_debug ("GdmServer: Running helper %s", command);

View File

@ -1,12 +0,0 @@
Index: gui/gdmsetup.desktop.in.in
===================================================================
--- gui/gdmsetup.desktop.in.in.orig
+++ gui/gdmsetup.desktop.in.in
@@ -4,6 +4,7 @@ _Name=Login Window
_Comment=Configure GDM login window appearance and behavior
TryExec=@sbindir@/gdmsetup
Exec=@sbindir@/gdmsetup
+X-KDE-RootOnly=true
Icon=gdmsetup
StartupNotify=true
Terminal=false

View File

@ -1,13 +0,0 @@
Index: gui/gdmsetup.desktop.in.in
===================================================================
--- gui/gdmsetup.desktop.in.in.orig
+++ gui/gdmsetup.desktop.in.in
@@ -2,7 +2,7 @@
Encoding=UTF-8
_Name=Login Window
_Comment=Configure GDM login window appearance and behavior
-TryExec=@sbindir@/gdmsetup
+TryExec=gdmsetup
Exec=@sbindir@/gdmsetup
X-KDE-RootOnly=true
Icon=gdm-setup

View File

@ -0,0 +1,20 @@
--- gdm-2.22.0-pre/gui/simple-greeter/gdm-user.c 2008-04-17 22:29:26.000000000 -0500
+++ gdm-2.22.0-post/gui/simple-greeter/gdm-user.c 2008-07-31 07:37:40.000000000 -0500
@@ -750,11 +750,12 @@ render_icon_from_home (GdmUser *user,
}
filesystem_type = g_file_info_get_attribute_string (file_info,
G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
- is_local = ((strcmp (filesystem_type, "nfs") != 0) &&
- (strcmp (filesystem_type, "afs") != 0) &&
- (strcmp (filesystem_type, "autofs") != 0) &&
- (strcmp (filesystem_type, "unknown") != 0) &&
- (strcmp (filesystem_type, "ncpfs") != 0));
+ is_local = (filesystem_type == NULL ||
+ ((strcmp (filesystem_type, "nfs") != 0) &&
+ (strcmp (filesystem_type, "afs") != 0) &&
+ (strcmp (filesystem_type, "autofs") != 0) &&
+ (strcmp (filesystem_type, "unknown") != 0) &&
+ (strcmp (filesystem_type, "ncpfs") != 0)));
g_object_unref (file_info);
g_object_unref (file);
}

View File

@ -1,26 +0,0 @@
diff -upr gdm-2.19.3-pre/gui/gdmlanguages.c gdm-2.19.3-post/gui/gdmlanguages.c
--- gdm-2.19.3-pre/gui/gdmlanguages.c 2007-07-31 20:36:54.000000000 -0400
+++ gdm-2.19.3-post/gui/gdmlanguages.c 2007-07-31 20:43:55.000000000 -0400
@@ -840,6 +840,7 @@ gdm_lang_setup_treeview (void)
GtkWidget *swindow;
GtkWidget *label;
char *s;
+ gint y_size;
dialog = gtk_dialog_new_with_buttons (_("Select a Language"),
#ifdef TODO
@@ -906,9 +907,13 @@ gdm_lang_setup_treeview (void)
gtk_container_add (GTK_CONTAINER (swindow), tv);
gtk_box_pack_start (GTK_BOX (main_vbox),
swindow, TRUE, TRUE, 0);
+
+ /* Make the dialog fill 8/10 of the screen's height */
+ y_size = (8 * gdm_wm_screen.height) / 10;
+
gtk_window_set_default_size (GTK_WINDOW (dialog),
MIN (400, gdm_wm_screen.width),
- MIN (600, gdm_wm_screen.height));
+ y_size);
g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (tv))),
"changed",
(GCallback) selection_changed,

View File

@ -1,117 +0,0 @@
--- daemon/slave.c 2007-09-12 18:59:56.000000000 +0200
+++ daemon/slave.c 2007-09-15 01:04:02.000000000 +0200
@@ -192,7 +192,7 @@
* the slave can talk to itself from its sig handler
* using the greeter ipc mechanism
*/
-static int slave_fd_out = -1;
+//static int slave_fd_out = -1;
#ifdef HAVE_TSOL
static gboolean have_suntsol_extension = FALSE;
@@ -682,6 +682,18 @@
}
static void
+whack_greeter_fds (void)
+{
+ if (greeter_fd_out > 0)
+ VE_IGNORE_EINTR (close (greeter_fd_out));
+ greeter_fd_out = -1;
+ if (greeter_fd_in > 0)
+ VE_IGNORE_EINTR (close (greeter_fd_in));
+ greeter_fd_in = -1;
+}
+
+/*
+static void
whack_greeter_and_slave_fds (void)
{
if (greeter_fd_out > 0)
@@ -690,10 +702,12 @@
if (greeter_fd_in > 0)
VE_IGNORE_EINTR (close (greeter_fd_in));
greeter_fd_in = -1;
+
if (slave_fd_out > 0)
VE_IGNORE_EINTR (close (slave_fd_out));
slave_fd_out = -1;
}
+*/
static void
term_session_stop_and_quit (void)
@@ -1178,7 +1192,8 @@
d->greetpid = 0;
- whack_greeter_and_slave_fds ();
+ //whack_greeter_and_slave_fds ();
+ whack_greeter_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
@@ -2027,7 +2042,8 @@
d->greetpid = 0;
- whack_greeter_and_slave_fds ();
+ //whack_greeter_and_slave_fds ();
+ whack_greeter_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
}
@@ -2945,10 +2961,13 @@
default:
VE_IGNORE_EINTR (close (pipe1[0]));
+ // added
+ VE_IGNORE_EINTR (close (pipe2[1]));
- whack_greeter_and_slave_fds ();
+ //whack_greeter_and_slave_fds ();
+ whack_greeter_fds ();
- slave_fd_out = pipe2[1];
+ //slave_fd_out = pipe2[1];
greeter_fd_out = pipe1[1];
greeter_fd_in = pipe2[0];
@@ -5301,7 +5320,8 @@
greet = FALSE;
d->greetpid = 0;
- whack_greeter_and_slave_fds ();
+ //whack_greeter_and_slave_fds ();
+ whack_greeter_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
do_restart_greeter = TRUE;
@@ -5313,7 +5333,8 @@
continue;
}
- whack_greeter_and_slave_fds ();
+ //whack_greeter_and_slave_fds ();
+ whack_greeter_fds ();
/* if greet is TRUE, then the greeter died outside of our
* control really, so clean up and die, something is wrong
@@ -5456,7 +5477,7 @@
gdm_wait_for_go = FALSE;
} else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) {
gdm_twiddle_pointer (d);
- } else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
+ } /*else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
if (!d->logged_in) {
gdm_fdprintf (slave_fd_out, "%c%c%c\n",
STX, BEL, GDM_INTERRUPT_CANCEL);
@@ -5466,7 +5487,7 @@
gdm_fdprintf (slave_fd_out, "%c%c%c\n",
STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
}
- }
+ }*/
} else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
gdm_got_ack = TRUE;
if (gdm_ack_response)

View File

@ -1,11 +0,0 @@
--- gdm-2.16.1/config/PreSession.in
+++ gdm-2.16.1/config/PreSession.in
@@ -6,7 +6,7 @@
#
# Note that output goes into the .xsession-errors file for easy debugging
#
-PATH="@X_PATH@:$PATH:/bin:/usr/bin"
+PATH="@X_PATH@:$PATH:/bin:/usr/bin:/opt/kde3/bin"
OLD_IFS=$IFS
gdmwhich () {

View File

@ -1,17 +0,0 @@
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-08-03 19:38:33.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 19:44:00.000000000 -0500
@@ -81,7 +81,7 @@ G_BEGIN_DECLS
#define GDM_KEY_FIRST_VT "daemon/FirstVT=7"
#define GDM_KEY_VT_ALLOCATION "daemon/VTAllocation=true"
#define GDM_KEY_CONSOLE_CANNOT_HANDLE "daemon/ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh"
-#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=10"
+#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=30"
#define GDM_KEY_SYSTEM_COMMANDS_IN_MENU "daemon/SystemCommandsInMenu=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
#define GDM_KEY_ALLOW_LOGOUT_ACTIONS "daemon/AllowLogoutActions=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
#define GDM_KEY_RBAC_SYSTEM_COMMAND_KEYS "daemon/RBACSystemCommandKeys=" GDM_RBAC_SYSCMD_KEYS
Only in gdm-2.19.5-post/daemon: gdm-daemon-config-keys.h~
Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
Only in gdm-2.19.5-pre/daemon: slave.c.orig
Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
Only in gdm-2.19.5-post: error.15631

View File

@ -1,401 +0,0 @@
--- gdm-2.20.0-orig/config/Init.in 2007-09-17 16:45:50.000000000 +0200
+++ gdm-2.20.0/config/Init.in 2007-11-07 00:03:29.000000000 +0100
@@ -1,89 +1,2 @@
#!/bin/sh
-# Stolen from the debian kdm setup, aren't I sneaky
-# Plus a lot of fun stuff added
-# -George
-
-PATH=@X_PATH@:$PATH
-OLD_IFS=$IFS
-
-gdmwhich () {
- COMMAND="$1"
- OUTPUT=
- IFS=:
- for dir in $PATH
- do
- if test -x "$dir/$COMMAND" ; then
- if test "x$OUTPUT" = "x" ; then
- OUTPUT="$dir/$COMMAND"
- fi
- fi
- done
- IFS=$OLD_IFS
- echo "$OUTPUT"
-}
-
-sysresources=/etc/X11/Xresources
-
-# merge in defaults
-if [ -f "$sysresources" ]; then
- xrdb -merge "$sysresources"
-fi
-
-sysmodmap=/etc/X11/Xmodmap
-
-XMODMAP=`gdmwhich xmodmap`
-if [ x$XMODMAP != x ] ; then
- if [ x$GDM_PARENT_DISPLAY = x ]; then
- if [ -f $sysmodmap ]; then
- $XMODMAP $sysmodmap
- fi
- else
- ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
- fi
-
- #
- # Switch Sun's Alt and Meta mod mappings
- #
-
- UNAME=`gdmwhich uname`
- PROCESSOR=`$UNAME -p`
- if [ x$PROCESSOR = xsparc ]; then
- if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
- then
- $XMODMAP -e "clear Mod1" \
- -e "clear Mod4" \
- -e "add Mod1 = Alt_L" \
- -e "add Mod1 = Alt_R" \
- -e "add Mod4 = Meta_L" \
- -e "add Mod4 = Meta_R"
- fi
- fi
-fi
-
-SETXKBMAP=`gdmwhich setxkbmap`
-if [ x$SETXKBMAP != x ] ; then
- # FIXME: is this all right? Is this completely on crack?
- # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
- # FIXME: This should be done in code. Or there must be an easier way ...
- if [ -n "$GDM_PARENT_DISPLAY" ]; then
- XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
- if [ -n "$XKBSETUP" ]; then
- XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
- XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
- XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
- XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
- XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
- if [ -n "$XKBKEYMAP" ]; then
- $SETXKBMAP -keymap "$XKBKEYMAP"
- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
- elif [ -n "$XKBSYMBOLS" ]; then
- $SETXKBMAP -symbols "$XKBSYMBOLS"
- fi
- fi
- fi
-fi
-
-exit 0
+exec /etc/X11/xdm/Xsetup
--- gdm-2.20.0-orig/config/PostSession.in 2007-09-17 16:45:50.000000000 +0200
+++ gdm-2.20.0/config/PostSession.in 2007-11-07 00:03:57.000000000 +0100
@@ -1,22 +1,3 @@
#!/bin/sh
-PATH="@X_PATH@:$PATH:/bin:/usr/bin"
-OLD_IFS=$IFS
-
-gdmwhich () {
- COMMAND="$1"
- OUTPUT=
- IFS=:
- for dir in $PATH
- do
- if test -x "$dir/$COMMAND" ; then
- if test "x$OUTPUT" = "x" ; then
- OUTPUT="$dir/$COMMAND"
- fi
- fi
- done
- IFS=$OLD_IFS
- echo "$OUTPUT"
-}
-
-exit 0
+exec /etc/X11/xdm/Xreset
--- gdm-2.20.0-orig/config/Xsession.in 2007-09-17 16:45:50.000000000 +0200
+++ gdm-2.20.0/config/Xsession.in 2007-11-07 00:04:54.000000000 +0100
@@ -1,278 +1,3 @@
#!@XSESSION_SHELL@
#
-# This is SORT OF LIKE an X session, but not quite. You get a command as the
-# first argument (it could be multiple words, so run it with "eval"). As a
-# special case, the command can be:
-# default - Run the appropriate Xclients startup (see the code below)
-# custom - Run ~/.xsession and if that's not available run 'default'
-#
-# (Note that other arguments could also follow, but only the command one is
-# right now relevant and supported)
-#
-# The output is ALREADY redirected to .xsession-errors in GDM. This way
-# .xsession-errors actually gets more output such as if the PreSession script
-# is failing. This also prevents DoS attacks if some app in the users session
-# can be prodded to dump lots of stuff on the stdout/stderr. We wish to be
-# robust don't we? In case you wish to use an existing script for other DM's,
-# you can just not redirect when GDMSESSION is set. GDMSESSION will always
-# be set from gdm.
-#
-# Also note that this is not run as a login shell, this is just executed.
-# This is why we source the profile files below.
-#
-# based on:
-# $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
-
-command="$@"
-
-# this will go into the .xsession-errors along with all other echo's
-# good for debugging where things went wrong
-echo "$0: Beginning session setup..."
-
-# First read /etc/profile and .profile
-test -f /etc/profile && . /etc/profile
-test -f "$HOME/.profile" && . "$HOME/.profile"
-# Second read /etc/xprofile and .xprofile for X specific setup
-test -f /etc/xprofile && . /etc/xprofile
-test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
-
-# Translation stuff
-if [ -x "@libexecdir@/gdmtranslate" ] ; then
- gdmtranslate="@libexecdir@/gdmtranslate"
-else
- gdmtranslate=
-fi
-
-# Note that this should only go to zenity dialogs which always expect utf8
-gettextfunc () {
- if [ "x$gdmtranslate" != "x" ] ; then
- "$gdmtranslate" --utf8 "$1"
- else
- echo "$1"
- fi
-}
-
-OLD_IFS=$IFS
-
-gdmwhich () {
- COMMAND="$1"
- OUTPUT=
- IFS=:
- for dir in $PATH
- do
- if test -x "$dir/$COMMAND" ; then
- if test "x$OUTPUT" = "x" ; then
- OUTPUT="$dir/$COMMAND"
- fi
- fi
- done
- IFS=$OLD_IFS
- echo "$OUTPUT"
-}
-
-zenity=`gdmwhich zenity`
-
-# Note: ~/.xsession-errors is now done in the daemon so that it
-# works for ALL sessions (except ones named 'Failsafe')
-
-# clean up after xbanner
-freetemp=`gdmwhich freetemp`
-if [ -n "$freetemp" ] ; then
- "$freetemp"
-fi
-
-userresources="$HOME/.Xresources"
-usermodmap="$HOME/.Xmodmap"
-userxkbmap="$HOME/.Xkbmap"
-
-sysresources=/etc/X11/Xresources
-sysmodmap=/etc/X11/Xmodmap
-sysxkbmap=/etc/X11/Xkbmap
-
-rh6sysresources=/etc/X11/xinit/Xresources
-rh6sysmodmap=/etc/X11/xinit/Xmodmap
-
-# merge in defaults
-if [ -f "$rh6sysresources" ]; then
- xrdb -merge "$rh6sysresources"
-fi
-
-if [ -f "$sysresources" ]; then
- xrdb -merge "$sysresources"
-fi
-
-if [ -f "$userresources" ]; then
- xrdb -merge "$userresources"
-fi
-
-# merge in keymaps
-if [ -f "$sysxkbmap" ]; then
- setxkbmap `cat "$sysxkbmap"`
- XKB_IN_USE=yes
-fi
-
-if [ -f "$userxkbmap" ]; then
- setxkbmap `cat "$userxkbmap"`
- XKB_IN_USE=yes
-fi
-
-#
-# Eeek, this seems like too much magic here
-#
-if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
- if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
- xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
- if [ -n "$xkbsymbols" ]; then
- setxkbmap -symbols "$xkbsymbols"
- XKB_IN_USE=yes
- fi
- fi
-fi
-
-# xkb and xmodmap don't play nice together
-if [ -z "$XKB_IN_USE" ]; then
- if [ -f "$rh6sysmodmap" ]; then
- xmodmap "$rh6sysmodmap"
- fi
-
- if [ -f "$sysmodmap" ]; then
- xmodmap "$sysmodmap"
- fi
-
- if [ -f "$usermodmap" ]; then
- xmodmap "$usermodmap"
- fi
-fi
-
-unset XKB_IN_USE
-
-# Normalize languages, some places/distros screw us up in /etc/profile,
-# so in case the user did select a language
-if [ -n "$GDM_LANG" ]; then
- LANG="$GDM_LANG"
- export LANG
-
- if [ -n "$LC_ALL" ]; then
- if [ "$LC_ALL" != "$LANG" ]; then
- LC_ALL="$LANG"
- fi
- else
- unset LC_ALL
- fi
-
- if [ -n "$LANGUAGE" ]; then
- if [ "$LANGUAGE" != "$LANG" ]; then
- LANGUAGE="$LANG"
- fi
- else
- unset LANGUAGE
- fi
-
- if [ -n "$LINGUAS" ]; then
- if [ "$LINGUAS" != "$LANG" ]; then
- LINGUAS="$LANG"
- fi
- else
- unset LINGUAS
- fi
-fi
-
-# Normalize all LC_* settings to $LANG
-for var in "LC_ALL" "LC_CTYPE" "LC_NUMERIC" "LC_TIME" "LC_COLLATE" "LC_MONETARY" "LC_MESSAGES" \
- "LC_PAPER" "LC_NAME" "LC_ADDRESS" "LC_TELEPHONE" "LC_MEASUREMENT" "LC_IDENTIFICATION" ; do
- if eval "[ -n \"\$$var\" -a \"\$$var\" != \"\$LANG\" ]" ; then
- unset $var
- fi
-done
-
-# run all system xinitrc shell scripts.
-if [ -d /etc/X11/xinit/xinitrc.d ]; then
- for i in /etc/X11/xinit/xinitrc.d/* ; do
- if [ -x "$i" ]; then
- . "$i"
- fi
- done
-fi
-
-#
-# To determine the character set used for filenames with
-# glib's g_filename_to/from_utf8() functions, we set the
-# environment variables G_FILENAME_ENCODING and G_BROKEN_FILENAMES.
-#
-# G_BROKEN_FILENAMES, when set, lets the functions take the
-# character set for the current locale for filename's encoding.
-#
-# G_FILENAME_ENCODING, which is introduced to glib 2.3.x and later, may be
-# set to a comma-separated list of character set names.
-# The special token "@locale" is taken to mean the character set
-# for the current locale. The first character set from the list is taken
-# as the filename encoding.
-#
-# If G_FILENAME_ENCODING is not set, but G_BROKEN_FILENAMES is, the
-# character set of the current locale is taken as the filename encoding.
-
-G_BROKEN_FILENAMES=yes
-export G_BROKEN_FILENAMES
-# G_FILENAME_ENCODING=@locale
-# export G_FILENAME_ENCODING
-
-#Startup Input methods (IIIM->XIM)
-if [ -f /etc/iiim/xsession ]; then
- . /etc/iiim/xsession
-fi
-#Startup XIM stuff
-if [ "x$XMODIFIERS" = "x" ]; then
- if [ -f "$HOME/.xim" ]; then
- . $HOME/.xim
- elif [ -f "/etc/skel/.xim" ]; then
- . /etc/skel/.xim
- fi
-fi
-
-if [ "x$command" = "xcustom" ] ; then
- if [ -x "$HOME/.xsession" ]; then
- command="$HOME/.xsession"
- else
- echo "$0: Cannot find ~/.xsession will try the default session"
- command="default"
- fi
-fi
-
-if [ "x$command" = "xdefault" ] ; then
- if [ -x "$HOME/.Xclients" ]; then
- command="$HOME/.Xclients"
- elif [ -x /etc/X11/xinit/Xclients ]; then
- command="/etc/X11/xinit/Xclients"
- elif [ -x /etc/X11/Xclients ]; then
- command="/etc/X11/Xclients"
- else
- if [ -n "$zenity" ] ; then
- disptext=`gettextfunc "System has no Xclients file, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window."`
- "$zenity" --info --text "$disptext"
- else
- echo "$0: Cannot find Xclients"
- fi
- exec xterm -geometry 80x24+0+0
- fi
-fi
-
-# add ssh-agent if found
-sshagent="`gdmwhich ssh-agent`"
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
- command="$sshagent -- $command"
-elif [ -z "$sshagent" ] ; then
- echo "$0: ssh-agent not found!"
-fi
-
-echo "$0: Setup done, will execute: $command"
-
-eval exec $command
-
-echo "$0: Executing $command failed, will run xterm"
-
-if [ -n "$zenity" ] ; then
- disptext=`gettextfunc "Failed to start the session, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window."`
- "$zenity" --info --text "$disptext"
-fi
-
-exec xterm -geometry 80x24+0+0
+/bin/bash /etc/X11/xdm/Xstartup && exec /etc/X11/xdm/Xsession $1 $GDM_LANG

View File

@ -1,3 +1,30 @@
-------------------------------------------------------------------
Fri Aug 1 17:28:58 CDT 2008 - hpj@suse.de
- Major upgrade to GDM 2.22.0, which is pretty much a complete rewrite upstream:
+ Added gdm-consolekit-helper-subdir.patch, which lets GDM find ConsoleKit's
helper executable in the subdir where it's installed.
+ Added gdm-2.21.9-no-fatal-warnings.patch, which prevents GDM from crashing
on non-fatal errors.
+ Added gdm-greeter-file-system-type-can-be-null.patch, which prevents a
crash.
+ Added gdm-2.21.5-vt7-temporary-hack.patch, which makes GDM default to VT7
when the initial VT is not specified. Prevents a keyboard lockup on startup.
+ Dropped patches:
gdm-conf.patch, gdm-language-dialog-size.patch,
gdm-xdm-sessions.patch, gdm-presession-kde-path.patch,
gdm-gdmsetup-rootonly.patch, gdm-2.8.0.0-any-hostname-auth.patch,
gdm-2.8.0.0-list-users.patch, gdm-2.8.0.0-setup-no-flicker.patch,
gdm-2.8.0.7-bg-4.patch, gdm-2.8.0.7-domain-entry.patch,
gdm-2.8.0.7-halt-needs-root.patch, gdm-2.8.0.7-onlyshow-in-gnome.patch,
gdm-server-timeout.patch, gdm-2.8.0.7-some-info-in-dialog.patch,
gdm-gdmsetup.patch, gdm-conf-custom-sysconfig.patch,
gdm-2.19.3-reset-pam.patch, gdm-2.19.3-dbus-security-tokens.patch,
gdm-2.19.3-token-login.patch, gdm-2.19.3-token-login2.patch,
gdm-XKeepsCrashing-SaX2.patch, gdm-XKeepsCrashing-desktop-effects.patch,
gdm-language-hang.patch, gdm-2.20.0-wait-for-restart.patch,
gdm-bnc343858-buggy-intel-xinerama.patch.
-------------------------------------------------------------------
Thu May 15 10:14:09 CEST 2008 - vuntz@suse.de

286
gdm.spec
View File

@ -1,10 +1,17 @@
#
# spec file for package gdm (Version 2.20.4)
# spec file for package gdm (Version 2.22.0)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
@ -12,7 +19,7 @@
Name: gdm
BuildRequires: docbook_4 fdupes gnome-common gnome-doc-utils-devel gnome-patch-translation gnutls-devel intltool libglade2-devel libgnomeprintui-devel libgnomeui-devel librsvg-devel libwnck-devel pam-devel perl-XML-Parser pwdutils scrollkeeper tcpd-devel update-desktop-files xorg-x11-server xorg-x11-server-extra zenity
BuildRequires: docbook_4 fdupes gconf2-devel gnome-common gnome-doc-utils-devel gnome-panel-devel gnome-patch-translation intltool libglade2-devel libgnomeprintui-devel libgnomeui-devel libgnutls-devel librsvg-devel libwnck-devel pam-devel perl-XML-Parser pwdutils scrollkeeper tcpd-devel update-desktop-files xorg-x11-server xorg-x11-server-extra zenity
PreReq: /usr/sbin/groupadd
PreReq: /usr/sbin/useradd
PreReq: /usr/sbin/usermod
@ -22,8 +29,8 @@ PreReq: %fillup_prereq
PreReq: %insserv_prereq
License: GPL v2 or later
Group: System/GUI/GNOME
Version: 2.20.4
Release: 24
Version: 2.22.0
Release: 1
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@ -31,50 +38,20 @@ Source2: gdm-autologin.pamd
# FIXME: See FIXME in the script.
Source3: SuSEconfig.gdm
Source5: sysconfig.displaymanager-gdm
Source6: dbus-gdm.conf
# Only system integration patches are allowed in gdm.conf.
# Any Look and Feel changes should be done in gdm-branding packages.
Patch0: gdm-conf.patch
Patch3: gdm-language-dialog-size.patch
Patch5: gdm-xdm-sessions.patch
Patch9: gdm-presession-kde-path.patch
Patch12: gdm-gdmsetup-rootonly.patch
Patch13: gdm-2.8.0.0-any-hostname-auth.patch
Patch14: gdm-2.8.0.0-list-users.patch
Patch15: gdm-2.8.0.0-setup-no-flicker.patch
Patch19: gdm-2.8.0.7-bg-4.patch
Patch20: gdm-2.8.0.7-domain-entry.patch
Patch21: gdm-2.8.0.7-halt-needs-root.patch
Patch22: gdm-2.8.0.7-onlyshow-in-gnome.diff
Patch24: gdm-server-timeout.patch
Patch26: gdm-2.8.0.7-some-info-in-dialog.patch
Patch1: gdm-consolekit-helper-subdir.patch
Patch2: gdm-2.21.9-no-fatal-warnings.patch
Patch3: gdm-greeter-file-system-type-can-be-null.patch
Patch4: gdm-2.21.5-vt7-temporary-hack.patch
Patch28: gdm-X_SERVER.patch
Patch29: gdm-gdmsetup.patch
Patch30: gdm-conf-custom-sysconfig.patch
Patch34: gdm-2.17.7-vt-fallback.patch
Patch35: gdm-2.19.3-reset-pam.patch
Patch36: gdm-2.19.3-dbus-security-tokens.patch
Patch37: gdm-2.19.3-token-login.patch
# don't ask.
Patch38: gdm-2.19.3-token-login2.patch
Patch40: gdm-XKeepsCrashing-SaX2.patch
Patch41: gdm-XKeepsCrashing-desktop-effects.patch
#Patch42: fix-desktop-files.diff
Patch43: gdm-language-hang.patch
Patch45: gdm-2.20.0-wait-for-restart.patch
# PATCH-FIX-UPSTREAM gdm-bnc343858-buggy-intel-xinerama.patch bnc343858 bgo523403 vuntz@novell.com -- make gdm use gdk functions to know about xinerama
Patch48: gdm-bnc343858-buggy-intel-xinerama.patch
Url: http://www.gnome.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
DocDir: %{_defaultdocdir}
Provides: gdm2
Obsoletes: gdm2
%if %suse_version <= 1020
PreReq: xorg-x11
%endif
Requires: gnome-themes klogd xorg-x11-server-extra
Requires: %{name}-branding
Requires: %{name}-lang = %{version}
%gconf_schemas_prereq
%description
This version of GDM, the GNOME display manager, is based on GTK2 and is
@ -118,48 +95,18 @@ Authors:
%lang_package
%prep
%setup -q
gnome-patch-translation-prepare
%patch0
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch5 -p1
%patch9 -p1
%patch12
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch19 -p1
%if %suse_version > 1000
%patch20 -p1
%patch21 -p1
%endif
%patch22 -p1
%patch24 -p1
%patch26 -p1
%patch4 -p1
%patch28
%patch29
%patch30
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p0
%patch40
%patch41
#%patch42 - dont think this patch is needed with suse_udpate_desktop_file -g working.
%patch43
%patch45 -p1
%patch48 -p1
gnome-patch-translation-update
%build
autoreconf -f -i
# gdm-2.16.1: greeter_canvas_text.c:98: warning: dereferencing type-punned pointer will break strict-aliasing rules
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
# FIXME: Build as root modifies system!
# gdm-2.16.1: --disable-scrollkeeper does not work properly.
%configure\
--libexecdir=%{_prefix}/lib/gdm\
--localstatedir=%{_localstatedir}/lib\
--libexecdir=%{_prefix}/lib \
--localstatedir=%{_localstatedir} \
--with-atspi-dir=%{_prefix}/lib/at-spi \
--enable-ipv6\
--disable-scrollkeeper\
@ -168,6 +115,7 @@ make %{?jobs:-j%jobs}
%install
%makeinstall
%find_gconf_schemas
# Remove wrapper, it is not needed.
mv $RPM_BUILD_ROOT%{_sbindir}/gdm-binary $RPM_BUILD_ROOT%{_sbindir}/gdm
# Install PAM files and remove examples.
@ -180,36 +128,18 @@ mv $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT%{_
mkdir -p $RPM_BUILD_ROOT/sbin/conf.d
cp %{S:3} $RPM_BUILD_ROOT/sbin/conf.d
chmod +x $RPM_BUILD_ROOT/sbin/conf.d/SuSEconfig.gdm
%if %suse_version <1010
mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates
cp %{S:5} $RPM_BUILD_ROOT/var/adm/fillup-templates
%endif
#
%if %suse_version > 1030
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/dbus-1/system.d
cp %{S:6} $RPM_BUILD_ROOT/%{_sysconfdir}/dbus-1/system.d/gdm.conf
%endif
touch $RPM_BUILD_ROOT%{_sysconfdir}/gdm/gdm_sysconfig.conf
# gnome.desktop should be in gnome-session, ssh.desktop doesn't work
rm $RPM_BUILD_ROOT%{_datadir}/xsessions/ssh.desktop
rm $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome.desktop
rmdir $RPM_BUILD_ROOT%{_sysconfdir}/dm
%suse_update_desktop_file $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmsetup.desktop SystemSetup
%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmphotosetup.desktop SystemSetup
%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmflexiserver.desktop RemoteAccess
%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmflexiserver-xnest.desktop RemoteAccess
#echo DocPath=gdm >> $RPM_BUILD_ROOT%{_datadir}/applications/gdmsetup.desktop
#echo DocPath=gdm >> $RPM_BUILD_ROOT%{_datadir}/applications/gdmphotosetup.desktop
mkdir -p $RPM_BUILD_ROOT/var/log/gdm
mkdir -p $RPM_BUILD_ROOT{_localstatedir}/log/gdm
mkdir -p $RPM_BUILD_ROOT{_localstatedir}/run/gdm
%find_lang %{name}
mkdir -p $RPM_BUILD_ROOT%{_bindir}
ln -s ../sbin/gdm $RPM_BUILD_ROOT%{_bindir}/gdm
rm $RPM_BUILD_ROOT%{_libdir}/*/*/*.*a
%fdupes $RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%pre
%pre -f %{name}.schemas_pre
/usr/sbin/groupadd -r gdm 2> /dev/null || :
/usr/sbin/useradd -r -o -g gdm -s /bin/false \
-c "Gnome Display Manager daemon" -d /var/lib/gdm gdm 2> /dev/null || :
@ -233,66 +163,70 @@ if grep -q gdm-autologin sbin/conf.d/SuSEconfig.gdm ; then
fi
fi
%post
%if %suse_version < 1010
%{fillup_only -n displaymanager -s gdm}
%{fillup_and_insserv -npY displaymanager}
%endif
%if %suse_version <= 1020
sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/init.d/xdm
%preun -f %{name}.schemas_preun
%posttrans -f %{name}.schemas_posttrans
%triggerin -- xorg-x11
sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/init.d/xdm
%endif
%post
%postun
%insserv_cleanup
%files
%files -f %{name}.schemas_list
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README TODO
%dir %config %{_sysconfdir}/gdm
%dir %{_datadir}/omf/gdm
%config %{_sysconfdir}/gdm/[IPXl]*
%config(noreplace) %{_sysconfdir}/gdm/custom.conf
%{_sysconfdir}/gdm/Xsession
%ghost %{_sysconfdir}/gdm/gdm_sysconfig.conf
%dir %config %{_sysconfdir}/gdm/modules
%config %{_sysconfdir}/gdm/modules/A*
%{_sysconfdir}/gdm/modules/factory*
%{_datadir}/omf/gdm/gdm-*.omf
%{_sbindir}/*
%{_bindir}/*
%{_datadir}/gdm
%exclude %{_datadir}/gdm/*.conf
#%{_datadir}/applications/*.desktop
%{_datadir}/pixmaps/*.png
%{_datadir}/pixmaps/faces
%{_datadir}/icons/*/*/*/*.*
%{_libdir}/gtk-2.0/modules/*
%doc %{_mandir}/man1/*.*
%{_prefix}/lib/gdm
%{_prefix}/lib/*
%{_prefix}/lib/bonobo/servers/*
%{_datadir}/gnome-2.0/ui/*
%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm
%attr(755,gdm,gdm) %dir %{_localstatedir}/run/gdm
%attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm
%config /etc/pam.d/*
/sbin/conf.d/SuSEconfig.gdm
%if %suse_version <1010
/var/adm/fillup-templates/*
%endif
%if %suse_version <= 1020
%dir /usr/share/xsessions
%endif
%if %suse_version > 1030
%{_sysconfdir}/dbus-1/system.d/gdm.conf
%endif
%files lang -f %{name}.lang
%{_sysconfdir}/gdm/gdm.schemas
%{_localstatedir}/lib/gdm/.gconf.mandatory/%gconf-tree.xml
%{_localstatedir}/lib/gdm/.gconf.path
%files branding-upstream
%defattr(-,root,root)
%{_datadir}/gdm/*.conf
%config(noreplace) %{_sysconfdir}/gdm/custom.conf
%files lang -f %{name}.lang
%changelog
* Fri Aug 01 2008 hpj@suse.de
- Major upgrade to GDM 2.22.0, which is pretty much a complete rewrite upstream:
+ Added gdm-consolekit-helper-subdir.patch, which lets GDM find ConsoleKit's
helper executable in the subdir where it's installed.
+ Added gdm-2.21.9-no-fatal-warnings.patch, which prevents GDM from crashing
on non-fatal errors.
+ Added gdm-greeter-file-system-type-can-be-null.patch, which prevents a
crash.
+ Added gdm-2.21.5-vt7-temporary-hack.patch, which makes GDM default to VT7
when the initial VT is not specified. Prevents a keyboard lockup on startup.
+ Dropped patches:
gdm-conf.patch, gdm-language-dialog-size.patch,
gdm-xdm-sessions.patch, gdm-presession-kde-path.patch,
gdm-gdmsetup-rootonly.patch, gdm-2.8.0.0-any-hostname-auth.patch,
gdm-2.8.0.0-list-users.patch, gdm-2.8.0.0-setup-no-flicker.patch,
gdm-2.8.0.7-bg-4.patch, gdm-2.8.0.7-domain-entry.patch,
gdm-2.8.0.7-halt-needs-root.patch, gdm-2.8.0.7-onlyshow-in-gnome.patch,
gdm-server-timeout.patch, gdm-2.8.0.7-some-info-in-dialog.patch,
gdm-gdmsetup.patch, gdm-conf-custom-sysconfig.patch,
gdm-2.19.3-reset-pam.patch, gdm-2.19.3-dbus-security-tokens.patch,
gdm-2.19.3-token-login.patch, gdm-2.19.3-token-login2.patch,
gdm-XKeepsCrashing-SaX2.patch, gdm-XKeepsCrashing-desktop-effects.patch,
gdm-language-hang.patch, gdm-2.20.0-wait-for-restart.patch,
gdm-bnc343858-buggy-intel-xinerama.patch.
* Thu May 15 2008 vuntz@suse.de
- Update gdm-xdm-sessions.patch to run /etc/X11/xdm/Xstartup. Part
of bnc#368673.
@ -375,7 +309,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
displays.
+ Build/configure fixes for Solaris.
+ Translation updates.
* Wed Nov 14 2007 hpj@suse.de
* Tue Nov 13 2007 hpj@suse.de
- Removed second --with-atspi-dir from configure.
- Added gdm-tab-triggers-enter.patch, which fixes Novell bug
[#334446].
@ -384,7 +318,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
(#337428)
- Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm
scripts (#304399)
* Fri Nov 09 2007 hpj@suse.de
* Thu Nov 08 2007 hpj@suse.de
- Pass the --with-atspi-dir= flag to configure so the
at-spi-registryd is started correctly. Fixes Novell bug #337428.
* Thu Oct 18 2007 maw@suse.de
@ -392,7 +326,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Add abuild.patch.
* Thu Oct 11 2007 sbrabec@suse.cz
- Removed bogus dependency on mDNSResponder.
* Mon Sep 24 2007 hpj@suse.de
* Sun Sep 23 2007 hpj@suse.de
- Added gdm-2.20.0-wait-for-restart.patch, which fixes Novell bug
[#326281].
* Thu Sep 20 2007 banderso@suse.de
@ -486,7 +420,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- The greeter.dtd file has been updated. Now the default GDM themes
validate with this dtd. (Dave Fincher)
- Plus translation updates for a plethora of locales.
* Fri Aug 17 2007 hpj@suse.de
* Thu Aug 16 2007 hpj@suse.de
- Fixed missing configuration variable definition in
gdm-2.8.0.7-domain-entry.patch.
* Fri Aug 10 2007 sbrabec@suse.cz
@ -502,7 +436,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Sat Aug 04 2007 maw@suse.de
- Use %%fdupes
- Uncomment out the rm in %%clean.
* Sat Aug 04 2007 hpj@suse.de
* Fri Aug 03 2007 hpj@suse.de
- Update to version 2.19.5.
- Fix up gdm-conf.patch.
- Fix up gdm-2.19.3-reset-pam.patch.
@ -526,11 +460,11 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Tue Jul 24 2007 jpr@suse.de
- Add xorg-x11-server-extras for Xnest/Xephyr so that the defaults
are set correctly (not an installation dep)
* Fri Jul 20 2007 maw@suse.de
* Thu Jul 19 2007 maw@suse.de
- Reenable gdm-conf.patch (#292837).
* Tue Jul 17 2007 coolo@suse.de
- fix pointer arithmetic
* Tue Jul 17 2007 mauro@suse.de
* Mon Jul 16 2007 mauro@suse.de
- Update to version 2.19.3
- Clean up of the not applicable patches.
- Bugfixes for #448547, #448548, #443557.
@ -574,15 +508,15 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
Fontenelle, Pema Geyleg, Priit Laes, Kjartan Maraas, Inaki Larranaga
Murgoitio, Kostas Papadimas, Ignacio Casal Quinteiro, Hendrik Richter,
Changwoo Ryu, Claudio Saavedra)
* Sat Mar 31 2007 maw@suse.de
* Fri Mar 30 2007 maw@suse.de
- Update to version 2.18.0
- b.g.o 415513, 417350, 415181, 409801, 409693, 406226, and 407687.
* Fri Mar 30 2007 aj@suse.de
- Add pwdutils to BuildRequires.
* Thu Mar 22 2007 hpj@suse.de
* Wed Mar 21 2007 hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
* Wed Mar 14 2007 maw@suse.de
* Tue Mar 13 2007 maw@suse.de
- Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch,
gdm-bufferoverrun.patch
@ -590,10 +524,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
[#400698], #399486, #352263, #395790, #394421.
* Fri Mar 02 2007 sbrabec@suse.cz
- Do not own /usr/share/xsessions (#229172).
* Tue Feb 27 2007 hpj@suse.de
* Mon Feb 26 2007 hpj@suse.de
- Added gdm-2.13.0.4-audit-login.patch, which fixes Novell bug
[#234133] (GDM cannot log authentication attempts).
* Wed Feb 14 2007 hpj@suse.de
* Tue Feb 13 2007 hpj@suse.de
- Add gdm-trunk-string-literal-cmp.patch. Fixes #233655.
* Mon Feb 12 2007 sbrabec@suse.cz
- Fixed reversed interpretation of
@ -640,7 +574,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri Oct 27 2006 jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943
* Tue Oct 24 2006 jhargadon@suse.de
* Mon Oct 23 2006 jhargadon@suse.de
- mkdir /var/log/gdm (#213737)
* Thu Oct 12 2006 danw@suse.de
- Remove some dead patches. Rename a few for consistency
@ -662,7 +596,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Tue Sep 26 2006 jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963
* Thu Sep 21 2006 jhargadon@suse.de
* Wed Sep 20 2006 jhargadon@suse.de
- modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904
* Thu Sep 14 2006 jhargadon@suse.de
@ -674,7 +608,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- 341619 - No longer save "Failsafe" sessions as user's default login
* Mon Sep 04 2006 kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd
* Thu Aug 31 2006 jhargadon@suse.de
* Wed Aug 30 2006 jhargadon@suse.de
- update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus
@ -756,21 +690,21 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons.
* Sat Jun 10 2006 hpj@suse.de
* Fri Jun 09 2006 hpj@suse.de
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
* Thu Jun 01 2006 hpj@suse.de
* Wed May 31 2006 hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
* Thu Jun 01 2006 dreveman@suse.de
* Wed May 31 2006 dreveman@suse.de
- Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847)
* Wed May 24 2006 sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
* Fri May 19 2006 hpj@suse.de
* Thu May 18 2006 hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 sbrabec@suse.cz
@ -780,7 +714,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri May 12 2006 sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
* Tue May 09 2006 hpj@suse.de
* Mon May 08 2006 hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651].
- Made use of the tab key work like pressing enter if there is no
@ -808,7 +742,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
service, bug #158786.
* Sat Mar 11 2006 coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
* Tue Mar 07 2006 federico@novell.com
* Mon Mar 06 2006 federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
@ -817,9 +751,9 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
in PLUS (148468#c17).
* Tue Feb 28 2006 sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
* Sat Feb 25 2006 hpj@suse.de
* Fri Feb 24 2006 hpj@suse.de
- Add patch to fix tab keynav.
* Sat Feb 18 2006 sreeves@suse.de
* Fri Feb 17 2006 sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
* Fri Feb 17 2006 gekker@suse.de
- Fix background color in GDM, it should be black
@ -845,10 +779,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Thu Jan 19 2006 hpj@suse.de
* Wed Jan 18 2006 hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
* Tue Jan 17 2006 hpj@suse.de
* Mon Jan 16 2006 hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
* Fri Jan 13 2006 schwab@suse.de
@ -868,37 +802,37 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 gekker@suse.de
- Make gdm.conf %%config(noreplace)
* Fri Oct 14 2005 hpj@suse.de
* Thu Oct 13 2005 hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
* Fri Oct 14 2005 gekker@suse.de
* Thu Oct 13 2005 gekker@suse.de
- Update to version 2.8.0.5
* Wed Oct 05 2005 gekker@suse.de
* Tue Oct 04 2005 gekker@suse.de
- Rediff patch for background colors
* Tue Oct 04 2005 gekker@suse.de
- Fix background colors to be consistent on startup
* Tue Sep 20 2005 sbrabec@suse.cz
- Removed references to build directory in installed .la files.
* Fri Sep 16 2005 gekker@suse.de
* Thu Sep 15 2005 gekker@suse.de
- Make Industrial the default Gtk+ theme (114173)
* Tue Sep 06 2005 sbrabec@suse.cz
- Updated to version 2.8.0.4.
* Tue Aug 23 2005 gekker@suse.de
* Mon Aug 22 2005 gekker@suse.de
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
* Sat Aug 20 2005 hpj@suse.de
* Fri Aug 19 2005 hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
* Sat Aug 13 2005 hpj@suse.de
* Fri Aug 12 2005 hpj@suse.de
- Made gdm-autologin.pam not require a password.
* Fri Aug 12 2005 jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option
* Fri Aug 12 2005 gekker@suse.de
* Thu Aug 11 2005 gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
* Sun Jul 31 2005 jpr@suse.de
* Sat Jul 30 2005 jpr@suse.de
- turn on compatibility symlink for all products
* Tue Jul 05 2005 gekker@suse.de
- Update to version 2.8.0.1
@ -932,7 +866,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri Feb 11 2005 sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch.
* Fri Feb 11 2005 gekker@suse.de
* Thu Feb 10 2005 gekker@suse.de
- Update to version 2.6.0.7
* Wed Feb 09 2005 sbrabec@suse.cz
- Cleaned-up configuration and patches.
@ -947,7 +881,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- add X-KDE-RootOnly to gdmsetup.desktop (#45807)
* Mon Nov 15 2004 kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin
* Wed Oct 27 2004 mmj@suse.de
* Tue Oct 26 2004 mmj@suse.de
- Locale rename no to nb
* Fri Oct 15 2004 sbrabec@suse.cz
- Implemented sysconfig displaymanager support.
@ -956,7 +890,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
the industrial theme (#44330)
* Wed Aug 25 2004 clahey@suse.de
- Cache gdm help and show gdm in khelpcenter.
* Tue Aug 17 2004 ro@suse.de
* Mon Aug 16 2004 ro@suse.de
- fixed specfile
* Mon Aug 16 2004 shprasad@suse.de
- Fixes bug #60020
@ -970,10 +904,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %%install section)
* Thu Jun 24 2004 dave@suse.de
* Wed Jun 23 2004 dave@suse.de
- Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path
* Sat Jun 12 2004 clahey@suse.de
* Fri Jun 11 2004 clahey@suse.de
- Added gdm-support-gdmctl.patch.
* Wed Jun 02 2004 mibarra@suse.de
- Fixed gdm.conf to use the correct group
@ -987,7 +921,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- honor xdm scripts (#37852)
* Tue Mar 23 2004 sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu.
* Tue Mar 23 2004 hhetter@suse.de
* Mon Mar 22 2004 hhetter@suse.de
- remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267)
@ -1023,7 +957,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- updated to version 2.4.1.6
* Mon Jul 28 2003 kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
* Fri Jul 25 2003 hhetter@suse.de
* Thu Jul 24 2003 hhetter@suse.de
- move capplets to correct position
- fix build
* Wed Jul 16 2003 sbrabec@suse.cz
@ -1036,7 +970,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Updated neededforbuild.
- Use %%find_lang.
- Prefix clash fix (capplets).
* Wed May 28 2003 ro@suse.de
* Tue May 27 2003 ro@suse.de
- remove unpackaged files from buildroot
* Mon May 26 2003 sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales.
@ -1060,7 +994,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
* Thu Jan 16 2003 ro@suse.de
* Wed Jan 15 2003 ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 sbrabec@suse.cz
- Update to version 2.4.1.0.
@ -1073,7 +1007,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Removed sox from neededforbuild.
* Thu Nov 28 2002 hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3]
* Tue Nov 12 2002 ro@suse.de
* Mon Nov 11 2002 ro@suse.de
- changed neededforbuild <xf86 xdevel> to <x-devel-packages>
* Sun Nov 03 2002 mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names