diff --git a/.gitignore b/.gitignore index c3a16e7..2fcea58 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /gnome-remote-desktop-41.0.tar.xz /gnome-remote-desktop-41.1.tar.xz /gnome-remote-desktop-41.2.tar.xz +/gnome-remote-desktop-42.beta.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 820d98e..1ce15ae 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,8 +3,8 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 41.2 -Release: 2%{?dist} +Version: 42~beta +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -80,6 +80,9 @@ GNOME desktop environment. %changelog +* Wed Feb 16 2022 Jonas Ã…dahl - 42~beta-1 +- Update to 42.beta + * Thu Jan 20 2022 Fedora Release Engineering - 41.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 1c5e384..daba810 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 06f99dc1aaef90275547d8c93ddf18e9d0c88257 Mon Sep 17 00:00:00 2001 +From 0fb8045a40412a472db93131df899b94e626886f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 14 Jun 2018 12:21:37 +0200 Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support @@ -25,10 +25,10 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index c8c957c..536e94a 100644 +index 4ac9093..a7d3bb0 100644 --- a/meson.build +++ b/meson.build -@@ -54,6 +54,7 @@ endif +@@ -57,6 +57,7 @@ endif if have_vnc libvncserver_dep = dependency('libvncserver') libvncclient_dep = dependency('libvncclient') @@ -52,7 +52,7 @@ index ffab821..4333863 100644 + #endif /* GRD_ENUMS_H */ diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 0e520dc..0c189fd 100644 +index a4cb958..c2e29b4 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -45,7 +45,9 @@ struct _GrdSessionVnc @@ -65,7 +65,7 @@ index 0e520dc..0c189fd 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -540,6 +542,12 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -543,6 +545,12 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -78,7 +78,7 @@ index 0e520dc..0c189fd 100644 int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width) -@@ -547,6 +555,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -550,6 +558,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, return width * BGRX_BYTES_PER_PIXEL; } @@ -97,7 +97,7 @@ index 0e520dc..0c189fd 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -590,44 +610,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -593,44 +613,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -208,7 +208,7 @@ index 0e520dc..0c189fd 100644 } return G_SOURCE_CONTINUE; -@@ -640,7 +701,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -643,7 +704,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) socket = g_socket_connection_get_socket (session_vnc->connection); session_vnc->source = g_socket_create_source (socket, @@ -220,7 +220,7 @@ index 0e520dc..0c189fd 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -666,8 +730,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -669,8 +733,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -231,7 +231,7 @@ index 0e520dc..0c189fd 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -682,6 +748,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -685,6 +751,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -241,12 +241,12 @@ index 0e520dc..0c189fd 100644 G_OBJECT_CLASS (grd_session_vnc_parent_class)->dispose (object); diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index a532567..4e7b33d 100644 +index fcc508d..092d9dc 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, GRD, SESSION_VNC, - GrdSession); + GrdSession) +typedef gboolean (* GrdVncSocketGrabFunc) (GrdSessionVnc *session_vnc, + GError **error); @@ -276,7 +276,7 @@ index a532567..4e7b33d 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index d2f31d2..12d8693 100644 +index 4560a37..744ff89 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -60,6 +60,7 @@ struct _GrdSettings @@ -287,7 +287,7 @@ index d2f31d2..12d8693 100644 } vnc; }; -@@ -242,6 +243,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) +@@ -248,6 +249,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) return settings->vnc.auth_method; } @@ -300,7 +300,7 @@ index d2f31d2..12d8693 100644 static void update_rdp_tls_cert (GrdSettings *settings) { -@@ -277,6 +284,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -285,6 +292,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -314,7 +314,7 @@ index d2f31d2..12d8693 100644 static void on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -314,6 +328,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -322,6 +336,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -326,7 +326,7 @@ index d2f31d2..12d8693 100644 } static void -@@ -345,6 +364,8 @@ grd_settings_init (GrdSettings *settings) +@@ -356,6 +375,8 @@ grd_settings_init (GrdSettings *settings) settings->rdp.port = GRD_RDP_SERVER_PORT; settings->vnc.port = GRD_VNC_SERVER_PORT; @@ -335,7 +335,7 @@ index d2f31d2..12d8693 100644 } static void -@@ -389,4 +410,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -400,4 +421,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -359,7 +359,7 @@ index e12e47e..b940fdb 100644 + #endif /* GRD_SETTINGS_H */ diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index a6d95cb..f9c68db 100644 +index aae1029..3e43391 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,11 +24,13 @@ @@ -924,10 +924,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 2fe3923..bf8059f 100644 +index 9723d4a..326bef6 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -97,10 +97,13 @@ if have_vnc +@@ -105,10 +105,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -942,11 +942,11 @@ index 2fe3923..bf8059f 100644 endif diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -index 7633e00..c2c543e 100644 +index 0779c8c..b8e3b0a 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in @@ -49,5 +49,15 @@ - * password - by requiring the remote client to provide a known password + * password - by requiring the remote client to provide a known password + @@ -962,10 +962,10 @@ index 7633e00..c2c543e 100644 -- -2.31.1 +2.34.1 -From 9f289a90a167e29cf43e6d0d91c4f7605a131f39 Mon Sep 17 00:00:00 2001 +From 3f7df606d5eed6d5b8444fef801c2bbc2a710b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:02:09 +0100 Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals @@ -978,7 +978,7 @@ out-of-socket source. 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 0c189fd..596896d 100644 +index c2e29b4..4be4c49 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -41,14 +41,27 @@ @@ -1009,8 +1009,8 @@ index 0c189fd..596896d 100644 rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -76,7 +89,7 @@ struct _GrdSessionVnc - G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION); +@@ -77,7 +90,7 @@ struct _GrdSessionVnc + G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION) static void -grd_session_vnc_detach_source (GrdSessionVnc *session_vnc); @@ -1018,7 +1018,7 @@ index 0c189fd..596896d 100644 static gboolean close_session_idle (gpointer user_data); -@@ -235,7 +248,8 @@ handle_client_gone (rfbClientPtr rfb_client) +@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) g_debug ("VNC client gone"); @@ -1028,7 +1028,7 @@ index 0c189fd..596896d 100644 maybe_queue_close_session_idle (session_vnc); session_vnc->rfb_client = NULL; } -@@ -304,7 +318,7 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) session_vnc->prompt_cancellable, prompt_response_callback, session_vnc); @@ -1037,7 +1037,7 @@ index 0c189fd..596896d 100644 return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -533,7 +547,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -536,7 +550,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1046,7 +1046,7 @@ index 0c189fd..596896d 100644 return TRUE; } else -@@ -718,6 +732,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -721,6 +735,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_destroy); } @@ -1083,7 +1083,7 @@ index 0c189fd..596896d 100644 GrdSessionVnc * grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection) -@@ -735,6 +779,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -738,6 +782,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, grd_session_vnc_grab_socket (session_vnc, vnc_socket_grab_func); grd_session_vnc_attach_source (session_vnc); @@ -1091,7 +1091,7 @@ index 0c189fd..596896d 100644 init_vnc_session (session_vnc); -@@ -764,7 +809,7 @@ grd_session_vnc_stop (GrdSession *session) +@@ -767,7 +812,7 @@ grd_session_vnc_stop (GrdSession *session) g_clear_object (&session_vnc->pipewire_stream); @@ -1100,7 +1100,7 @@ index 0c189fd..596896d 100644 g_clear_object (&session_vnc->connection); g_clear_object (&session_vnc->clipboard_vnc); -@@ -817,8 +862,8 @@ grd_session_vnc_stream_ready (GrdSession *session, +@@ -827,8 +872,8 @@ grd_session_vnc_stream_ready (GrdSession *session, G_CALLBACK (on_pipewire_stream_closed), session_vnc); @@ -1111,9 +1111,9 @@ index 0c189fd..596896d 100644 } static void -@@ -837,4 +882,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) - - session_class->stop = grd_session_vnc_stop; +@@ -849,4 +894,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) + session_class->remote_desktop_session_started = + grd_session_vnc_remote_desktop_session_started; session_class->stream_ready = grd_session_vnc_stream_ready; + + signals[PAUSED] = g_signal_new ("paused", @@ -1130,10 +1130,10 @@ index 0c189fd..596896d 100644 + G_TYPE_NONE, 0); } -- -2.31.1 +2.34.1 -From 1d34839781948d8de331641863a589ae4eb46c30 Mon Sep 17 00:00:00 2001 +From 30b795a086db2afaba5a6089567550aaabf66a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:03:46 +0100 Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper @@ -1146,10 +1146,10 @@ available that is not visible to the socket source. 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 596896d..06b2cf7 100644 +index 4be4c49..9708de0 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -672,6 +672,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -675,6 +675,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1171,7 +1171,7 @@ index 596896d..06b2cf7 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -688,16 +703,7 @@ handle_socket_data (GSocket *socket, +@@ -691,16 +706,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1190,7 +1190,7 @@ index 596896d..06b2cf7 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 4e7b33d..cf275af 100644 +index 092d9dc..e9eced0 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -1203,10 +1203,10 @@ index 4e7b33d..cf275af 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.31.1 +2.34.1 -From 9cdf72aa277782906a4b979773a7025a61994785 Mon Sep 17 00:00:00 2001 +From 808f23c5e083f872b9b4343fc06efc76f8a8b9c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:05:13 +0100 Subject: [PATCH 4/7] vnc/tls: Add some logging @@ -1280,10 +1280,10 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.31.1 +2.34.1 -From 2c24c7ffa583c94d3cfd7eb105eb264a6430b128 Mon Sep 17 00:00:00 2001 +From c571ae4d81b77684d19c844435915f6403b5130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:07:40 +0100 Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of @@ -1300,7 +1300,7 @@ long as there is data to read in those buffers. 2 files changed, 86 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index cf275af..efc0038 100644 +index e9eced0..8a916b7 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -1450,10 +1450,10 @@ index ac6c35f..312b6b9 100644 } -- -2.31.1 +2.34.1 -From 28dcea05f8f42c3fe5d43d0dff0cdb1c9fc7f213 Mon Sep 17 00:00:00 2001 +From 8a7cef31e9b22ef3e98fa5b54ac0756083b581e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 16:48:00 +0100 Subject: [PATCH 6/7] session-vnc: Set our own password handling function up @@ -1472,10 +1472,10 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 06b2cf7..7a4c6b3 100644 +index 9708de0..bc60285 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -94,11 +94,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); +@@ -95,11 +95,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); static gboolean close_session_idle (gpointer user_data); @@ -1487,7 +1487,7 @@ index 06b2cf7..7a4c6b3 100644 static void swap_uint8 (uint8_t *a, uint8_t *b) -@@ -321,7 +316,6 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -322,7 +317,6 @@ handle_new_client (rfbClientPtr rfb_client) grd_session_vnc_pause (session_vnc); return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: @@ -1495,7 +1495,7 @@ index 06b2cf7..7a4c6b3 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -620,6 +614,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -623,6 +617,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfb_screen->frameBuffer = g_malloc0 (screen_width * screen_height * 4); memset (rfb_screen->frameBuffer, 0x1f, screen_width * screen_height * 4); @@ -1505,10 +1505,10 @@ index 06b2cf7..7a4c6b3 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.31.1 +2.34.1 -From 2327474d5fa0f6527b2f5f39d54f96f8ff9627db Mon Sep 17 00:00:00 2001 +From 99cf5c5df74b71e5c8ad99ab10cff2f09ee7e677 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 12 Oct 2020 17:34:30 +0200 Subject: [PATCH 7/7] vnc: Copy pixels using the right destination stride @@ -1526,7 +1526,7 @@ dropped. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index efc0038..f3a6314 100644 +index 8a916b7..e85f31e 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -67,7 +67,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, @@ -1540,5 +1540,5 @@ index efc0038..f3a6314 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.31.1 +2.34.1 diff --git a/sources b/sources index 27be743..a01d0b7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-41.2.tar.xz) = 7636c0446c86748ce51c869734a2d33d8285c30616a28a0358f45d8399fd9f5dba7a1bdb830d3ca4753982ac3b9715604eb5934906645a1c11c58b4342c524eb +SHA512 (gnome-remote-desktop-42.beta.tar.xz) = 24d0ab9091f2fb88a975a07493039be3280cd39b698558c4b6cc6901e89bcb56fab88eeec184206647e0f4ac9786c5aeaf94a6feb35fb28b67e54162fab74193