From 6c74581197b806cf61f4fac2e010e73cafb363d2 Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Tue, 17 Nov 2015 12:38:56 +1300 Subject: [PATCH] Make XDMCP tests more controllable --- tests/scripts/xdmcp-server-autologin.conf | 4 +- tests/scripts/xdmcp-server-double-login.conf | 8 +-- tests/scripts/xdmcp-server-guest.conf | 4 +- tests/scripts/xdmcp-server-login.conf | 4 +- .../xdmcp-server-open-file-descriptors.conf | 4 +- tests/src/X.c | 64 +++++++++++++------ 6 files changed, 56 insertions(+), 32 deletions(-) diff --git a/tests/scripts/xdmcp-server-autologin.conf b/tests/scripts/xdmcp-server-autologin.conf index 92a45f1d..414ab0fe 100644 --- a/tests/scripts/xdmcp-server-autologin.conf +++ b/tests/scripts/xdmcp-server-autologin.conf @@ -26,9 +26,9 @@ autologin-user=have-password1 # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/scripts/xdmcp-server-double-login.conf b/tests/scripts/xdmcp-server-double-login.conf index bc3acdbe..94efd55b 100644 --- a/tests/scripts/xdmcp-server-double-login.conf +++ b/tests/scripts/xdmcp-server-double-login.conf @@ -25,9 +25,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT @@ -64,9 +64,9 @@ user-session=default # Negotiate with daemon #?XSERVER-99 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-99 SEND-REQUEST DISPLAY-NUMBER=99 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-99 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-99 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-99 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=99 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-99 SEND-MANAGE # LightDM connects to X server #?XSERVER-99 ACCEPT-CONNECT diff --git a/tests/scripts/xdmcp-server-guest.conf b/tests/scripts/xdmcp-server-guest.conf index 6f5301de..c180026b 100644 --- a/tests/scripts/xdmcp-server-guest.conf +++ b/tests/scripts/xdmcp-server-guest.conf @@ -25,9 +25,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/scripts/xdmcp-server-login.conf b/tests/scripts/xdmcp-server-login.conf index fb3f8090..79cf8edd 100644 --- a/tests/scripts/xdmcp-server-login.conf +++ b/tests/scripts/xdmcp-server-login.conf @@ -25,9 +25,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/scripts/xdmcp-server-open-file-descriptors.conf b/tests/scripts/xdmcp-server-open-file-descriptors.conf index c0c89f4a..b7fa3f5d 100644 --- a/tests/scripts/xdmcp-server-open-file-descriptors.conf +++ b/tests/scripts/xdmcp-server-open-file-descriptors.conf @@ -25,9 +25,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/src/X.c b/tests/src/X.c index 5621e3b7..d62510b4 100644 --- a/tests/src/X.c +++ b/tests/src/X.c @@ -55,6 +55,9 @@ static XServer *xserver = NULL; /* XDMCP client */ static XDMCPClient *xdmcp_client = NULL; +/* Session ID provided by XDMCP server */ +static guint32 xdmcp_session_id = 0; + /* Authorization provided by XDMCP server */ static guint16 xdmcp_cookie_length = 0; static guint8 *xdmcp_cookie = NULL; @@ -115,21 +118,7 @@ xdmcp_query_cb (XDMCPClient *client) static void xdmcp_willing_cb (XDMCPClient *client, XDMCPWilling *message) { - gchar **authorization_names; - GInetAddress *addresses[2]; - status_notify ("%s GOT-WILLING AUTHENTICATION-NAME=\"%s\" HOSTNAME=\"%s\" STATUS=\"%s\"", id, message->authentication_name, message->hostname, message->status); - - status_notify ("%s SEND-REQUEST DISPLAY-NUMBER=%d AUTHORIZATION-NAME=\"%s\" MFID=\"%s\"", id, display_number, "MIT-MAGIC-COOKIE-1", "TEST XSERVER"); - - authorization_names = g_strsplit ("MIT-MAGIC-COOKIE-1", " ", -1); - addresses[0] = xdmcp_client_get_local_address (client); - addresses[1] = NULL; - xdmcp_client_send_request (client, display_number, - addresses, - "", NULL, 0, - authorization_names, "TEST XSERVER"); - g_strfreev (authorization_names); } static void @@ -137,17 +126,12 @@ xdmcp_accept_cb (XDMCPClient *client, XDMCPAccept *message) { status_notify ("%s GOT-ACCEPT SESSION-ID=%d AUTHENTICATION-NAME=\"%s\" AUTHORIZATION-NAME=\"%s\"", id, message->session_id, message->authentication_name, message->authorization_name); - /* Ignore if haven't picked a valid authorization */ - if (strcmp (message->authorization_name, "MIT-MAGIC-COOKIE-1") != 0) - return; + xdmcp_session_id = message->session_id; g_free (xdmcp_cookie); xdmcp_cookie_length = message->authorization_data_length; xdmcp_cookie = g_malloc (message->authorization_data_length); memcpy (xdmcp_cookie, message->authorization_data, message->authorization_data_length); - - status_notify ("%s SEND-MANAGE SESSION-ID=%d DISPLAY-NUMBER=%d DISPLAY-CLASS=\"%s\"", id, message->session_id, display_number, "DISPLAY CLASS"); - xdmcp_client_send_manage (client, message->session_id, display_number, "DISPLAY CLASS"); } static void @@ -208,6 +192,46 @@ request_cb (const gchar *name, GHashTable *params) if (!xdmcp_client_start (xdmcp_client)) quit (EXIT_FAILURE); } + + else if (strcmp (name, "SEND-REQUEST") == 0) + { + const gchar *addresses_list, *authorization_names_list, *mfid; + gchar **list, **authorization_names; + gsize list_length; + gint i; + GInetAddress **addresses; + + addresses_list = g_hash_table_lookup (params, "ADDRESSES"); + if (!addresses_list) + addresses_list = ""; + authorization_names_list = g_hash_table_lookup (params, "AUTHORIZATION-NAMES"); + if (!authorization_names_list) + authorization_names_list = ""; + mfid = g_hash_table_lookup (params, "MFID"); + if (!mfid) + mfid = ""; + + list = g_strsplit (addresses_list, " ", -1); + list_length = g_strv_length (list); + addresses = g_malloc (sizeof (GInetAddress *) * (list_length + 1)); + for (i = 0; i < list_length; i++) + addresses[i] = g_inet_address_new_from_string (list[i]); + addresses[i] = NULL; + g_strfreev (list); + + authorization_names = g_strsplit (authorization_names_list, " ", -1); + + xdmcp_client_send_request (xdmcp_client, display_number, + addresses, + "", NULL, 0, + authorization_names, mfid); + g_strfreev (authorization_names); + } + + else if (strcmp (name, "SEND-MANAGE") == 0) + { + xdmcp_client_send_manage (xdmcp_client, xdmcp_session_id, display_number, "DISPLAY CLASS"); + } } static int -- 2.39.2