]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Make XDMCP tests more controllable
authorRobert Ancell <robert.ancell@canonical.com>
Mon, 16 Nov 2015 23:38:56 +0000 (12:38 +1300)
committerRobert Ancell <robert.ancell@canonical.com>
Mon, 16 Nov 2015 23:38:56 +0000 (12:38 +1300)
tests/scripts/xdmcp-server-autologin.conf
tests/scripts/xdmcp-server-double-login.conf
tests/scripts/xdmcp-server-guest.conf
tests/scripts/xdmcp-server-login.conf
tests/scripts/xdmcp-server-open-file-descriptors.conf
tests/src/X.c

index 92a45f1dccb58c9a57801502f453ff7cc7ef479c..414ab0fe78eb0e99c7cf75953fd48854c1110452 100644 (file)
@@ -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
index bc3acdbeba5aa9eb64bb3d7d35f8becf612ead7c..94efd55b5fa8ebc6218ea2723e6913ff73f83d6c 100644 (file)
@@ -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
index 6f5301dee7e4a99b9112690ba523ef065517b54a..c180026be36efdb26ecd93d6feffdb7753d281a3 100644 (file)
@@ -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
index fb3f809042f9b2fe07db3ab9a21ef2036a959bea..79cf8eddc13fc08379c1c0ce6fb8554668cc9a6e 100644 (file)
@@ -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
index c0c89f4a0d8a77a0b0741ef1088bef11b1e1dede..b7fa3f5d02443603faafa4953fd2143eb6d257ea 100644 (file)
@@ -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
index 5621e3b758d66014cb9c47a5a3870e429f120a39..d62510b4ae61c5fa1dab916a8f87136aeadcddc9 100644 (file)
@@ -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