From cd049c393feb0311f75bac743eb999363b4b8aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 4 Mar 2019 15:07:00 +0100 Subject: [PATCH 001/102] Update to 0.1.7 And rebase the TLS patch. --- .gitignore | 3 +- ...Add-anonymous-TLS-encryption-support.patch | 52 ++++++++----------- gnome-remote-desktop.spec | 20 +++---- sources | 2 +- 4 files changed, 32 insertions(+), 45 deletions(-) diff --git a/.gitignore b/.gitignore index cdf94d6..a59cc2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -/gnome-remote-desktop-0.1.2.tar.xz -/gnome-remote-desktop-0.1.6.tar.xz +/gnome-remote-desktop-0.1.*.tar.xz diff --git a/0001-vnc-Add-anonymous-TLS-encryption-support.patch b/0001-vnc-Add-anonymous-TLS-encryption-support.patch index fe25694..4f63274 100644 --- a/0001-vnc-Add-anonymous-TLS-encryption-support.patch +++ b/0001-vnc-Add-anonymous-TLS-encryption-support.patch @@ -1,4 +1,4 @@ -From fcfef86768d3dc63a2e7da799beb011800dff2ad Mon Sep 17 00:00:00 2001 +From 0a6f8835480a1bdb57b77a471bda9993acb8e0b9 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] vnc: Add anonymous TLS encryption support @@ -12,7 +12,7 @@ VNC connection. meson.build | 1 + src/grd-enums.h | 6 + src/grd-session-vnc.c | 98 +++- - src/grd-session-vnc.h | 16 + + src/grd-session-vnc.h | 15 + src/grd-settings.c | 27 ++ src/grd-settings.h | 2 + src/grd-vnc-server.c | 45 ++ @@ -20,15 +20,15 @@ VNC connection. src/grd-vnc-tls.h | 28 ++ src/meson.build | 5 +- ...g.gnome.desktop.remote-desktop.gschema.xml | 10 + - 11 files changed, 666 insertions(+), 16 deletions(-) + 11 files changed, 665 insertions(+), 16 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index d8e20d2..f8c8cee 100644 +index 86730f1..f1d10a6 100644 --- a/meson.build +++ b/meson.build -@@ -15,6 +15,7 @@ systemd_dep = dependency('systemd') +@@ -14,6 +14,7 @@ systemd_dep = dependency('systemd') libvncserver_dep = dependency('libvncserver') libsecret_dep = dependency('libsecret-1') libnotify_dep = dependency('libnotify') @@ -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 5d40971..ce4dd29 100644 +index 589ba4b..1990576 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -44,7 +44,9 @@ struct _GrdSessionVnc @@ -65,7 +65,7 @@ index 5d40971..ce4dd29 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -465,12 +467,30 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -508,12 +510,30 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -96,7 +96,7 @@ index 5d40971..ce4dd29 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -509,33 +529,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -553,33 +573,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -185,7 +185,7 @@ index 5d40971..ce4dd29 100644 } return G_SOURCE_CONTINUE; -@@ -548,7 +609,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -592,7 +653,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, @@ -197,7 +197,7 @@ index 5d40971..ce4dd29 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -574,8 +638,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -618,8 +682,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -208,7 +208,7 @@ index 5d40971..ce4dd29 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -590,6 +656,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -634,6 +700,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -218,18 +218,10 @@ index 5d40971..ce4dd29 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 6bd067a..33245bc 100644 +index 25919b6..e0601c3 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -25,6 +25,7 @@ - - #include - #include -+#include - - #include "grd-session.h" - #include "grd-types.h" -@@ -35,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, +@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, GRD, SESSION_VNC, GrdSession); @@ -239,9 +231,9 @@ index 6bd067a..33245bc 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -45,6 +49,18 @@ void grd_session_vnc_queue_resize_framebuffer (GrdSessionVnc *session_vnc, - void grd_session_vnc_draw_buffer (GrdSessionVnc *session_vnc, - void *data); +@@ -53,6 +56,18 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, + int x, + int y); +int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + @@ -423,7 +415,7 @@ index a8fed02..769b7ec 100644 diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c new file mode 100644 -index 0000000..8fc0fc2 +index 0000000..ec4758e --- /dev/null +++ b/src/grd-vnc-tls.c @@ -0,0 +1,444 @@ @@ -600,7 +592,7 @@ index 0000000..8fc0fc2 +grd_vnc_tls_session_free (GrdVncTlsSession *tls_session) +{ + g_clear_pointer (&tls_session->peek_buffer, g_free); -+ g_clear_pointer (&tls_session->tls_session, (GDestroyNotify) gnutls_deinit); ++ g_clear_pointer (&tls_session->tls_session, gnutls_deinit); + g_free (tls_session); +} + @@ -906,10 +898,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 70e2102..b633ad7 100644 +index e6ba615..31c7221 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -19,6 +19,8 @@ daemon_sources = files([ +@@ -21,6 +21,8 @@ daemon_sources = files([ 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -918,7 +910,7 @@ index 70e2102..b633ad7 100644 ]) gen_daemon_sources = [] -@@ -49,7 +51,8 @@ executable('gnome-remote-desktop-daemon', +@@ -51,7 +53,8 @@ executable('gnome-remote-desktop-daemon', pipewire_dep, libvncserver_dep, libsecret_dep, @@ -949,5 +941,5 @@ index a5c2022..846e65b 100644 -- -2.17.1 +2.20.1 diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ef0a232..1e50fe0 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,31 +1,24 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 0.1.6 -Release: 3%{?dist} +Version: 0.1.7 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/c6862c12f0b741714d5a27e0693322fe/gnome-remote-desktop-0.1.6.tar.xz +Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/ed3e8b8ebc1a74b6f4ed7260a2739f40/gnome-remote-desktop-0.1.7.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: 0001-vnc-Add-anonymous-TLS-encryption-support.patch -# Align pipewire requirement with Fedora -Patch1: 0001-meson.build-Bump-pipewire-requirement-to-0.2.2.patch - -# Don't crash when PipeWire disconnects (rhbz#1632781) -Patch2: 0001-session-vnc-Don-t-requeue-close-session-idle.patch -Patch3: 0002-vnc-pipewire-stream-Close-session-when-disconnected.patch - BuildRequires: git BuildRequires: gcc BuildRequires: meson >= 0.36.0 BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) >= 2.32 BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 -BuildRequires: pkgconfig(libpipewire-0.2) >= 0.2.2 +BuildRequires: pkgconfig(libpipewire-0.2) >= 0.2.5 BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) @@ -34,7 +27,7 @@ BuildRequires: pkgconfig(gnutls) %{?systemd_requires} BuildRequires: systemd -Requires: pipewire >= 0.2.2 +Requires: pipewire >= 0.2.5 %description GNOME Remote Desktop is a remote desktop and screen sharing service for the @@ -76,6 +69,9 @@ GNOME desktop environment. %changelog +* Mon Mar 4 2019 Jonas Ådahl - 0.1.7-1 +- Update to 0.1.7 + * Thu Jan 31 2019 Fedora Release Engineering - 0.1.6-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/sources b/sources index 8d13ee9..1c68eb1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-0.1.6.tar.xz) = 8a205ab8e8f42981a97c0cb2e28b5ed7ea7651cb87217b1667be8d9137037a0ca5d51e4e952db13e65cd6bf32f3bd2bf57bbe802ef896a344384739ac5e5e979 +SHA512 (gnome-remote-desktop-0.1.7.tar.xz) = dd20e5e6fd724ff03d8a32319c7145f1fef4331439e52921b812f087e6b83185bf318bb2fb9758fe083ec3cfea30448b601da4ed1aba85fa892ef7fbb794b9ed From 470360d6b4f025dbea5f01ba0639c77a9c5c0b21 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 25 Jul 2019 04:15:32 +0000 Subject: [PATCH 002/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 1e50fe0..d5f04fe 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.7 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -69,6 +69,9 @@ GNOME desktop environment. %changelog +* Thu Jul 25 2019 Fedora Release Engineering - 0.1.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Mon Mar 4 2019 Jonas Ådahl - 0.1.7-1 - Update to 0.1.7 From dd5f15587e3b4339bb35c4e4d63f74271b0d22de Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jan 2020 22:48:33 +0000 Subject: [PATCH 003/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index d5f04fe..6a27815 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.7 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -69,6 +69,9 @@ GNOME desktop environment. %changelog +* Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Thu Jul 25 2019 Fedora Release Engineering - 0.1.7-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 5ab1cdde9327531757d865a3cdf9b0f1755b9a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 20 Mar 2020 09:51:26 +0100 Subject: [PATCH 004/102] Update to 1.8 --- ...on-support.patch => anon-tls-support.patch | 619 +++++++++++++++++- gnome-remote-desktop.spec | 15 +- sources | 2 +- 3 files changed, 594 insertions(+), 42 deletions(-) rename 0001-vnc-Add-anonymous-TLS-encryption-support.patch => anon-tls-support.patch (58%) diff --git a/0001-vnc-Add-anonymous-TLS-encryption-support.patch b/anon-tls-support.patch similarity index 58% rename from 0001-vnc-Add-anonymous-TLS-encryption-support.patch rename to anon-tls-support.patch index 4f63274..b0bd073 100644 --- a/0001-vnc-Add-anonymous-TLS-encryption-support.patch +++ b/anon-tls-support.patch @@ -1,7 +1,7 @@ -From 0a6f8835480a1bdb57b77a471bda9993acb8e0b9 Mon Sep 17 00:00:00 2001 +From f431e71d2a40db2fcfc8f88ba5899b4b938b4c2f 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] vnc: Add anonymous TLS encryption support +Subject: [PATCH 1/6] vnc: Add anonymous TLS encryption support Add support for encrypting the VNC connection using anonymous TLS. In effect this means that the channel is encrypted using TLS but that no @@ -13,23 +13,23 @@ VNC connection. src/grd-enums.h | 6 + src/grd-session-vnc.c | 98 +++- src/grd-session-vnc.h | 15 + - src/grd-settings.c | 27 ++ + src/grd-settings.c | 28 ++ src/grd-settings.h | 2 + src/grd-vnc-server.c | 45 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 5 +- - ...g.gnome.desktop.remote-desktop.gschema.xml | 10 + - 11 files changed, 665 insertions(+), 16 deletions(-) + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + + 11 files changed, 666 insertions(+), 16 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 86730f1..f1d10a6 100644 +index 516656e..db77711 100644 --- a/meson.build +++ b/meson.build -@@ -14,6 +14,7 @@ systemd_dep = dependency('systemd') - libvncserver_dep = dependency('libvncserver') +@@ -15,6 +15,7 @@ libvncserver_dep = dependency('libvncserver') + libvncclient_dep = dependency('libvncclient') libsecret_dep = dependency('libsecret-1') libnotify_dep = dependency('libnotify') +gnutls_dep = dependency('gnutls') @@ -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 589ba4b..1990576 100644 +index 4cdc379..6d489cc 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -44,7 +44,9 @@ struct _GrdSessionVnc @@ -96,7 +96,7 @@ index 589ba4b..1990576 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -553,33 +573,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -554,33 +574,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -185,7 +185,7 @@ index 589ba4b..1990576 100644 } return G_SOURCE_CONTINUE; -@@ -592,7 +653,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -593,7 +654,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, @@ -197,7 +197,7 @@ index 589ba4b..1990576 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -618,8 +682,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -619,8 +683,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -208,7 +208,7 @@ index 589ba4b..1990576 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -634,6 +700,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -635,6 +701,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -251,19 +251,19 @@ index 25919b6..e0601c3 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index a3a2afa..c886b7e 100644 +index bdf8211..7324310 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c -@@ -46,6 +46,7 @@ struct _GrdSettings - GSettings *settings; +@@ -48,6 +48,7 @@ struct _GrdSettings gboolean view_only; GrdVncAuthMethod auth_method; + int port; + GrdVncEncryption encryption; } vnc; }; -@@ -87,6 +88,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) - return settings->vnc.auth_method; +@@ -120,6 +121,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) + return settings->vnc.auth_method; } +GrdVncEncryption @@ -275,7 +275,7 @@ index a3a2afa..c886b7e 100644 static void update_vnc_view_only (GrdSettings *settings) { -@@ -101,6 +108,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -134,6 +141,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -289,7 +289,7 @@ index a3a2afa..c886b7e 100644 static void on_vnc_settings_changed (GSettings *vnc_settings, const char *key, -@@ -116,6 +130,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -149,6 +163,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -301,15 +301,16 @@ index a3a2afa..c886b7e 100644 } static void -@@ -137,6 +156,7 @@ grd_settings_init (GrdSettings *settings) - - update_vnc_view_only (settings); +@@ -172,6 +191,8 @@ grd_settings_init (GrdSettings *settings) update_vnc_auth_method (settings); + + settings->vnc.port = GRD_VNC_SERVER_PORT; ++ + update_vnc_encryption (settings); } static void -@@ -160,4 +180,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -195,4 +216,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -322,10 +323,10 @@ index a3a2afa..c886b7e 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index 9b23b09..4bca403 100644 +index e4e0c09..0575ec1 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -40,4 +40,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); +@@ -45,4 +45,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); @@ -333,7 +334,7 @@ index 9b23b09..4bca403 100644 + #endif /* GRD_SETTINGS_H */ diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index a8fed02..769b7ec 100644 +index a6d95cb..f9c68db 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,11 +24,13 @@ @@ -348,9 +349,9 @@ index a8fed02..769b7ec 100644 #include "grd-session-vnc.h" +#include "grd-vnc-tls.h" - #define GRD_VNC_SERVER_PORT 5900 -@@ -131,6 +133,43 @@ on_incoming (GSocketService *service, + enum +@@ -130,6 +132,43 @@ on_incoming (GSocketService *service, return TRUE; } @@ -394,7 +395,7 @@ index a8fed02..769b7ec 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -219,12 +258,18 @@ static void +@@ -220,12 +259,18 @@ static void grd_vnc_server_constructed (GObject *object) { GrdVncServer *vnc_server = GRD_VNC_SERVER (object); @@ -898,7 +899,7 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index e6ba615..31c7221 100644 +index 0f76fab..9d2f1ce 100644 --- a/src/meson.build +++ b/src/meson.build @@ -21,6 +21,8 @@ daemon_sources = files([ @@ -920,10 +921,10 @@ index e6ba615..31c7221 100644 include_directories: [configinc], install: true, install_dir: libexecdir) -diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml b/src/org.gnome.desktop.remote-desktop.gschema.xml +diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in index a5c2022..846e65b 100644 ---- a/src/org.gnome.desktop.remote-desktop.gschema.xml -+++ b/src/org.gnome.desktop.remote-desktop.gschema.xml +--- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in ++++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in @@ -23,5 +23,15 @@ * password - by requiring the remote client to provide a known password @@ -941,5 +942,553 @@ index a5c2022..846e65b 100644 -- -2.20.1 +2.25.1 + + +From 73c96bb84856362e2446645533bfff8af2e90529 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/6] session-vnc: Add paused/resumed signals + +Paused is when the socket sourec is detached, and resumed when attached. +Meant to be used by the TLS channel security to a attach/detach +out-of-socket source. +--- + src/grd-session-vnc.c | 72 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 65 insertions(+), 7 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index 6d489cc..afe5889 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -40,14 +40,27 @@ + #define BGRX_SAMPLES_PER_PIXEL 3 + #define BGRX_BYTES_PER_PIXEL 4 + ++enum ++{ ++ PAUSED, ++ RESUMED, ++ ++ N_SIGNALS ++}; ++ ++static guint signals[N_SIGNALS]; ++ + struct _GrdSessionVnc + { + GrdSession parent; + + GrdVncServer *vnc_server; + GSocketConnection *connection; ++ + GList *socket_grabs; + GSource *source; ++ gboolean is_paused; ++ + rfbScreenInfoPtr rfb_screen; + rfbClientPtr rfb_client; + +@@ -73,7 +86,7 @@ struct _GrdSessionVnc + G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION); + + static void +-grd_session_vnc_detach_source (GrdSessionVnc *session_vnc); ++grd_session_vnc_pause (GrdSessionVnc *session_vnc); + + static gboolean + close_session_idle (gpointer user_data); +@@ -215,7 +228,8 @@ handle_client_gone (rfbClientPtr rfb_client) + + g_debug ("VNC client gone"); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); ++ + maybe_queue_close_session_idle (session_vnc); + } + +@@ -283,7 +297,7 @@ handle_new_client (rfbClientPtr rfb_client) + session_vnc->prompt_cancellable, + prompt_response_callback, + session_vnc); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return RFB_CLIENT_ON_HOLD; + case GRD_VNC_AUTH_METHOD_PASSWORD: + session_vnc->rfb_screen->passwordCheck = check_rfb_password; +@@ -501,7 +515,7 @@ check_rfb_password (rfbClientPtr rfb_client, + if (memcmp (challenge_encrypted, response_encrypted, len) == 0) + { + grd_session_start (GRD_SESSION (session_vnc)); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return TRUE; + } + else +@@ -671,6 +685,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) + g_clear_pointer (&session_vnc->source, g_source_destroy); + } + ++gboolean ++grd_session_vnc_is_paused (GrdSessionVnc *session_vnc) ++{ ++ return session_vnc->is_paused; ++} ++ ++static void ++grd_session_vnc_pause (GrdSessionVnc *session_vnc) ++{ ++ if (grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = TRUE; ++ ++ grd_session_vnc_detach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[PAUSED], 0); ++} ++ ++static void ++grd_session_vnc_resume (GrdSessionVnc *session_vnc) ++{ ++ if (!grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = FALSE; ++ ++ grd_session_vnc_attach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[RESUMED], 0); ++} ++ + GrdSessionVnc * + grd_session_vnc_new (GrdVncServer *vnc_server, + GSocketConnection *connection) +@@ -688,6 +732,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); ++ session_vnc->is_paused = FALSE; + + init_vnc_session (session_vnc); + +@@ -717,7 +762,7 @@ grd_session_vnc_stop (GrdSession *session) + + g_clear_object (&session_vnc->pipewire_stream); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + + g_clear_object (&session_vnc->connection); + g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free); +@@ -773,8 +818,8 @@ grd_session_vnc_stream_ready (GrdSession *session, + G_CALLBACK (on_pipwire_stream_closed), + session_vnc); + +- if (!session_vnc->source) +- grd_session_vnc_attach_source (session_vnc); ++ if (grd_session_vnc_is_paused (session_vnc)) ++ grd_session_vnc_resume (session_vnc); + } + + static void +@@ -793,4 +838,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) + + session_class->stop = grd_session_vnc_stop; + session_class->stream_ready = grd_session_vnc_stream_ready; ++ ++ signals[PAUSED] = g_signal_new ("paused", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); ++ signals[RESUMED] = g_signal_new ("resumed", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); + } +-- +2.25.1 + + +From fd139827f668c3fadf61a90b47c1b01a95ba0503 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/6] session-vnc: Add grd_session_vnc_dispatch() helper + +To be used by the TLS channel security to dispatch when there is data +available that is not visible to the socket source. +--- + src/grd-session-vnc.c | 26 ++++++++++++++++---------- + src/grd-session-vnc.h | 2 ++ + 2 files changed, 18 insertions(+), 10 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index afe5889..e26f145 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -625,6 +625,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, + return TRUE; + } + ++void ++grd_session_vnc_dispatch (GrdSessionVnc *session_vnc) ++{ ++ GrdVncSocketGrabFunc grab_func; ++ g_autoptr (GError) error = NULL; ++ ++ grab_func = g_list_first (session_vnc->socket_grabs)->data; ++ if (!grab_func (session_vnc, &error)) ++ { ++ g_warning ("Error when reading socket: %s", error->message); ++ ++ grd_session_stop (GRD_SESSION (session_vnc)); ++ } ++} ++ + static gboolean + handle_socket_data (GSocket *socket, + GIOCondition condition, +@@ -641,16 +656,7 @@ handle_socket_data (GSocket *socket, + } + else if (condition & G_IO_IN) + { +- GrdVncSocketGrabFunc grab_func; +- g_autoptr (GError) error = NULL; +- +- grab_func = g_list_first (session_vnc->socket_grabs)->data; +- if (!grab_func (session_vnc, &error)) +- { +- g_warning ("Error when reading socket: %s", error->message); +- +- grd_session_stop (session); +- } ++ grd_session_vnc_dispatch (session_vnc); + } + else + { +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +index e0601c3..5caa9f4 100644 +--- a/src/grd-session-vnc.h ++++ b/src/grd-session-vnc.h +@@ -68,6 +68,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, + void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, + GrdVncSocketGrabFunc grab_func); + ++void grd_session_vnc_dispatch (GrdSessionVnc *session_vnc); ++ + GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); + + #endif /* GRD_SESSION_VNC_H */ +-- +2.25.1 + + +From 7bdf190a3a69cecfe8027ee499b5029cfb12f3da 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/6] vnc/tls: Add some logging + +Uses the log utility from libvncserver as it is related to the RFB +protocol rather than the session itself. +--- + src/grd-vnc-tls.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c +index ec4758e..ac6c35f 100644 +--- a/src/grd-vnc-tls.c ++++ b/src/grd-vnc-tls.c +@@ -67,6 +67,7 @@ grd_vnc_tls_context_new (void) + + tls_context = g_new0 (GrdVncTlsContext, 1); + ++ rfbLog ("TLS: Initializing gnutls context\n"); + gnutls_global_init (); + + gnutls_anon_allocate_server_credentials (&tls_context->anon_credentials); +@@ -127,6 +128,7 @@ perform_anon_tls_handshake (GrdVncTlsSession *tls_session, + ret = gnutls_handshake (tls_session->tls_session); + if (ret != GNUTLS_E_SUCCESS && !gnutls_error_is_fatal (ret)) + { ++ rfbLog ("TLS: More handshake pending\n"); + tls_session->handshake_state = GRD_TLS_HANDSHAKE_STATE_DURING; + return TRUE; + } +@@ -140,6 +142,8 @@ perform_anon_tls_handshake (GrdVncTlsSession *tls_session, + return FALSE; + } + ++ rfbLog ("TLS: Handshake finished"); ++ + tls_session->handshake_state = GRD_TLS_HANDSHAKE_STATE_FINISHED; + return TRUE; + } +@@ -373,6 +377,7 @@ perform_handshake (GrdSessionVnc *session_vnc, + break; + case GRD_TLS_HANDSHAKE_STATE_FINISHED: + grd_session_vnc_ungrab_socket (session_vnc, tls_handshake_grab_func); ++ rfbLog ("TLS: Sending post-channel security security list\n"); + rfbSendSecurityTypeList (grd_session_vnc_get_rfb_client (session_vnc), + RFB_SECURITY_TAG_CHANNEL); + break; +@@ -387,6 +392,7 @@ tls_handshake_grab_func (GrdSessionVnc *session_vnc, + { + g_autoptr (GError) handshake_error = NULL; + ++ rfbLog ("TLS: Continuing handshake\n"); + if (!perform_handshake (session_vnc, &handshake_error)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, +@@ -404,6 +410,8 @@ rfb_tls_security_handler (rfbClientPtr rfb_client) + GrdVncTlsSession *tls_session; + g_autoptr(GError) error = NULL; + ++ rfbLog ("TLS: Setting up rfbClient for gnutls encrypted traffic\n"); ++ + tls_session = grd_vnc_tls_session_from_vnc_session (session_vnc); + if (!tls_session) + { +@@ -424,6 +432,7 @@ rfb_tls_security_handler (rfbClientPtr rfb_client) + grd_session_vnc_grab_socket (session_vnc, tls_handshake_grab_func); + } + ++ rfbLog ("TLS: Performing handshake\n"); + if (!perform_handshake (session_vnc, &error)) + { + g_warning ("TLS handshake failed: %s", error->message); +-- +2.25.1 + + +From 15a28c9f383b260e9b1cef37a663bff7d2efa255 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/6] vnc/tls: Dispatch also when data is pending outside of + the socket + +gnutls may have data available in its buffers, and we have our own peek +buffer temporarly storing data later to be processed. This would missed +by the socket source, as it wouldn't get any notification about it from +epoll(). Deal with this by adding a custom source that dispatches as +long as there is data to read in those buffers. +--- + src/grd-session-vnc.h | 2 + + src/grd-vnc-tls.c | 92 ++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 88 insertions(+), 6 deletions(-) + +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +index 5caa9f4..db1c7f3 100644 +--- a/src/grd-session-vnc.h ++++ b/src/grd-session-vnc.h +@@ -68,6 +68,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, + void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, + GrdVncSocketGrabFunc grab_func); + ++gboolean grd_session_vnc_is_paused (GrdSessionVnc *session_vnc); ++ + void grd_session_vnc_dispatch (GrdSessionVnc *session_vnc); + + GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); +diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c +index ac6c35f..8f65225 100644 +--- a/src/grd-vnc-tls.c ++++ b/src/grd-vnc-tls.c +@@ -41,6 +41,12 @@ typedef enum _GrdTlsHandshakeState + GRD_TLS_HANDSHAKE_STATE_FINISHED + } GrdTlsHandshakeState; + ++typedef struct _PeekBufferSource ++{ ++ GSource parent; ++ GrdSessionVnc *session_vnc; ++} PeekBufferSource; ++ + typedef struct _GrdVncTlsSession + { + GrdVncTlsContext *tls_context; +@@ -53,6 +59,8 @@ typedef struct _GrdVncTlsSession + char *peek_buffer; + int peek_buffer_size; + int peek_buffer_len; ++ ++ GSource *peek_buffer_source; + } GrdVncTlsSession; + + static gboolean +@@ -296,16 +304,14 @@ grd_vnc_tls_peek_at_socket (rfbClientPtr rfb_client, + peekable_len = MIN (len, tls_session->peek_buffer_len); + memcpy (buf, tls_session->peek_buffer, peekable_len); + ++ fprintf(stderr, ":::: %s:%d %s() - peeked %d bytes, can peek %d bytes\n", __FILE__, __LINE__, __func__, ++ peekable_len, tls_session->peek_buffer_len); + return peekable_len; + } + +-static rfbBool +-grd_vnc_tls_has_pending_on_socket (rfbClientPtr rfb_client) ++static gboolean ++grd_vnc_tls_session_has_pending_data (GrdVncTlsSession *tls_session) + { +- GrdSessionVnc *session_vnc = rfb_client->screen->screenData; +- GrdVncTlsSession *tls_session = +- grd_vnc_tls_session_from_vnc_session (session_vnc); +- + if (tls_session->peek_buffer_len > 0) + return TRUE; + +@@ -315,6 +321,16 @@ grd_vnc_tls_has_pending_on_socket (rfbClientPtr rfb_client) + return FALSE; + } + ++static rfbBool ++grd_vnc_tls_has_pending_on_socket (rfbClientPtr rfb_client) ++{ ++ GrdSessionVnc *session_vnc = rfb_client->screen->screenData; ++ GrdVncTlsSession *tls_session = ++ grd_vnc_tls_session_from_vnc_session (session_vnc); ++ ++ return grd_vnc_tls_session_has_pending_data (tls_session); ++} ++ + static int + grd_vnc_tls_write_to_socket (rfbClientPtr rfb_client, + const char *buf, +@@ -403,6 +419,62 @@ tls_handshake_grab_func (GrdSessionVnc *session_vnc, + return TRUE; + } + ++static gboolean ++peek_buffer_source_prepare (GSource *source, ++ int *timeout) ++{ ++ PeekBufferSource *psource = (PeekBufferSource *) source; ++ GrdSessionVnc *session_vnc = psource->session_vnc; ++ GrdVncTlsSession *tls_session = ++ grd_vnc_tls_session_from_vnc_session (session_vnc); ++ ++ return grd_vnc_tls_session_has_pending_data (tls_session); ++} ++ ++static gboolean ++peek_buffer_source_dispatch (GSource *source, ++ GSourceFunc callback, ++ gpointer user_data) ++{ ++ PeekBufferSource *psource = (PeekBufferSource *) source; ++ GrdSessionVnc *session_vnc = psource->session_vnc; ++ ++ grd_session_vnc_dispatch (session_vnc); ++ ++ return G_SOURCE_CONTINUE; ++} ++ ++static GSourceFuncs peek_buffer_source_funcs = { ++ .prepare = peek_buffer_source_prepare, ++ .dispatch = peek_buffer_source_dispatch, ++}; ++ ++static void ++attach_peek_buffer_source (GrdSessionVnc *session_vnc) ++{ ++ GrdVncTlsSession *tls_session; ++ ++ tls_session = grd_vnc_tls_session_from_vnc_session (session_vnc); ++ tls_session->peek_buffer_source = g_source_new (&peek_buffer_source_funcs, ++ sizeof (PeekBufferSource)); ++ ((PeekBufferSource *) tls_session->peek_buffer_source)->session_vnc = ++ session_vnc; ++ g_source_set_priority (tls_session->peek_buffer_source, ++ G_PRIORITY_DEFAULT + 1); ++ ++ g_source_attach (tls_session->peek_buffer_source, NULL); ++} ++ ++static void ++detach_peek_buffer_source (GrdSessionVnc *session_vnc) ++{ ++ GrdVncTlsSession *tls_session; ++ ++ tls_session = grd_vnc_tls_session_from_vnc_session (session_vnc); ++ ++ g_clear_pointer (&tls_session->peek_buffer_source, g_source_destroy); ++} ++ + static void + rfb_tls_security_handler (rfbClientPtr rfb_client) + { +@@ -429,6 +501,14 @@ rfb_tls_security_handler (rfbClientPtr rfb_client) + rfb_client->hasPendingOnSocket = grd_vnc_tls_has_pending_on_socket; + rfb_client->writeToSocket = grd_vnc_tls_write_to_socket; + ++ if (!grd_session_vnc_is_paused (session_vnc)) ++ attach_peek_buffer_source (session_vnc); ++ ++ g_signal_connect (session_vnc, "paused", ++ G_CALLBACK (detach_peek_buffer_source), NULL); ++ g_signal_connect (session_vnc, "resumed", ++ G_CALLBACK (attach_peek_buffer_source), NULL); ++ + grd_session_vnc_grab_socket (session_vnc, tls_handshake_grab_func); + } + +-- +2.25.1 + + +From a85de2328db0a0d3412f13a5c9f3a0c2676b6239 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/6] session-vnc: Set our own password handling function up + front + +libvncserver decides whether to register a auth security handler +depending on whether the password data is set or not. When we use the +prompt auth method, we don't want to ask for password, so set the +password data to NULL. + +Also, to be a bit more in control of the password mechanism, always set +the password function up front, instead of just when the client uses the +password prompt. +--- + src/grd-session-vnc.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index e26f145..740e68c 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -91,11 +91,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); + static gboolean + close_session_idle (gpointer user_data); + +-static rfbBool +-check_rfb_password (rfbClientPtr rfb_client, +- const char *response_encrypted, +- int len); +- + static void + swap_uint8 (uint8_t *a, + uint8_t *b) +@@ -300,7 +295,6 @@ handle_new_client (rfbClientPtr rfb_client) + grd_session_vnc_pause (session_vnc); + return RFB_CLIENT_ON_HOLD; + case GRD_VNC_AUTH_METHOD_PASSWORD: +- session_vnc->rfb_screen->passwordCheck = check_rfb_password; + /* + * authPasswdData needs to be non NULL in libvncserver to trigger + * password authentication. +@@ -584,6 +578,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); + ++ rfb_screen->passwordCheck = check_rfb_password; ++ + rfbInitServer (rfb_screen); + rfbProcessEvents (rfb_screen, 0); + } +-- +2.25.1 diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6a27815..1b16d67 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,16 +1,16 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 0.1.7 -Release: 3%{?dist} +Version: 0.1.8 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/ed3e8b8ebc1a74b6f4ed7260a2739f40/gnome-remote-desktop-0.1.7.tar.xz +Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/6b6c139b154fbaf51075ac084c0fe14b/gnome-remote-desktop-0.1.8.tar.xz # Adds encryption support (requires patched LibVNCServer) -Patch0: 0001-vnc-Add-anonymous-TLS-encryption-support.patch +Patch0: anon-tls-support.patch BuildRequires: git BuildRequires: gcc @@ -18,7 +18,7 @@ BuildRequires: meson >= 0.36.0 BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) >= 2.32 BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 -BuildRequires: pkgconfig(libpipewire-0.2) >= 0.2.5 +BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0 BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) @@ -27,7 +27,7 @@ BuildRequires: pkgconfig(gnutls) %{?systemd_requires} BuildRequires: systemd -Requires: pipewire >= 0.2.5 +Requires: pipewire >= 0.3.0 %description GNOME Remote Desktop is a remote desktop and screen sharing service for the @@ -69,6 +69,9 @@ GNOME desktop environment. %changelog +* Wed Mar 11 2020 Jonas Ådahl - 0.1.8-1 +- Update to 0.1.8 + * Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild diff --git a/sources b/sources index 1c68eb1..0cd4e90 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-0.1.7.tar.xz) = dd20e5e6fd724ff03d8a32319c7145f1fef4331439e52921b812f087e6b83185bf318bb2fb9758fe083ec3cfea30448b601da4ed1aba85fa892ef7fbb794b9ed +SHA512 (gnome-remote-desktop-0.1.8.tar.xz) = 83e7d9e356c7121d6d102e2f0159f3ff20d039d705dd1ffa7c582a90aa2f433aa6f0153b972f1f2a4da928f842bfb7a950e7ba4b8ff6fda1deb8cf7792114315 From 589a8dd9efd55a1f0e7f5648b5f9c91ee1716f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 20 Mar 2020 10:02:40 +0100 Subject: [PATCH 005/102] Update source URL It was added to the wrong tag note. --- gnome-remote-desktop.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 1b16d67..82dab45 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -7,7 +7,7 @@ Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/6b6c139b154fbaf51075ac084c0fe14b/gnome-remote-desktop-0.1.8.tar.xz +Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/20e4965351cdbd8dc32ff9801e884b91/gnome-remote-desktop-0.1.8.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: anon-tls-support.patch From 6cbcbd37d07f7c8e8176eecdf508472693d48a81 Mon Sep 17 00:00:00 2001 From: Felipe Borges Date: Tue, 2 Jun 2020 17:33:49 +0200 Subject: [PATCH 006/102] Fix black screen issue on Wayland https://gitlab.gnome.org/jadahl/gnome-remote-desktop/-/issues/41 https://gitlab.gnome.org/jadahl/gnome-remote-desktop/-/merge_requests/9#note_803975 --- ...pewire-stream-Handle-stride-mismatch.patch | 73 +++++++++++++++++++ gnome-remote-desktop.spec | 7 +- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 0001-vnc-pipewire-stream-Handle-stride-mismatch.patch diff --git a/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch b/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch new file mode 100644 index 0000000..59bc460 --- /dev/null +++ b/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch @@ -0,0 +1,73 @@ +From 78c5bcb181fe2b0b9fc17eea696feac8b504df54 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Thu, 7 May 2020 15:48:22 +0200 +Subject: [PATCH] vnc/pipewire-stream: Handle stride mismatch + +The VNC server framebuffer assumes a particular stride; but there is no +guarantee that we'll get the same from PipeWire. Handle this gracefully +by coping row by row instead of the whole buffer. +--- + src/grd-vnc-pipewire-stream.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c +index 88c07be..261292a 100644 +--- a/src/grd-vnc-pipewire-stream.c ++++ b/src/grd-vnc-pipewire-stream.c +@@ -187,8 +187,6 @@ on_stream_param_changed (void *user_data, + struct spa_pod_builder pod_builder; + int width; + int height; +- int stride; +- int size; + const struct spa_pod *params[3]; + + if (!format || id != SPA_PARAM_Format) +@@ -203,14 +201,9 @@ on_stream_param_changed (void *user_data, + + grd_session_vnc_queue_resize_framebuffer (stream->session, width, height); + +- stride = grd_session_vnc_get_framebuffer_stride (stream->session); +- size = stride * height; +- + params[0] = spa_pod_builder_add_object ( + &pod_builder, + SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, +- SPA_PARAM_BUFFERS_size, SPA_POD_Int (size), +- SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride), + SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (8, 1, 8), + 0); + +@@ -319,6 +312,10 @@ process_buffer (GrdVncPipeWireStream *stream, + size_t size; + uint8_t *map; + void *src_data; ++ int src_stride; ++ int dst_stride; ++ int height; ++ int y; + struct spa_meta_cursor *spa_meta_cursor; + g_autofree GrdVncFrame *frame = NULL; + +@@ -359,7 +356,17 @@ process_buffer (GrdVncPipeWireStream *stream, + return NULL; + } + +- frame->data = g_memdup (src_data, buffer->datas[0].maxsize); ++ src_stride = buffer->datas[0].chunk->stride; ++ dst_stride = grd_session_vnc_get_framebuffer_stride (stream->session); ++ height = stream->spa_format.size.height; ++ ++ frame->data = g_malloc (height * dst_stride); ++ for (y = 0; y < height; y++) ++ { ++ memcpy (((uint8_t *) frame->data) + y * dst_stride, ++ ((uint8_t *) src_data) + y * src_stride, ++ dst_stride); ++ } + + if (map) + { +-- +2.26.2 + diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 82dab45..4ff22e3 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.8 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -12,6 +12,8 @@ Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/20e # Adds encryption support (requires patched LibVNCServer) Patch0: anon-tls-support.patch +Patch1: 0001-vnc-pipewire-stream-Handle-stride-mismatch.patch + BuildRequires: git BuildRequires: gcc BuildRequires: meson >= 0.36.0 @@ -69,6 +71,9 @@ GNOME desktop environment. %changelog +* Mon Jun 1 2020 Felipe Borges - 0.1.8-2 +- Fix black screen issue in remote connections on Wayland + * Wed Mar 11 2020 Jonas Ådahl - 0.1.8-1 - Update to 0.1.8 From 14fff854abf2a7ad69869614aecc1cda15e8e173 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 27 Jul 2020 20:41:21 +0000 Subject: [PATCH 007/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6a27815..0da5b18 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.7 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -69,6 +69,9 @@ GNOME desktop environment. %changelog +* Mon Jul 27 2020 Fedora Release Engineering - 0.1.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 116f9d5a0915a174f725dcb8c5d7bd316b1bbf29 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 1 Aug 2020 02:19:11 +0000 Subject: [PATCH 008/102] - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 0da5b18..135bee8 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.7 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -69,6 +69,10 @@ GNOME desktop environment. %changelog +* Sat Aug 01 2020 Fedora Release Engineering - 0.1.7-5 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Mon Jul 27 2020 Fedora Release Engineering - 0.1.7-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From e71ada450bd63cff644899f0312a50747b0f4ae1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 27 Aug 2020 13:59:25 -0400 Subject: [PATCH 009/102] Fix crash This commit fixes the memcpy size calculation so it won't crash if the destination stride is bigger than the source stride Related: #1844993 --- 0001-vnc-pipewire-stream-Handle-stride-mismatch.patch | 2 +- gnome-remote-desktop.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch b/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch index 59bc460..dcdad19 100644 --- a/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch +++ b/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch @@ -63,7 +63,7 @@ index 88c07be..261292a 100644 + { + memcpy (((uint8_t *) frame->data) + y * dst_stride, + ((uint8_t *) src_data) + y * src_stride, -+ dst_stride); ++ stream->spa_format.size.width * 4); + } if (map) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 4ff22e3..5c85c4c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.8 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ From dd976f72bdf9de4f95cda9a345a407b516b18311 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 27 Aug 2020 14:53:30 -0400 Subject: [PATCH 010/102] add missing changelog entry Related: #1844993 --- gnome-remote-desktop.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 81dd734..2e7ed27 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -71,6 +71,10 @@ GNOME desktop environment. %changelog +* Thu Aug 27 2020 Ray Strode - 0.1.8-3 +- Fix crash + Related: #1844993 + * Mon Jun 1 2020 Felipe Borges - 0.1.8-2 - Fix black screen issue in remote connections on Wayland From ef24ef5b54dbb63dfd583eb1d11c5bae4fc901e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Sep 2020 10:36:55 +0200 Subject: [PATCH 011/102] Update gnome-remote-desktop - Update to 0.1.9 - Backport race condition crash fix - Rebase anon-tls patches - Cleanup left-over patches --- ...d-Bump-pipewire-requirement-to-0.2.2.patch | 25 --- ...vnc-Don-t-requeue-close-session-idle.patch | 84 ---------- 0001-vnc-Drop-frames-if-client-is-gone.patch | 80 ++++++++++ ...ream-Close-session-when-disconnected.patch | 28 ---- gnome-remote-desktop.spec | 20 ++- ...-tls-support.patch => gnutls-anontls.patch | 149 +++++++++--------- sources | 2 +- 7 files changed, 168 insertions(+), 220 deletions(-) delete mode 100644 0001-meson.build-Bump-pipewire-requirement-to-0.2.2.patch delete mode 100644 0001-session-vnc-Don-t-requeue-close-session-idle.patch create mode 100644 0001-vnc-Drop-frames-if-client-is-gone.patch delete mode 100644 0002-vnc-pipewire-stream-Close-session-when-disconnected.patch rename anon-tls-support.patch => gnutls-anontls.patch (92%) diff --git a/0001-meson.build-Bump-pipewire-requirement-to-0.2.2.patch b/0001-meson.build-Bump-pipewire-requirement-to-0.2.2.patch deleted file mode 100644 index 62b84b2..0000000 --- a/0001-meson.build-Bump-pipewire-requirement-to-0.2.2.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 8f760d73df6011330cd09da7ca7b8a3f40c9a3ef Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Tue, 7 Aug 2018 13:35:43 +0200 -Subject: [PATCH] meson.build: Bump pipewire requirement to 0.2.2 - ---- - meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 6951b89..34ec5ea 100644 ---- a/meson.build -+++ b/meson.build -@@ -10,7 +10,7 @@ gnome = import('gnome') - glib_dep = dependency('glib-2.0') - gio_dep = dependency('gio-2.0') - gio_unix_dep = dependency('gio-unix-2.0') --pipewire_dep = dependency('libpipewire-0.1') -+pipewire_dep = dependency('libpipewire-0.2', version: '>= 0.2.2') - systemd_dep = dependency('systemd') - libvncserver_dep = dependency('libvncserver') - libsecret_dep = dependency('libsecret-1') --- -2.17.1 - diff --git a/0001-session-vnc-Don-t-requeue-close-session-idle.patch b/0001-session-vnc-Don-t-requeue-close-session-idle.patch deleted file mode 100644 index 20a3f56..0000000 --- a/0001-session-vnc-Don-t-requeue-close-session-idle.patch +++ /dev/null @@ -1,84 +0,0 @@ -From add0ea34fd1d6835c99aebeb4e56b805b38e53ec Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Mon, 1 Oct 2018 18:02:39 +0200 -Subject: [PATCH 1/2] session/vnc: Don't requeue close session idle - -If being closed due to a PipeWire error, RFB will still process state -and invoke callbacks when cleaning up the RFB screen, meaning we'd -requeue the close session idle handler. Avoid this by avoiding -requeueing if there is already one queued, and don't mark is as unqueued -until after actually stopping the session. ---- - src/grd-session-vnc.c | 28 ++++++++++++++++++---------- - 1 file changed, 18 insertions(+), 10 deletions(-) - -diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index ce4dd29..3c98eeb 100644 ---- a/src/grd-session-vnc.c -+++ b/src/grd-session-vnc.c -@@ -165,6 +165,16 @@ grd_session_vnc_draw_buffer (GrdSessionVnc *session_vnc, - rfbProcessEvents (session_vnc->rfb_screen, 0); - } - -+static void -+maybe_queue_close_session_idle (GrdSessionVnc *session_vnc) -+{ -+ if (session_vnc->close_session_idle_id) -+ return; -+ -+ session_vnc->close_session_idle_id = -+ g_idle_add (close_session_idle, session_vnc); -+} -+ - static void - handle_client_gone (rfbClientPtr rfb_client) - { -@@ -172,8 +182,7 @@ handle_client_gone (rfbClientPtr rfb_client) - - g_debug ("VNC client gone"); - -- session_vnc->close_session_idle_id = -- g_idle_add (close_session_idle, session_vnc); -+ maybe_queue_close_session_idle (session_vnc); - } - - static void -@@ -670,12 +679,6 @@ grd_session_vnc_stop (GrdSession *session) - - g_debug ("Stopping VNC session"); - -- if (session_vnc->close_session_idle_id) -- { -- g_source_remove (session_vnc->close_session_idle_id); -- session_vnc->close_session_idle_id = 0; -- } -- - g_clear_object (&session_vnc->pipewire_stream); - - grd_session_vnc_detach_source (session_vnc); -@@ -683,6 +686,12 @@ grd_session_vnc_stop (GrdSession *session) - g_clear_object (&session_vnc->connection); - g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free); - g_clear_pointer (&session_vnc->rfb_screen, (GDestroyNotify) rfbScreenCleanup); -+ -+ if (session_vnc->close_session_idle_id) -+ { -+ g_source_remove (session_vnc->close_session_idle_id); -+ session_vnc->close_session_idle_id = 0; -+ } - } - - static gboolean -@@ -703,8 +712,7 @@ on_pipwire_stream_closed (GrdVncPipeWireStream *stream, - { - g_warning ("PipeWire stream closed, closing client"); - -- session_vnc->close_session_idle_id = -- g_idle_add (close_session_idle, session_vnc); -+ maybe_queue_close_session_idle (session_vnc); - } - - static void --- -2.17.1 - diff --git a/0001-vnc-Drop-frames-if-client-is-gone.patch b/0001-vnc-Drop-frames-if-client-is-gone.patch new file mode 100644 index 0000000..59dde2a --- /dev/null +++ b/0001-vnc-Drop-frames-if-client-is-gone.patch @@ -0,0 +1,80 @@ +From ab97841629f5f3f4fab9993b6255b6ae04828b9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Wed, 9 Sep 2020 10:14:20 +0200 +Subject: [PATCH] vnc: Drop frames if client is gone + +Frames from PipeWire are posted asynchronously from a I/O thread to the +main thread where they are turned into VNC frame updates and cursor +movements. On the other hand, sessions are closed asynchronously when +the VNC client disappears. If a frame ended up on the main thread after +a client disappeared but before the session and stream was closed, we'd +try to turn the new frames into VNC updates without a client being +available, causing use after free. + +Fix this by dropping frames that happens during this time frame. + +Closes: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/issues/43 +--- + src/grd-session-vnc.c | 7 +++++++ + src/grd-session-vnc.h | 2 ++ + src/grd-vnc-pipewire-stream.c | 8 ++++++++ + 3 files changed, 17 insertions(+) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index 813838a..a06d34d 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -209,6 +209,12 @@ maybe_queue_close_session_idle (GrdSessionVnc *session_vnc) + g_idle_add (close_session_idle, session_vnc); + } + ++gboolean ++grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc) ++{ ++ return !session_vnc->rfb_client; ++} ++ + static void + handle_client_gone (rfbClientPtr rfb_client) + { +@@ -218,6 +224,7 @@ handle_client_gone (rfbClientPtr rfb_client) + + grd_session_vnc_detach_source (session_vnc); + maybe_queue_close_session_idle (session_vnc); ++ session_vnc->rfb_client = NULL; + } + + static void +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +index 579a12a..07678c8 100644 +--- a/src/grd-session-vnc.h ++++ b/src/grd-session-vnc.h +@@ -57,4 +57,6 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, + + int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); + ++gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); ++ + #endif /* GRD_SESSION_VNC_H */ +diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c +index 78793c4..96dd7c9 100644 +--- a/src/grd-vnc-pipewire-stream.c ++++ b/src/grd-vnc-pipewire-stream.c +@@ -234,6 +234,14 @@ do_render (struct spa_loop *loop, + if (!frame) + return 0; + ++ if (grd_session_vnc_is_client_gone (stream->session)) ++ { ++ g_free (frame->data); ++ g_clear_pointer (&frame->rfb_cursor, rfbFreeCursor); ++ g_free (frame); ++ return 0; ++ } ++ + if (frame->rfb_cursor) + grd_session_vnc_set_cursor (stream->session, frame->rfb_cursor); + +-- +2.26.2 + diff --git a/0002-vnc-pipewire-stream-Close-session-when-disconnected.patch b/0002-vnc-pipewire-stream-Close-session-when-disconnected.patch deleted file mode 100644 index cd1c5e4..0000000 --- a/0002-vnc-pipewire-stream-Close-session-when-disconnected.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 59188d81cf8936cd9f5400df040d875427251bf2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Mon, 1 Oct 2018 18:05:07 +0200 -Subject: [PATCH 2/2] vnc-pipewire-stream: Close session when disconnected - -When there is an active stream, and we're disconnected from PipeWire -(e.g. because it terminated), close the session. ---- - src/grd-vnc-pipewire-stream.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c -index 66d66a0..d6454b8 100644 ---- a/src/grd-vnc-pipewire-stream.c -+++ b/src/grd-vnc-pipewire-stream.c -@@ -392,6 +392,9 @@ on_state_changed (void *user_data, - } - break; - case PW_REMOTE_STATE_UNCONNECTED: -+ if (stream->pipewire_stream) -+ g_signal_emit (stream, signals[CLOSED], 0); -+ break; - case PW_REMOTE_STATE_CONNECTING: - break; - } --- -2.17.1 - diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2e7ed27..ecad0c8 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,27 +1,30 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 0.1.8 -Release: 3%{?dist} +Version: 0.1.9 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://gitlab.gnome.org/jadahl/gnome-remote-desktop/uploads/20e4965351cdbd8dc32ff9801e884b91/gnome-remote-desktop-0.1.8.tar.xz +Source0: https://download.gnome.org/sources/gnome-remote-desktop/0.1/gnome-remote-desktop-0.1.9.tar.xz + +# Avoid race condition on disconnect +Patch0: 0001-vnc-Drop-frames-if-client-is-gone.patch # Adds encryption support (requires patched LibVNCServer) -Patch0: anon-tls-support.patch - -Patch1: 0001-vnc-pipewire-stream-Handle-stride-mismatch.patch +Patch1: gnutls-anontls.patch BuildRequires: git BuildRequires: gcc BuildRequires: meson >= 0.36.0 BuildRequires: pkgconfig +BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(glib-2.0) >= 2.32 BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0 BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 +BuildRequires: pkgconfig(freerdp2) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(gnutls) @@ -71,6 +74,11 @@ GNOME desktop environment. %changelog +* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-1 +- Update to 0.1.9 +- Backport race condition crash fix +- Rebase anon-tls patches + * Thu Aug 27 2020 Ray Strode - 0.1.8-3 - Fix crash Related: #1844993 diff --git a/anon-tls-support.patch b/gnutls-anontls.patch similarity index 92% rename from anon-tls-support.patch rename to gnutls-anontls.patch index b0bd073..6c6db61 100644 --- a/anon-tls-support.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From f431e71d2a40db2fcfc8f88ba5899b4b938b4c2f Mon Sep 17 00:00:00 2001 +From 546151b4e15fd45901f38172435cd9aa63893727 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/6] vnc: Add anonymous TLS encryption support @@ -25,13 +25,13 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 516656e..db77711 100644 +index af423a4..813c97f 100644 --- a/meson.build +++ b/meson.build -@@ -15,6 +15,7 @@ libvncserver_dep = dependency('libvncserver') - libvncclient_dep = dependency('libvncclient') +@@ -20,6 +20,7 @@ libvncclient_dep = dependency('libvncclient') libsecret_dep = dependency('libsecret-1') libnotify_dep = dependency('libnotify') + winpr_dep = dependency('winpr2', version: freerdp_req) +gnutls_dep = dependency('gnutls') cdata = configuration_data() @@ -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 4cdc379..6d489cc 100644 +index a06d34d..d014315 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -44,7 +44,9 @@ struct _GrdSessionVnc @@ -65,7 +65,7 @@ index 4cdc379..6d489cc 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -508,12 +510,30 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -518,12 +520,30 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -96,7 +96,7 @@ index 4cdc379..6d489cc 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -554,33 +574,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -564,33 +584,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -185,7 +185,7 @@ index 4cdc379..6d489cc 100644 } return G_SOURCE_CONTINUE; -@@ -593,7 +654,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -603,7 +664,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, @@ -197,7 +197,7 @@ index 4cdc379..6d489cc 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -619,8 +683,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -629,8 +693,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -208,7 +208,7 @@ index 4cdc379..6d489cc 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -635,6 +701,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -645,6 +711,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -218,7 +218,7 @@ index 4cdc379..6d489cc 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 25919b6..e0601c3 100644 +index 07678c8..bba3d56 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, @@ -231,7 +231,7 @@ index 25919b6..e0601c3 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -53,6 +56,18 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, +@@ -55,8 +58,20 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, int x, int y); @@ -239,6 +239,8 @@ index 25919b6..e0601c3 100644 + int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); + +rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc); + +void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -251,10 +253,10 @@ index 25919b6..e0601c3 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index bdf8211..7324310 100644 +index 3af87be..f37f2da 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c -@@ -48,6 +48,7 @@ struct _GrdSettings +@@ -60,6 +60,7 @@ struct _GrdSettings gboolean view_only; GrdVncAuthMethod auth_method; int port; @@ -262,7 +264,7 @@ index bdf8211..7324310 100644 } vnc; }; -@@ -120,6 +121,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) +@@ -232,6 +233,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) return settings->vnc.auth_method; } @@ -273,9 +275,9 @@ index bdf8211..7324310 100644 +} + static void - update_vnc_view_only (GrdSettings *settings) + update_rdp_tls_cert (GrdSettings *settings) { -@@ -134,6 +141,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -267,6 +274,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -287,9 +289,9 @@ index bdf8211..7324310 100644 +} + static void - on_vnc_settings_changed (GSettings *vnc_settings, + on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -149,6 +163,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -304,6 +318,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -301,16 +303,16 @@ index bdf8211..7324310 100644 } static void -@@ -172,6 +191,8 @@ grd_settings_init (GrdSettings *settings) - update_vnc_auth_method (settings); +@@ -335,6 +354,8 @@ grd_settings_init (GrdSettings *settings) + settings->rdp.port = GRD_RDP_SERVER_PORT; settings->vnc.port = GRD_VNC_SERVER_PORT; + + update_vnc_encryption (settings); } static void -@@ -195,4 +216,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -379,4 +400,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -323,10 +325,10 @@ index bdf8211..7324310 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index e4e0c09..0575ec1 100644 +index e12e47e..b940fdb 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -45,4 +45,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); +@@ -64,4 +64,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); @@ -899,10 +901,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 0f76fab..9d2f1ce 100644 +index 1b6425d..17579b1 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -21,6 +21,8 @@ daemon_sources = files([ +@@ -33,6 +33,8 @@ daemon_sources = files([ 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -911,21 +913,21 @@ index 0f76fab..9d2f1ce 100644 ]) gen_daemon_sources = [] -@@ -51,7 +53,8 @@ executable('gnome-remote-desktop-daemon', - pipewire_dep, +@@ -66,7 +68,8 @@ executable('gnome-remote-desktop-daemon', libvncserver_dep, libsecret_dep, -- libnotify_dep], -+ libnotify_dep, + libnotify_dep, +- winpr_dep], ++ winpr_dep, + gnutls_dep], include_directories: [configinc], install: true, install_dir: libexecdir) diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -index a5c2022..846e65b 100644 +index 4b6e593..0086d99 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -@@ -23,5 +23,15 @@ +@@ -49,5 +49,15 @@ * password - by requiring the remote client to provide a known password @@ -942,10 +944,10 @@ index a5c2022..846e65b 100644 -- -2.25.1 +2.26.2 -From 73c96bb84856362e2446645533bfff8af2e90529 Mon Sep 17 00:00:00 2001 +From 2e46518f421fd8704770bb6742accfacba3570aa 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/6] session-vnc: Add paused/resumed signals @@ -958,7 +960,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 6d489cc..afe5889 100644 +index d014315..7edd407 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -40,14 +40,27 @@ @@ -998,7 +1000,7 @@ index 6d489cc..afe5889 100644 static gboolean close_session_idle (gpointer user_data); -@@ -215,7 +228,8 @@ handle_client_gone (rfbClientPtr rfb_client) +@@ -224,7 +237,8 @@ handle_client_gone (rfbClientPtr rfb_client) g_debug ("VNC client gone"); @@ -1006,9 +1008,9 @@ index 6d489cc..afe5889 100644 + grd_session_vnc_pause (session_vnc); + maybe_queue_close_session_idle (session_vnc); + session_vnc->rfb_client = NULL; } - -@@ -283,7 +297,7 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -293,7 +307,7 @@ handle_new_client (rfbClientPtr rfb_client) session_vnc->prompt_cancellable, prompt_response_callback, session_vnc); @@ -1017,7 +1019,7 @@ index 6d489cc..afe5889 100644 return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -501,7 +515,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -511,7 +525,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1026,7 +1028,7 @@ index 6d489cc..afe5889 100644 return TRUE; } else -@@ -671,6 +685,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -681,6 +695,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_destroy); } @@ -1063,7 +1065,7 @@ index 6d489cc..afe5889 100644 GrdSessionVnc * grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection) -@@ -688,6 +732,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -698,6 +742,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); @@ -1071,7 +1073,7 @@ index 6d489cc..afe5889 100644 init_vnc_session (session_vnc); -@@ -717,7 +762,7 @@ grd_session_vnc_stop (GrdSession *session) +@@ -727,7 +772,7 @@ grd_session_vnc_stop (GrdSession *session) g_clear_object (&session_vnc->pipewire_stream); @@ -1080,8 +1082,8 @@ index 6d489cc..afe5889 100644 g_clear_object (&session_vnc->connection); g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free); -@@ -773,8 +818,8 @@ grd_session_vnc_stream_ready (GrdSession *session, - G_CALLBACK (on_pipwire_stream_closed), +@@ -783,8 +828,8 @@ grd_session_vnc_stream_ready (GrdSession *session, + G_CALLBACK (on_pipewire_stream_closed), session_vnc); - if (!session_vnc->source) @@ -1091,7 +1093,7 @@ index 6d489cc..afe5889 100644 } static void -@@ -793,4 +838,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) +@@ -803,4 +848,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) session_class->stop = grd_session_vnc_stop; session_class->stream_ready = grd_session_vnc_stream_ready; @@ -1110,10 +1112,10 @@ index 6d489cc..afe5889 100644 + G_TYPE_NONE, 0); } -- -2.25.1 +2.26.2 -From fd139827f668c3fadf61a90b47c1b01a95ba0503 Mon Sep 17 00:00:00 2001 +From b59c36ccf73939d32ccf5ab4eb47460a9fe415f3 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/6] session-vnc: Add grd_session_vnc_dispatch() helper @@ -1126,10 +1128,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 afe5889..e26f145 100644 +index 7edd407..29c94a1 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -625,6 +625,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -635,6 +635,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1151,7 +1153,7 @@ index afe5889..e26f145 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -641,16 +656,7 @@ handle_socket_data (GSocket *socket, +@@ -651,16 +666,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1170,10 +1172,10 @@ index afe5889..e26f145 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index e0601c3..5caa9f4 100644 +index bba3d56..58f635c 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -68,6 +68,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1183,10 +1185,10 @@ index e0601c3..5caa9f4 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.25.1 +2.26.2 -From 7bdf190a3a69cecfe8027ee499b5029cfb12f3da Mon Sep 17 00:00:00 2001 +From 966b2ddbd1c03c9e20dc66e5ea9a2dfb39ba4bfa 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/6] vnc/tls: Add some logging @@ -1260,10 +1262,10 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.25.1 +2.26.2 -From 15a28c9f383b260e9b1cef37a663bff7d2efa255 Mon Sep 17 00:00:00 2001 +From e01d27dc9911f4d7ecfd232c7e389f4dabfd87de 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/6] vnc/tls: Dispatch also when data is pending outside of @@ -1276,14 +1278,14 @@ epoll(). Deal with this by adding a custom source that dispatches as long as there is data to read in those buffers. --- src/grd-session-vnc.h | 2 + - src/grd-vnc-tls.c | 92 ++++++++++++++++++++++++++++++++++++++++--- - 2 files changed, 88 insertions(+), 6 deletions(-) + src/grd-vnc-tls.c | 90 ++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 86 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 5caa9f4..db1c7f3 100644 +index 58f635c..0d01ad3 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -68,6 +68,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1293,7 +1295,7 @@ index 5caa9f4..db1c7f3 100644 GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c -index ac6c35f..8f65225 100644 +index ac6c35f..312b6b9 100644 --- a/src/grd-vnc-tls.c +++ b/src/grd-vnc-tls.c @@ -41,6 +41,12 @@ typedef enum _GrdTlsHandshakeState @@ -1318,12 +1320,7 @@ index ac6c35f..8f65225 100644 } GrdVncTlsSession; static gboolean -@@ -296,16 +304,14 @@ grd_vnc_tls_peek_at_socket (rfbClientPtr rfb_client, - peekable_len = MIN (len, tls_session->peek_buffer_len); - memcpy (buf, tls_session->peek_buffer, peekable_len); - -+ fprintf(stderr, ":::: %s:%d %s() - peeked %d bytes, can peek %d bytes\n", __FILE__, __LINE__, __func__, -+ peekable_len, tls_session->peek_buffer_len); +@@ -299,13 +307,9 @@ grd_vnc_tls_peek_at_socket (rfbClientPtr rfb_client, return peekable_len; } @@ -1339,7 +1336,7 @@ index ac6c35f..8f65225 100644 if (tls_session->peek_buffer_len > 0) return TRUE; -@@ -315,6 +321,16 @@ grd_vnc_tls_has_pending_on_socket (rfbClientPtr rfb_client) +@@ -315,6 +319,16 @@ grd_vnc_tls_has_pending_on_socket (rfbClientPtr rfb_client) return FALSE; } @@ -1356,7 +1353,7 @@ index ac6c35f..8f65225 100644 static int grd_vnc_tls_write_to_socket (rfbClientPtr rfb_client, const char *buf, -@@ -403,6 +419,62 @@ tls_handshake_grab_func (GrdSessionVnc *session_vnc, +@@ -403,6 +417,62 @@ tls_handshake_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1419,7 +1416,7 @@ index ac6c35f..8f65225 100644 static void rfb_tls_security_handler (rfbClientPtr rfb_client) { -@@ -429,6 +501,14 @@ rfb_tls_security_handler (rfbClientPtr rfb_client) +@@ -429,6 +499,14 @@ rfb_tls_security_handler (rfbClientPtr rfb_client) rfb_client->hasPendingOnSocket = grd_vnc_tls_has_pending_on_socket; rfb_client->writeToSocket = grd_vnc_tls_write_to_socket; @@ -1435,10 +1432,10 @@ index ac6c35f..8f65225 100644 } -- -2.25.1 +2.26.2 -From a85de2328db0a0d3412f13a5c9f3a0c2676b6239 Mon Sep 17 00:00:00 2001 +From 682f3b4a8e985f00a00e761a086a15cb5e2b9b04 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/6] session-vnc: Set our own password handling function up @@ -1457,7 +1454,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index e26f145..740e68c 100644 +index 29c94a1..ebe1540 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -91,11 +91,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1472,7 +1469,7 @@ index e26f145..740e68c 100644 static void swap_uint8 (uint8_t *a, uint8_t *b) -@@ -300,7 +295,6 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -310,7 +305,6 @@ handle_new_client (rfbClientPtr rfb_client) grd_session_vnc_pause (session_vnc); return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: @@ -1480,7 +1477,7 @@ index e26f145..740e68c 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -584,6 +578,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -594,6 +588,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); @@ -1490,5 +1487,5 @@ index e26f145..740e68c 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.25.1 +2.26.2 diff --git a/sources b/sources index 0cd4e90..65eca64 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-0.1.8.tar.xz) = 83e7d9e356c7121d6d102e2f0159f3ff20d039d705dd1ffa7c582a90aa2f433aa6f0153b972f1f2a4da928f842bfb7a950e7ba4b8ff6fda1deb8cf7792114315 +SHA512 (gnome-remote-desktop-0.1.9.tar.xz) = 6ac2962c824634cd5322785b6d251e899ea38668010b18b1b50124497895d9c00752904abf01490e27b74e1661aeae39d83fbbd77b841329b1e0fd381c3ea440 From c026821a7a9a0572ad111258d5cc879d8e7d6a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 12 Oct 2020 18:52:44 +0200 Subject: [PATCH 012/102] Copy using the right destination stride Related: https://bugzilla.redhat.com/show_bug.cgi?id=1882718 --- ...s-using-the-right-destination-stride.patch | 71 +++++++++++++++++++ gnome-remote-desktop.spec | 8 ++- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 0001-vnc-Copy-pixels-using-the-right-destination-stride.patch diff --git a/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch b/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch new file mode 100644 index 0000000..fc5c830 --- /dev/null +++ b/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch @@ -0,0 +1,71 @@ +From 81172effba7c70d3b2932c67be79a2924eae9d73 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] vnc: Copy pixels using the right destination stride + +We're copying the pixels in a separate thread managed by PipeWire, and +in this thread, accessing the VNC framebuffer dimension and stride is +racy. Instead of fetching the dimension directly, pass the expected +width and get the stride it will eventually have. + +Already before this patch, when the copied pixel end up on the main +thread and the dimension still doesn't match up, the frame will be +dropped. +--- + src/grd-session-vnc.c | 5 +++-- + src/grd-session-vnc.h | 3 ++- + src/grd-vnc-pipewire-stream.c | 5 +++-- + 3 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index 69fb33d..f4835aa 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -535,9 +535,10 @@ grd_session_vnc_get_fd (GrdSessionVnc *session_vnc) + } + + int +-grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc) ++grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, ++ int width) + { +- return session_vnc->rfb_screen->paddedWidthInBytes; ++ return width * BGRX_BYTES_PER_PIXEL; + } + + rfbClientPtr +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +index 0d01ad3..ccd046c 100644 +--- a/src/grd-session-vnc.h ++++ b/src/grd-session-vnc.h +@@ -60,7 +60,8 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, + + int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + +-int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); ++int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, ++ int width); + + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); + +diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c +index 96dd7c9..82ceb9b 100644 +--- a/src/grd-vnc-pipewire-stream.c ++++ b/src/grd-vnc-pipewire-stream.c +@@ -326,10 +326,11 @@ process_buffer (GrdVncPipeWireStream *stream, + int height; + int y; + +- src_stride = buffer->datas[0].chunk->stride; +- dst_stride = grd_session_vnc_get_framebuffer_stride (stream->session); + height = stream->spa_format.size.height; + width = stream->spa_format.size.width; ++ src_stride = buffer->datas[0].chunk->stride; ++ dst_stride = grd_session_vnc_get_stride_for_width (stream->session, ++ width); + + frame->data = g_malloc (height * dst_stride); + for (y = 0; y < height; y++) +-- +2.28.0 + diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ecad0c8..6f2760b 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.9 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -15,6 +15,9 @@ Patch0: 0001-vnc-Drop-frames-if-client-is-gone.patch # Adds encryption support (requires patched LibVNCServer) Patch1: gnutls-anontls.patch +# Copy using the right destination stride +Patch2: 0001-vnc-Copy-pixels-using-the-right-destination-stride.patch + BuildRequires: git BuildRequires: gcc BuildRequires: meson >= 0.36.0 @@ -74,6 +77,9 @@ GNOME desktop environment. %changelog +* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-2 +- Copy using the right destination stride + * Mon Sep 14 2020 Jonas Ådahl - 0.1.9-1 - Update to 0.1.9 - Backport race condition crash fix From 0fcc3d4d825fcb3f0eb960084b0c9f7c3011b297 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 08:41:08 +0000 Subject: [PATCH 013/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6f2760b..5e0d7f7 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 0.1.9 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -77,6 +77,9 @@ GNOME desktop environment. %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 0.1.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Sep 14 2020 Jonas Ådahl - 0.1.9-2 - Copy using the right destination stride From 611daca9e58936e29a379a221ab73a4ee595c072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 4 Mar 2021 23:03:04 +0100 Subject: [PATCH 014/102] Bump to 40.beta --- .gitignore | 1 + gnome-remote-desktop.spec | 22 ++-- gnutls-anontls.patch | 239 +++++++++++++++++++++++--------------- sources | 2 +- 4 files changed, 159 insertions(+), 105 deletions(-) diff --git a/.gitignore b/.gitignore index a59cc2b..78ce461 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /gnome-remote-desktop-0.1.*.tar.xz +/gnome-remote-desktop-40.beta.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 5e0d7f7..a2d40dc 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,22 +1,16 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 0.1.9 -Release: 3%{?dist} +Version: 40.0~beta +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://download.gnome.org/sources/gnome-remote-desktop/0.1/gnome-remote-desktop-0.1.9.tar.xz - -# Avoid race condition on disconnect -Patch0: 0001-vnc-Drop-frames-if-client-is-gone.patch +Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.beta.tar.xz # Adds encryption support (requires patched LibVNCServer) -Patch1: gnutls-anontls.patch - -# Copy using the right destination stride -Patch2: 0001-vnc-Copy-pixels-using-the-right-destination-stride.patch +Patch0: gnutls-anontls.patch BuildRequires: git BuildRequires: gcc @@ -28,6 +22,9 @@ BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0 BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(freerdp2) +BuildRequires: pkgconfig(winpr2) +BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(gnutls) @@ -43,7 +40,7 @@ GNOME desktop environment. %prep -%autosetup -S git +%autosetup -S git -n %{name}-40.beta %build @@ -77,6 +74,9 @@ GNOME desktop environment. %changelog +* Thu Mar 04 2021 Jonas Ådahl - 40.0~beta-1 +- Bump to 40.beta + * Tue Jan 26 2021 Fedora Release Engineering - 0.1.9-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 6c6db61..bd05eac 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,7 +1,7 @@ -From 546151b4e15fd45901f38172435cd9aa63893727 Mon Sep 17 00:00:00 2001 +From 8676ef6c32557234d08acb13d7524df5fa1f4bb2 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/6] vnc: Add anonymous TLS encryption support +Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support Add support for encrypting the VNC connection using anonymous TLS. In effect this means that the channel is encrypted using TLS but that no @@ -11,31 +11,31 @@ VNC connection. --- meson.build | 1 + src/grd-enums.h | 6 + - src/grd-session-vnc.c | 98 +++- - src/grd-session-vnc.h | 15 + + src/grd-session-vnc.c | 120 ++++- + src/grd-session-vnc.h | 17 + src/grd-settings.c | 28 ++ src/grd-settings.h | 2 + src/grd-vnc-server.c | 45 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ - src/meson.build | 5 +- + src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 666 insertions(+), 16 deletions(-) + 11 files changed, 678 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index af423a4..813c97f 100644 +index 5e9ad04..9bbd5fc 100644 --- a/meson.build +++ b/meson.build -@@ -20,6 +20,7 @@ libvncclient_dep = dependency('libvncclient') - libsecret_dep = dependency('libsecret-1') - libnotify_dep = dependency('libnotify') - winpr_dep = dependency('winpr2', version: freerdp_req) -+gnutls_dep = dependency('gnutls') +@@ -40,6 +40,7 @@ endif + if have_vnc + libvncserver_dep = dependency('libvncserver') + libvncclient_dep = dependency('libvncclient') ++ gnutls_dep = dependency('gnutls') + endif cdata = configuration_data() - cdata.set_quoted('GETTEXT_PACKAGE', 'gnome-remote-desktop') diff --git a/src/grd-enums.h b/src/grd-enums.h index ffab821..4333863 100644 --- a/src/grd-enums.h @@ -52,10 +52,10 @@ index ffab821..4333863 100644 + #endif /* GRD_ENUMS_H */ diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index a06d34d..d014315 100644 +index 0e520dc..0c189fd 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -44,7 +44,9 @@ struct _GrdSessionVnc +@@ -45,7 +45,9 @@ struct _GrdSessionVnc { GrdSession parent; @@ -65,7 +65,7 @@ index a06d34d..d014315 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -518,12 +520,30 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -540,6 +542,12 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -76,9 +76,10 @@ index a06d34d..d014315 100644 +} + int - grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc) - { - return session_vnc->rfb_screen->paddedWidthInBytes; + 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, + return width * BGRX_BYTES_PER_PIXEL; } +rfbClientPtr @@ -96,7 +97,7 @@ index a06d34d..d014315 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -564,33 +584,74 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -590,44 +610,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -131,6 +132,17 @@ index a06d34d..d014315 100644 + session_vnc->pending_framebuffer_width, + session_vnc->pending_framebuffer_height); + session_vnc->pending_framebuffer_resize = FALSE; ++ ++ /** ++ * This is a workaround. libvncserver is unable to handle clipboard ++ * changes early and either disconnects the client or crashes g-r-d ++ * if it receives rfbSendServerCutText too early altough the ++ * authentification process is already done. ++ * Doing this after resizing the framebuffer, seems to work fine, ++ * so enable the clipboard here and not when the remote desktop ++ * session proxy is acquired. ++ */ ++ grd_clipboard_vnc_maybe_enable_clipboard (session_vnc->clipboard_vnc); + } + } + @@ -172,6 +184,17 @@ index a06d34d..d014315 100644 - session_vnc->pending_framebuffer_width, - session_vnc->pending_framebuffer_height); - session_vnc->pending_framebuffer_resize = FALSE; +- +- /** +- * This is a workaround. libvncserver is unable to handle clipboard +- * changes early and either disconnects the client or crashes g-r-d +- * if it receives rfbSendServerCutText too early altough the +- * authentification process is already done. +- * Doing this after resizing the framebuffer, seems to work fine, +- * so enable the clipboard here and not when the remote desktop +- * session proxy is acquired. +- */ +- grd_clipboard_vnc_maybe_enable_clipboard (session_vnc->clipboard_vnc); - } + grd_session_stop (session); } @@ -185,7 +208,7 @@ index a06d34d..d014315 100644 } return G_SOURCE_CONTINUE; -@@ -603,7 +664,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -640,7 +701,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, @@ -197,7 +220,7 @@ index a06d34d..d014315 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -629,8 +693,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -666,8 +730,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -208,7 +231,7 @@ index a06d34d..d014315 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -645,6 +711,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -682,6 +748,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -218,7 +241,7 @@ index a06d34d..d014315 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 07678c8..bba3d56 100644 +index a532567..4e7b33d 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, @@ -231,14 +254,14 @@ index 07678c8..bba3d56 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -55,8 +58,20 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, - int x, - int y); +@@ -62,6 +65,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, + int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, + int width); +int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + - int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); - ++int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); ++ gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); +rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc); @@ -253,7 +276,7 @@ index 07678c8..bba3d56 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index 3af87be..f37f2da 100644 +index d2f31d2..12d8693 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -60,6 +60,7 @@ struct _GrdSettings @@ -264,7 +287,7 @@ index 3af87be..f37f2da 100644 } vnc; }; -@@ -232,6 +233,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) +@@ -242,6 +243,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) return settings->vnc.auth_method; } @@ -277,7 +300,7 @@ index 3af87be..f37f2da 100644 static void update_rdp_tls_cert (GrdSettings *settings) { -@@ -267,6 +274,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -277,6 +284,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -291,7 +314,7 @@ index 3af87be..f37f2da 100644 static void on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -304,6 +318,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -314,6 +328,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -303,7 +326,7 @@ index 3af87be..f37f2da 100644 } static void -@@ -335,6 +354,8 @@ grd_settings_init (GrdSettings *settings) +@@ -345,6 +364,8 @@ grd_settings_init (GrdSettings *settings) settings->rdp.port = GRD_RDP_SERVER_PORT; settings->vnc.port = GRD_VNC_SERVER_PORT; @@ -312,7 +335,7 @@ index 3af87be..f37f2da 100644 } static void -@@ -379,4 +400,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -389,4 +410,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -901,28 +924,23 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 1b6425d..17579b1 100644 +index 843746d..133cc60 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -33,6 +33,8 @@ daemon_sources = files([ - 'grd-vnc-pipewire-stream.h', - 'grd-vnc-server.c', - 'grd-vnc-server.h', -+ 'grd-vnc-tls.c', -+ 'grd-vnc-tls.h', - ]) +@@ -72,10 +72,13 @@ if have_vnc + 'grd-vnc-pipewire-stream.h', + 'grd-vnc-server.c', + 'grd-vnc-server.h', ++ 'grd-vnc-tls.c', ++ 'grd-vnc-tls.h', + ]) + + deps += [ + libvncserver_dep, ++ gnutls_dep, + ] + endif - gen_daemon_sources = [] -@@ -66,7 +68,8 @@ executable('gnome-remote-desktop-daemon', - libvncserver_dep, - libsecret_dep, - libnotify_dep, -- winpr_dep], -+ winpr_dep, -+ gnutls_dep], - include_directories: [configinc], - install: true, - install_dir: libexecdir) diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in index 4b6e593..0086d99 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in @@ -944,13 +962,13 @@ index 4b6e593..0086d99 100644 -- -2.26.2 +2.29.2 -From 2e46518f421fd8704770bb6742accfacba3570aa Mon Sep 17 00:00:00 2001 +From 552e9c9add722e953a8da22bd54ba0fef7a9d6af 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/6] session-vnc: Add paused/resumed signals +Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals Paused is when the socket sourec is detached, and resumed when attached. Meant to be used by the TLS channel security to a attach/detach @@ -960,10 +978,10 @@ 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 d014315..7edd407 100644 +index 0c189fd..596896d 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -40,14 +40,27 @@ +@@ -41,14 +41,27 @@ #define BGRX_SAMPLES_PER_PIXEL 3 #define BGRX_BYTES_PER_PIXEL 4 @@ -991,7 +1009,7 @@ index d014315..7edd407 100644 rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -73,7 +86,7 @@ struct _GrdSessionVnc +@@ -76,7 +89,7 @@ struct _GrdSessionVnc G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION); static void @@ -1000,7 +1018,7 @@ index d014315..7edd407 100644 static gboolean close_session_idle (gpointer user_data); -@@ -224,7 +237,8 @@ handle_client_gone (rfbClientPtr rfb_client) +@@ -235,7 +248,8 @@ handle_client_gone (rfbClientPtr rfb_client) g_debug ("VNC client gone"); @@ -1010,7 +1028,7 @@ index d014315..7edd407 100644 maybe_queue_close_session_idle (session_vnc); session_vnc->rfb_client = NULL; } -@@ -293,7 +307,7 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -304,7 +318,7 @@ handle_new_client (rfbClientPtr rfb_client) session_vnc->prompt_cancellable, prompt_response_callback, session_vnc); @@ -1019,7 +1037,7 @@ index d014315..7edd407 100644 return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -511,7 +525,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -533,7 +547,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1028,7 +1046,7 @@ index d014315..7edd407 100644 return TRUE; } else -@@ -681,6 +695,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -718,6 +732,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_destroy); } @@ -1065,7 +1083,7 @@ index d014315..7edd407 100644 GrdSessionVnc * grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection) -@@ -698,6 +742,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -735,6 +779,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); @@ -1073,7 +1091,7 @@ index d014315..7edd407 100644 init_vnc_session (session_vnc); -@@ -727,7 +772,7 @@ grd_session_vnc_stop (GrdSession *session) +@@ -764,7 +809,7 @@ grd_session_vnc_stop (GrdSession *session) g_clear_object (&session_vnc->pipewire_stream); @@ -1081,8 +1099,8 @@ index d014315..7edd407 100644 + grd_session_vnc_pause (session_vnc); g_clear_object (&session_vnc->connection); - g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free); -@@ -783,8 +828,8 @@ grd_session_vnc_stream_ready (GrdSession *session, + g_clear_object (&session_vnc->clipboard_vnc); +@@ -817,8 +862,8 @@ grd_session_vnc_stream_ready (GrdSession *session, G_CALLBACK (on_pipewire_stream_closed), session_vnc); @@ -1093,7 +1111,7 @@ index d014315..7edd407 100644 } static void -@@ -803,4 +848,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) +@@ -837,4 +882,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) session_class->stop = grd_session_vnc_stop; session_class->stream_ready = grd_session_vnc_stream_ready; @@ -1112,13 +1130,13 @@ index d014315..7edd407 100644 + G_TYPE_NONE, 0); } -- -2.26.2 +2.29.2 -From b59c36ccf73939d32ccf5ab4eb47460a9fe415f3 Mon Sep 17 00:00:00 2001 +From 3b33524046d299111cc150cc8d6d100f1e516485 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/6] session-vnc: Add grd_session_vnc_dispatch() helper +Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper To be used by the TLS channel security to dispatch when there is data available that is not visible to the socket source. @@ -1128,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 7edd407..29c94a1 100644 +index 596896d..06b2cf7 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -635,6 +635,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -672,6 +672,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1153,7 +1171,7 @@ index 7edd407..29c94a1 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -651,16 +666,7 @@ handle_socket_data (GSocket *socket, +@@ -688,16 +703,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1172,10 +1190,10 @@ index 7edd407..29c94a1 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index bba3d56..58f635c 100644 +index 4e7b33d..cf275af 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1185,13 +1203,13 @@ index bba3d56..58f635c 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.26.2 +2.29.2 -From 966b2ddbd1c03c9e20dc66e5ea9a2dfb39ba4bfa Mon Sep 17 00:00:00 2001 +From 3945af78cea858033d954bb1b071269687bdea85 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/6] vnc/tls: Add some logging +Subject: [PATCH 4/7] vnc/tls: Add some logging Uses the log utility from libvncserver as it is related to the RFB protocol rather than the session itself. @@ -1262,13 +1280,13 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.26.2 +2.29.2 -From e01d27dc9911f4d7ecfd232c7e389f4dabfd87de Mon Sep 17 00:00:00 2001 +From f5330797678f4c4db4a3fa19cebd30dd4d6bbb8c 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/6] vnc/tls: Dispatch also when data is pending outside of +Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of the socket gnutls may have data available in its buffers, and we have our own peek @@ -1282,10 +1300,10 @@ 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 58f635c..0d01ad3 100644 +index cf275af..efc0038 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1432,13 +1450,13 @@ index ac6c35f..312b6b9 100644 } -- -2.26.2 +2.29.2 -From 682f3b4a8e985f00a00e761a086a15cb5e2b9b04 Mon Sep 17 00:00:00 2001 +From fae9653965ddcc3d5684a056d9bdf46ef439d649 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/6] session-vnc: Set our own password handling function up +Subject: [PATCH 6/7] session-vnc: Set our own password handling function up front libvncserver decides whether to register a auth security handler @@ -1454,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 29c94a1..ebe1540 100644 +index 06b2cf7..7a4c6b3 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -91,11 +91,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); +@@ -94,11 +94,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); static gboolean close_session_idle (gpointer user_data); @@ -1469,7 +1487,7 @@ index 29c94a1..ebe1540 100644 static void swap_uint8 (uint8_t *a, uint8_t *b) -@@ -310,7 +305,6 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -321,7 +316,6 @@ handle_new_client (rfbClientPtr rfb_client) grd_session_vnc_pause (session_vnc); return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: @@ -1477,7 +1495,7 @@ index 29c94a1..ebe1540 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -594,6 +588,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -620,6 +614,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); @@ -1487,5 +1505,40 @@ index 29c94a1..ebe1540 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.26.2 +2.29.2 + + +From 1ae1286b2cc868045f93c02b7a990638ca94b26d 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 + +We're copying the pixels in a separate thread managed by PipeWire, and +in this thread, accessing the VNC framebuffer dimension and stride is +racy. Instead of fetching the dimension directly, pass the expected +width and get the stride it will eventually have. + +Already before this patch, when the copied pixel end up on the main +thread and the dimension still doesn't match up, the frame will be +dropped. +--- + src/grd-session-vnc.h | 3 ++- + 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 +--- 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, + + int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + +-int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); ++int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, ++ int width); + + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); + +-- +2.29.2 diff --git a/sources b/sources index 65eca64..54b45d8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-0.1.9.tar.xz) = 6ac2962c824634cd5322785b6d251e899ea38668010b18b1b50124497895d9c00752904abf01490e27b74e1661aeae39d83fbbd77b841329b1e0fd381c3ea440 +SHA512 (gnome-remote-desktop-40.beta.tar.xz) = 42ae56ec87229c77cd1b9e4e741e86131b4016fb99052c842531f56a612b8d828c8d8050d0a296c0a57ea06fc98425c15aeee04ff9e0eed2c975534140cc9a3e From 2d3e5544678d7d4efebd1039c95bfde319eb2cb4 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 15 Mar 2021 21:46:07 +0100 Subject: [PATCH 015/102] Fix rpmbuild changelog chronological order warning Looks like merges between F32 and rawhide messed up the changelog, leading to rpmbuild warning: error: %changelog not in descending chronological order --- gnome-remote-desktop.spec | 7 ------- 1 file changed, 7 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a2d40dc..a407bd2 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -98,13 +98,6 @@ GNOME desktop environment. * Wed Mar 11 2020 Jonas Ådahl - 0.1.8-1 - Update to 0.1.8 -* Sat Aug 01 2020 Fedora Release Engineering - 0.1.7-5 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 0.1.7-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - * Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 42b763ab787ad67f5f6537227f2619f56f71c1f0 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 15 Mar 2021 21:48:38 +0100 Subject: [PATCH 016/102] Update to 40.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 78ce461..3f81447 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /gnome-remote-desktop-0.1.*.tar.xz /gnome-remote-desktop-40.beta.tar.xz +/gnome-remote-desktop-40.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a407bd2..20052ec 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,13 +1,13 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 40.0~beta +Version: 40.0~rc Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.beta.tar.xz +Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.rc.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -40,7 +40,7 @@ GNOME desktop environment. %prep -%autosetup -S git -n %{name}-40.beta +%autosetup -S git -n %{name}-40.rc %build @@ -74,6 +74,9 @@ GNOME desktop environment. %changelog +* Mon Mar 15 2021 Kalev Lember - 40.0~rc-1 +- Update to 40.rc + * Thu Mar 04 2021 Jonas Ådahl - 40.0~beta-1 - Bump to 40.beta diff --git a/sources b/sources index 54b45d8..01ab290 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-40.beta.tar.xz) = 42ae56ec87229c77cd1b9e4e741e86131b4016fb99052c842531f56a612b8d828c8d8050d0a296c0a57ea06fc98425c15aeee04ff9e0eed2c975534140cc9a3e +SHA512 (gnome-remote-desktop-40.rc.tar.xz) = e8129c3bd3604250ded3e4d2da619fbe02f70da0312a38cbe12a4504c11dd646ee2866045317bb06e81382b5fcd586803ffeb566f292828463c946b1bfdfe836 From 16450d7e41e4987e0886c8182845685d64c039ae Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Thu, 18 Mar 2021 10:28:53 -0500 Subject: [PATCH 017/102] Add Obsoletes: vino --- gnome-remote-desktop.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 20052ec..9c0d412 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,7 +2,7 @@ Name: gnome-remote-desktop Version: 40.0~rc -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -34,6 +34,8 @@ BuildRequires: systemd Requires: pipewire >= 0.3.0 +Obsoletes: vino < 3.22.0-21 + %description GNOME Remote Desktop is a remote desktop and screen sharing service for the GNOME desktop environment. @@ -74,6 +76,9 @@ GNOME desktop environment. %changelog +* Thu Mar 18 2021 Michael Catanzaro - 40.0~rc-2 +- Add Obsoletes: vino + * Mon Mar 15 2021 Kalev Lember - 40.0~rc-1 - Update to 40.rc From 702c1cc78add1368d5051852214edfd53ff5b088 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 22 Mar 2021 19:19:21 +0100 Subject: [PATCH 018/102] Update to 40.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 11 +++++++---- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 3f81447..ac1b717 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /gnome-remote-desktop-0.1.*.tar.xz /gnome-remote-desktop-40.beta.tar.xz /gnome-remote-desktop-40.rc.tar.xz +/gnome-remote-desktop-40.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 9c0d412..6676f43 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,13 +1,13 @@ %global systemd_unit gnome-remote-desktop.service Name: gnome-remote-desktop -Version: 40.0~rc -Release: 2%{?dist} +Version: 40.0 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.rc.tar.xz +Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.0.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -42,7 +42,7 @@ GNOME desktop environment. %prep -%autosetup -S git -n %{name}-40.rc +%autosetup -S git -n %{name}-40.0 %build @@ -76,6 +76,9 @@ GNOME desktop environment. %changelog +* Mon Mar 22 2021 Kalev Lember - 40.0-1 +- Update to 40.0 + * Thu Mar 18 2021 Michael Catanzaro - 40.0~rc-2 - Add Obsoletes: vino diff --git a/sources b/sources index 01ab290..4db26fd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-40.rc.tar.xz) = e8129c3bd3604250ded3e4d2da619fbe02f70da0312a38cbe12a4504c11dd646ee2866045317bb06e81382b5fcd586803ffeb566f292828463c946b1bfdfe836 +SHA512 (gnome-remote-desktop-40.0.tar.xz) = 557d5425a92cc50dfac60d9e5e39fba88bd3a653ece6490aae663913bc1df490b7d864ae0d6e8cc2c305e7c0fa5f77d7b1e63488bc51f38a0f897232b69edc89 From ce0f9eb91857038b5bd207ca4b81e2001be78214 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 22 Mar 2021 19:20:28 +0100 Subject: [PATCH 019/102] Use macro for converting between GNOME and Fedora pre-release versioning Use the same macro that we use in other GNOME packages. Having this in place now should make things easier next cycle when we start building alpha/beta/rc releases again. --- gnome-remote-desktop.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6676f43..ec23ff7 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,5 +1,7 @@ %global systemd_unit gnome-remote-desktop.service +%global tarball_version %%(echo %{version} | tr '~' '.') + Name: gnome-remote-desktop Version: 40.0 Release: 1%{?dist} @@ -7,7 +9,7 @@ Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.0.tar.xz +Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -42,7 +44,7 @@ GNOME desktop environment. %prep -%autosetup -S git -n %{name}-40.0 +%autosetup -S git -n %{name}-%{tarball_version} %build From 3a0b7c9f59efb43f7cc20477d5a1bfd7fc93848f Mon Sep 17 00:00:00 2001 From: Simone Caronni Date: Thu, 15 Apr 2021 14:53:33 +0200 Subject: [PATCH 020/102] Rebuild for updated FreeRDP --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ec23ff7..92fdcd0 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 40.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -78,6 +78,9 @@ GNOME desktop environment. %changelog +* Thu Apr 15 2021 Simone Caronni - 40.0-2 +- Rebuild for updated FreeRDP. + * Mon Mar 22 2021 Kalev Lember - 40.0-1 - Update to 40.0 From 2795853098c006bddc505a95e34debefeb9f08c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 3 May 2021 09:22:33 +0200 Subject: [PATCH 021/102] Bump to 40.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ac1b717..6ce8127 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /gnome-remote-desktop-40.beta.tar.xz /gnome-remote-desktop-40.rc.tar.xz /gnome-remote-desktop-40.0.tar.xz +/gnome-remote-desktop-40.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 92fdcd0..1e15748 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: 40.0 -Release: 2%{?dist} +Version: 40.1 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -78,6 +78,9 @@ GNOME desktop environment. %changelog +* Mon May 03 2021 Jonas Ådahl - 40.1-1 +- Bump to 40.1 + * Thu Apr 15 2021 Simone Caronni - 40.0-2 - Rebuild for updated FreeRDP. diff --git a/sources b/sources index 4db26fd..3f6de60 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (gnome-remote-desktop-40.0.tar.xz) = 557d5425a92cc50dfac60d9e5e39fba88bd3a653ece6490aae663913bc1df490b7d864ae0d6e8cc2c305e7c0fa5f77d7b1e63488bc51f38a0f897232b69edc89 +SHA512 (gnome-remote-desktop-40.1.tar.xz) = 39116afa16256820a69e020b71de5458fc5da8154bc8255d2157ff56fc679c39f4608f790d74eb4a0cb10cc61bd27d4172cfc547582100cab5b897644a700ee3 From b5b256fde2afb7ebee50bc42046fbc8c9851ffe0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 22 Jul 2021 02:16:04 +0000 Subject: [PATCH 022/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 1e15748..ffef52e 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 40.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -78,6 +78,9 @@ GNOME desktop environment. %changelog +* Thu Jul 22 2021 Fedora Release Engineering - 40.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Mon May 03 2021 Jonas Ådahl - 40.1-1 - Bump to 40.1 From 5ef0e2ab33d10daf9cfe6bcd58b0aca5cecc9fae Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 4 Aug 2021 18:05:04 +0200 Subject: [PATCH 023/102] Avoid systemd_requires as per updated packaging guidelines There is no need to have them as systemd correctly handles reloading depending on the transaction ordering (even if systemd is installed _after_ the package that installs the unit file). --- gnome-remote-desktop.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ffef52e..e9334b7 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -30,8 +30,6 @@ BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(gnutls) - -%{?systemd_requires} BuildRequires: systemd Requires: pipewire >= 0.3.0 @@ -78,6 +76,9 @@ GNOME desktop environment. %changelog +* Wed Aug 04 2021 Kalev Lember - 40.1-3 +- Avoid systemd_requires as per updated packaging guidelines + * Thu Jul 22 2021 Fedora Release Engineering - 40.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From d1da1c91f883978870e7b984607f95569ca3f38d Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 4 Aug 2021 18:02:33 +0200 Subject: [PATCH 024/102] Remove old, unused tarball from sources file --- sources | 1 - 1 file changed, 1 deletion(-) diff --git a/sources b/sources index 3f6de60..ce0da31 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (gnome-remote-desktop-40.0.tar.xz) = 557d5425a92cc50dfac60d9e5e39fba88bd3a653ece6490aae663913bc1df490b7d864ae0d6e8cc2c305e7c0fa5f77d7b1e63488bc51f38a0f897232b69edc89 SHA512 (gnome-remote-desktop-40.1.tar.xz) = 39116afa16256820a69e020b71de5458fc5da8154bc8255d2157ff56fc679c39f4608f790d74eb4a0cb10cc61bd27d4172cfc547582100cab5b897644a700ee3 From a65cbb043ed7e9b46684ebfe64c816e358acf192 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 4 Aug 2021 18:07:21 +0200 Subject: [PATCH 025/102] Bump release --- gnome-remote-desktop.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index e9334b7..10bf168 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 40.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ From 51bbeeb8ea5366dcac5883c9bd8e8ac0dc450ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 7 Sep 2021 17:11:17 +0200 Subject: [PATCH 026/102] Bump to 41.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 8 ++++++-- gnutls-anontls.patch | 40 +++++++++++++++++++-------------------- sources | 2 +- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 6ce8127..03e5363 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /gnome-remote-desktop-40.rc.tar.xz /gnome-remote-desktop-40.0.tar.xz /gnome-remote-desktop-40.1.tar.xz +/gnome-remote-desktop-41.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 10bf168..aab9e46 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: 40.1 -Release: 3%{?dist} +Version: 41~rc +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -26,6 +26,7 @@ BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(freerdp2) BuildRequires: pkgconfig(winpr2) BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(ffnvcodec) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) @@ -76,6 +77,9 @@ GNOME desktop environment. %changelog +* Tue Sep 07 2021 Jonas Ådahl - 41~rc-1 +- Bump to 41.rc + * Wed Aug 04 2021 Kalev Lember - 40.1-3 - Avoid systemd_requires as per updated packaging guidelines diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index bd05eac..1c5e384 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 8676ef6c32557234d08acb13d7524df5fa1f4bb2 Mon Sep 17 00:00:00 2001 +From 06f99dc1aaef90275547d8c93ddf18e9d0c88257 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,17 +25,17 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 5e9ad04..9bbd5fc 100644 +index c8c957c..536e94a 100644 --- a/meson.build +++ b/meson.build -@@ -40,6 +40,7 @@ endif +@@ -54,6 +54,7 @@ endif if have_vnc libvncserver_dep = dependency('libvncserver') libvncclient_dep = dependency('libvncclient') + gnutls_dep = dependency('gnutls') endif - cdata = configuration_data() + prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h index ffab821..4333863 100644 --- a/src/grd-enums.h @@ -924,10 +924,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 843746d..133cc60 100644 +index 2fe3923..bf8059f 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -72,10 +72,13 @@ if have_vnc +@@ -97,10 +97,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -942,7 +942,7 @@ index 843746d..133cc60 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 4b6e593..0086d99 100644 +index 7633e00..c2c543e 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 @@ @@ -962,10 +962,10 @@ index 4b6e593..0086d99 100644 -- -2.29.2 +2.31.1 -From 552e9c9add722e953a8da22bd54ba0fef7a9d6af Mon Sep 17 00:00:00 2001 +From 9f289a90a167e29cf43e6d0d91c4f7605a131f39 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 @@ -1130,10 +1130,10 @@ index 0c189fd..596896d 100644 + G_TYPE_NONE, 0); } -- -2.29.2 +2.31.1 -From 3b33524046d299111cc150cc8d6d100f1e516485 Mon Sep 17 00:00:00 2001 +From 1d34839781948d8de331641863a589ae4eb46c30 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 @@ -1203,10 +1203,10 @@ index 4e7b33d..cf275af 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.29.2 +2.31.1 -From 3945af78cea858033d954bb1b071269687bdea85 Mon Sep 17 00:00:00 2001 +From 9cdf72aa277782906a4b979773a7025a61994785 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.29.2 +2.31.1 -From f5330797678f4c4db4a3fa19cebd30dd4d6bbb8c Mon Sep 17 00:00:00 2001 +From 2c24c7ffa583c94d3cfd7eb105eb264a6430b128 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 @@ -1450,10 +1450,10 @@ index ac6c35f..312b6b9 100644 } -- -2.29.2 +2.31.1 -From fae9653965ddcc3d5684a056d9bdf46ef439d649 Mon Sep 17 00:00:00 2001 +From 28dcea05f8f42c3fe5d43d0dff0cdb1c9fc7f213 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 @@ -1505,10 +1505,10 @@ index 06b2cf7..7a4c6b3 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.29.2 +2.31.1 -From 1ae1286b2cc868045f93c02b7a990638ca94b26d Mon Sep 17 00:00:00 2001 +From 2327474d5fa0f6527b2f5f39d54f96f8ff9627db 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 @@ -1540,5 +1540,5 @@ index efc0038..f3a6314 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.29.2 +2.31.1 diff --git a/sources b/sources index ce0da31..c0e9162 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-40.1.tar.xz) = 39116afa16256820a69e020b71de5458fc5da8154bc8255d2157ff56fc679c39f4608f790d74eb4a0cb10cc61bd27d4172cfc547582100cab5b897644a700ee3 +SHA512 (gnome-remote-desktop-41.rc.tar.xz) = 30776b84d4753f280f5c67c29193e3aaec2b72630a95a2271927aef36d7f0368dc50b1173a176771bf960e811c55ec4e0da30217f8ee0d1325293dd0c2c7ec8f From 4a2168524e116c41d0d46e9ebc02ac24b54e6680 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 8 Sep 2021 21:30:00 +0200 Subject: [PATCH 027/102] Fix the build --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index aab9e46..0be7d6d 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -54,6 +54,8 @@ GNOME desktop environment. %install %meson_install +%find_lang gnome-remote-desktop + %post %systemd_user_post %{systemd_unit} @@ -67,13 +69,14 @@ GNOME desktop environment. %systemd_user_postun_with_restart %{systemd_unit} -%files +%files -f gnome-remote-desktop.lang %license COPYING %doc README %{_libexecdir}/gnome-remote-desktop-daemon %{_userunitdir}/gnome-remote-desktop.service %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml +%{_datadir}/gnome-remote-desktop/ %changelog From cc639fc0c1ad9ae721da9d018dbf705af0e2648e Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 20 Sep 2021 11:38:11 +0200 Subject: [PATCH 028/102] Update to 41.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 03e5363..1ba978d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /gnome-remote-desktop-40.0.tar.xz /gnome-remote-desktop-40.1.tar.xz /gnome-remote-desktop-41.rc.tar.xz +/gnome-remote-desktop-41.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 0be7d6d..28227e8 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 41~rc +Version: 41.0 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -80,6 +80,9 @@ GNOME desktop environment. %changelog +* Mon Sep 20 2021 Kalev Lember - 41.0-1 +- Update to 41.0 + * Tue Sep 07 2021 Jonas Ådahl - 41~rc-1 - Bump to 41.rc diff --git a/sources b/sources index c0e9162..faa3fff 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-41.rc.tar.xz) = 30776b84d4753f280f5c67c29193e3aaec2b72630a95a2271927aef36d7f0368dc50b1173a176771bf960e811c55ec4e0da30217f8ee0d1325293dd0c2c7ec8f +SHA512 (gnome-remote-desktop-41.0.tar.xz) = 76b7054d58817b08be6120468c7cd625f504c304c7a747dda660ee969760b004d7408b2a1a429c8e944c0ba2940238989fd2eea35b8fdece82b2ad147f4568fa From 746d977d75d48fd91f1b703ccfe4ceacc001d0a0 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Mon, 1 Nov 2021 11:05:32 +0100 Subject: [PATCH 029/102] Update to 41.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 1ba978d..88546fc 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /gnome-remote-desktop-40.1.tar.xz /gnome-remote-desktop-41.rc.tar.xz /gnome-remote-desktop-41.0.tar.xz +/gnome-remote-desktop-41.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 28227e8..78d987b 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 41.0 +Version: 41.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -80,6 +80,9 @@ GNOME desktop environment. %changelog +* Mon Nov 01 2021 Kalev Lember - 41.1-1 +- Update to 41.1 + * Mon Sep 20 2021 Kalev Lember - 41.0-1 - Update to 41.0 diff --git a/sources b/sources index faa3fff..0fbae9d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-41.0.tar.xz) = 76b7054d58817b08be6120468c7cd625f504c304c7a747dda660ee969760b004d7408b2a1a429c8e944c0ba2940238989fd2eea35b8fdece82b2ad147f4568fa +SHA512 (gnome-remote-desktop-41.1.tar.xz) = 19fa202bea7692ebccc995f7eab9d786a5b2d34864a7512e12ed7553326cf7429a407fdd4f4f5df6627bf7795dd1966b8d548ad7b80767c1a73461bb0f95b3df From 370c017a4e7499183023c28dab281186be365dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 8 Dec 2021 09:16:04 +0100 Subject: [PATCH 030/102] Update to 41.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 88546fc..c3a16e7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /gnome-remote-desktop-41.rc.tar.xz /gnome-remote-desktop-41.0.tar.xz /gnome-remote-desktop-41.1.tar.xz +/gnome-remote-desktop-41.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 78d987b..686fb7d 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 41.1 +Version: 41.2 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -80,6 +80,9 @@ GNOME desktop environment. %changelog +* Wed Dec 08 2021 Jonas Ådahl - 41.2-1 +- Update to 41.2 + * Mon Nov 01 2021 Kalev Lember - 41.1-1 - Update to 41.1 diff --git a/sources b/sources index 0fbae9d..27be743 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-41.1.tar.xz) = 19fa202bea7692ebccc995f7eab9d786a5b2d34864a7512e12ed7553326cf7429a407fdd4f4f5df6627bf7795dd1966b8d548ad7b80767c1a73461bb0f95b3df +SHA512 (gnome-remote-desktop-41.2.tar.xz) = 7636c0446c86748ce51c869734a2d33d8285c30616a28a0358f45d8399fd9f5dba7a1bdb830d3ca4753982ac3b9715604eb5934906645a1c11c58b4342c524eb From 3556d1e9c9631990be5658712f425153cd71c3f0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 06:39:33 +0000 Subject: [PATCH 031/102] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 686fb7d..820d98e 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 41.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -80,6 +80,9 @@ GNOME desktop environment. %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 41.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Dec 08 2021 Jonas Ådahl - 41.2-1 - Update to 41.2 From 58efc5586e253c9bb59122dc529c67ebe550d6d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 16 Feb 2022 11:28:36 +0100 Subject: [PATCH 032/102] Update to 42.beta --- .gitignore | 1 + gnome-remote-desktop.spec | 7 ++- gnutls-anontls.patch | 118 +++++++++++++++++++------------------- sources | 2 +- 4 files changed, 66 insertions(+), 62 deletions(-) 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 From 4352930081480ae27745d87e2d846d20731d6279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 16 Feb 2022 11:38:54 +0100 Subject: [PATCH 033/102] Add missing added dependencies --- gnome-remote-desktop.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 1ce15ae..a70ca89 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -31,9 +31,13 @@ BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(gnutls) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(epoxy) BuildRequires: systemd Requires: pipewire >= 0.3.0 +Requires: libdrm +Requires: libepoxy Obsoletes: vino < 3.22.0-21 From 11ebb379c99cc34c719f4bda7dbb76dbc9d2d4c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 16 Feb 2022 11:59:05 +0100 Subject: [PATCH 034/102] Add build requirements needed for tests --- gnome-remote-desktop.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a70ca89..37f7c82 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -33,6 +33,9 @@ BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(epoxy) +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(gudev-1.0) + BuildRequires: systemd Requires: pipewire >= 0.3.0 From 8f05c2d806aeb009c38528c9fca15cca6a296adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Mar 2022 09:55:28 +0100 Subject: [PATCH 035/102] Update to 42.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 5 +++- gnutls-anontls.patch | 56 +++++++++++++++++++-------------------- sources | 2 +- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 2fcea58..067d29c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /gnome-remote-desktop-41.1.tar.xz /gnome-remote-desktop-41.2.tar.xz /gnome-remote-desktop-42.beta.tar.xz +/gnome-remote-desktop-42.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 37f7c82..41aafc7 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42~beta +Version: 42~rc Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -87,6 +87,9 @@ GNOME desktop environment. %changelog +* Mon Mar 14 2022 Jonas Ådahl - 42~rc-1 +- Update to 42.rc + * Wed Feb 16 2022 Jonas Ådahl - 42~beta-1 - Update to 42.beta diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index daba810..98a9a49 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 0fb8045a40412a472db93131df899b94e626886f Mon Sep 17 00:00:00 2001 +From 6ca82648e9b6791fbfbbbc9b05f15ec07a992e1a 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 4ac9093..a7d3bb0 100644 +index 6bd2420..d6c5d9b 100644 --- a/meson.build +++ b/meson.build -@@ -57,6 +57,7 @@ endif +@@ -50,6 +50,7 @@ endif if have_vnc libvncserver_dep = dependency('libvncserver') libvncclient_dep = dependency('libvncclient') @@ -37,10 +37,10 @@ index 4ac9093..a7d3bb0 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index ffab821..4333863 100644 +index e3ecc40..fa8dfb7 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h -@@ -27,4 +27,10 @@ typedef enum +@@ -33,4 +33,10 @@ typedef enum GRD_VNC_AUTH_METHOD_PASSWORD } GrdVncAuthMethod; @@ -276,10 +276,10 @@ index fcc508d..092d9dc 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index 4560a37..744ff89 100644 +index c8f28fb..502d956 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c -@@ -60,6 +60,7 @@ struct _GrdSettings +@@ -69,6 +69,7 @@ struct _GrdSettings gboolean view_only; GrdVncAuthMethod auth_method; int port; @@ -287,7 +287,7 @@ index 4560a37..744ff89 100644 } vnc; }; -@@ -248,6 +249,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) +@@ -245,6 +246,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) return settings->vnc.auth_method; } @@ -298,9 +298,9 @@ index 4560a37..744ff89 100644 +} + static void - update_rdp_tls_cert (GrdSettings *settings) + update_screen_share_mode (GrdSettings *settings) { -@@ -285,6 +292,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -303,6 +310,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -314,7 +314,7 @@ index 4560a37..744ff89 100644 static void on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -322,6 +336,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -355,6 +369,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 4560a37..744ff89 100644 } static void -@@ -356,6 +375,8 @@ grd_settings_init (GrdSettings *settings) +@@ -392,6 +411,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 4560a37..744ff89 100644 } static void -@@ -400,4 +421,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -457,4 +478,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -348,10 +348,10 @@ index 4560a37..744ff89 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index e12e47e..b940fdb 100644 +index 449894a..900d81e 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -64,4 +64,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); +@@ -65,4 +65,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); @@ -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 aae1029..3e43391 100644 +index 0b4322d..e8833f1 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,11 +24,13 @@ @@ -376,7 +376,7 @@ index aae1029..3e43391 100644 enum -@@ -130,6 +132,43 @@ on_incoming (GSocketService *service, +@@ -129,6 +131,43 @@ on_incoming (GSocketService *service, return TRUE; } @@ -420,7 +420,7 @@ index aae1029..3e43391 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -220,12 +259,18 @@ static void +@@ -217,12 +256,18 @@ static void grd_vnc_server_constructed (GObject *object) { GrdVncServer *vnc_server = GRD_VNC_SERVER (object); @@ -924,10 +924,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 9723d4a..326bef6 100644 +index 1d671d7..ab675ff 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -105,10 +105,13 @@ if have_vnc +@@ -115,10 +115,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -942,10 +942,10 @@ index 9723d4a..326bef6 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 0779c8c..b8e3b0a 100644 +index 939b9a6..e57affb 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 @@ +@@ -90,5 +90,15 @@ * password - by requiring the remote client to provide a known password @@ -965,7 +965,7 @@ index 0779c8c..b8e3b0a 100644 2.34.1 -From 3f7df606d5eed6d5b8444fef801c2bbc2a710b52 Mon Sep 17 00:00:00 2001 +From 212fa98088cb4a754bac8cdb3a69d2a3e6b4dff9 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 @@ -1133,7 +1133,7 @@ index c2e29b4..4be4c49 100644 2.34.1 -From 30b795a086db2afaba5a6089567550aaabf66a78 Mon Sep 17 00:00:00 2001 +From db1ce3962bbe49491b87cb0a4a90de41614e118b 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 @@ -1206,7 +1206,7 @@ index 092d9dc..e9eced0 100644 2.34.1 -From 808f23c5e083f872b9b4343fc06efc76f8a8b9c1 Mon Sep 17 00:00:00 2001 +From d6115fc524886ba716ba22464743c1a72472ff75 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 @@ -1283,7 +1283,7 @@ index ec4758e..ac6c35f 100644 2.34.1 -From c571ae4d81b77684d19c844435915f6403b5130a Mon Sep 17 00:00:00 2001 +From c71c9d295a2921014d55820042fc8bdad02df19c 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 @@ -1453,7 +1453,7 @@ index ac6c35f..312b6b9 100644 2.34.1 -From 8a7cef31e9b22ef3e98fa5b54ac0756083b581e2 Mon Sep 17 00:00:00 2001 +From edc2380304d19e1bea58b079b943bad42cac5d69 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 @@ -1508,7 +1508,7 @@ index 9708de0..bc60285 100644 2.34.1 -From 99cf5c5df74b71e5c8ad99ab10cff2f09ee7e677 Mon Sep 17 00:00:00 2001 +From 539d2c562b8068f1f698468cb87b36b4968c1517 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 diff --git a/sources b/sources index a01d0b7..9f8f626 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.beta.tar.xz) = 24d0ab9091f2fb88a975a07493039be3280cd39b698558c4b6cc6901e89bcb56fab88eeec184206647e0f4ac9786c5aeaf94a6feb35fb28b67e54162fab74193 +SHA512 (gnome-remote-desktop-42.rc.tar.xz) = b37f058f623cef85b046115c26411fb85a6c633b13f70bbfc5c943f091dc51621ef9d783193cf777eb2999a714c7e461d71e1999674ae6006ef6ecb98cea1c39 From 8339a17fb08124d7d81b265fa6d5b544a767406b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Mar 2022 11:04:13 +0100 Subject: [PATCH 036/102] Add man page --- gnome-remote-desktop.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 41aafc7..a40f2af 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -14,9 +14,12 @@ Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/%{nam # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch +Patch1: 0001-Add-man-page.patch + BuildRequires: git BuildRequires: gcc BuildRequires: meson >= 0.36.0 +BuildRequires: asciidoc BuildRequires: pkgconfig BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(glib-2.0) >= 2.32 @@ -79,11 +82,13 @@ GNOME desktop environment. %files -f gnome-remote-desktop.lang %license COPYING %doc README +%{_bin}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon %{_userunitdir}/gnome-remote-desktop.service %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml %{_datadir}/gnome-remote-desktop/ +%{_mandir}/man1/grdctl.1 %changelog From 2de08150f91ad63f0d3f34b9a1228c183f155de5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Mar 2022 11:10:15 +0100 Subject: [PATCH 037/102] Add missing patch --- 0001-Add-man-page.patch | 220 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 0001-Add-man-page.patch diff --git a/0001-Add-man-page.patch b/0001-Add-man-page.patch new file mode 100644 index 0000000..ef8ef47 --- /dev/null +++ b/0001-Add-man-page.patch @@ -0,0 +1,220 @@ +From 712d6a036cfb6b49ad35d4d27ba8255f5fef36b6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Mon, 14 Mar 2022 10:38:55 +0100 +Subject: [PATCH] Add man page + +Uses asciidoc; the stylesheet was copied from gnome-shell. +--- + .gitlab-ci.yml | 3 +- + man/grdctl.txt | 88 ++++++++++++++++++++++++++++++++++++++++++++++ + man/meson.build | 9 +++++ + man/stylesheet.xsl | 27 ++++++++++++++ + meson.build | 5 +++ + meson_options.txt | 5 +++ + 6 files changed, 136 insertions(+), 1 deletion(-) + create mode 100644 man/grdctl.txt + create mode 100644 man/meson.build + create mode 100644 man/stylesheet.xsl + +diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml +index f261657..735bb64 100644 +--- a/.gitlab-ci.yml ++++ b/.gitlab-ci.yml +@@ -9,7 +9,7 @@ stages: + .gnome-remote-desktop.fedora:35@common: + variables: + FDO_DISTRIBUTION_VERSION: 35 +- BASE_TAG: '2022-02-11.0' ++ BASE_TAG: '2022-03-14.0' + FDO_UPSTREAM_REPO: GNOME/gnome-remote-desktop + FDO_DISTRIBUTION_EXEC: | + dnf -y update && dnf -y upgrade && +@@ -21,6 +21,7 @@ stages: + dnf builddep -y gnome-remote-desktop && + dnf install -y 'pkgconfig(epoxy)' 'pkgconfig(libdrm)' 'pkgconfig(gbm)' \ + 'pkgconfig(gudev-1.0)' && ++ dnf install -y asciidoc && + + # To test + dnf install -y 'pkgconfig(libvncclient)' && +diff --git a/man/grdctl.txt b/man/grdctl.txt +new file mode 100644 +index 0000000..83777da +--- /dev/null ++++ b/man/grdctl.txt +@@ -0,0 +1,88 @@ ++GRDCTL(1) ++========= ++:man manual: User Commands ++:man source: GNOME-REMOTE-DESKTOP ++:doctype: manpage ++:date: March 2022 ++ ++NAME ++---- ++grdctl - Command line tool for configuring GNOME Remote Desktop ++ ++SYNOPSIS ++-------- ++*grdctl* ['OPTION'...] ['COMMAND'] ['SUBCOMMAND'...] ++ ++DESCRIPTION ++----------- ++grdctl provides methods for configuring the GNOME Remote Desktop service, ++for example setting credentials. ++ ++OPTIONS ++------- ++*--help*:: ++Show help text. ++ ++GENERAL COMMANDS ++---------------- ++*status*:: ++Show current status. ++ ++RDP COMMANDS ++------------ ++*rdp* *enable*:: ++Enable the RDP backend. ++ ++*rdp* *disable*:: ++Disable the RDP backend. ++ ++*rdp* *set-tls-cert* 'TLS-CERT':: ++Set path to TLS certificate. ++ ++*rdp* *set-tls-key* 'TLS-KEY':: ++Set path to TLS key. ++ ++*rdp* *set-credentials* 'USERNAME' 'PASSWORD':: ++Set username and password credentials. ++ ++*rdp* *clear-credentials*:: ++Clear username and password credentials. ++ ++*rdp* *enable-view-only*:: ++Disable remote control of input devices. ++ ++*rdp* *disable-view-only*:: ++Enable remote control of input devices. ++ ++VNC COMMANDS ++------------ ++*vnc* *enable*:: ++Enable the VNC backend. ++ ++*vnc* *disable*:: ++Disable the VNC backend. ++ ++*vnc* *set-password* 'PASSWORD':: ++Set the VNC password. ++ ++*vnc* *clear-password*:: ++Clear the VNC password. ++ ++*vnc* *set-auth-method* 'AUTH-METHOD':: ++Set the authorization method used for new VNC connections. Can be either ++*password* or *prompt*. ++ ++*vnc* *enable-view-only*: ++Disable remote control of input devices. ++ ++*vnc* *disable-view-only*:: ++Enable remote control of input devices. ++ ++BUGS ++---- ++The bug tracker can be reached by visiting the website ++https://gitlab.gnome.org/GNOME/gnome-remote-desktop/issues. Before sending ++a bug report, please verify that you have the latest version of ++gnome-remote-desktop. Many bugs (major and minor) are fixed at each ++release, and if yours is out of date, the problem may already have been ++solved. +diff --git a/man/meson.build b/man/meson.build +new file mode 100644 +index 0000000..1e73f11 +--- /dev/null ++++ b/man/meson.build +@@ -0,0 +1,9 @@ ++a2x = find_program('a2x') ++ ++custom_target('man page', ++ input: ['grdctl.txt', 'stylesheet.xsl'], ++ output: 'grdctl.1', ++ command: [a2x, '-v', '-D', '@OUTDIR@', '--xsl-file', '@INPUT1@', '-f' ,'manpage', '@INPUT0@'], ++ install_dir: mandir + '/man1', ++ install: true ++) +diff --git a/man/stylesheet.xsl b/man/stylesheet.xsl +new file mode 100644 +index 0000000..047bd1b +--- /dev/null ++++ b/man/stylesheet.xsl +@@ -0,0 +1,27 @@ ++ ++ ++ ++ ++ ++ .PP ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ .RS 4 ++ ++ .\" ++ ++ ++ ++ .RE ++ ++ ++ ++ +diff --git a/meson.build b/meson.build +index 6bd2420..0660cd0 100644 +--- a/meson.build ++++ b/meson.build +@@ -55,6 +55,7 @@ endif + prefix = get_option('prefix') + libexecdir = join_paths(prefix, get_option('libexecdir')) + datadir = join_paths(prefix, get_option('datadir')) ++mandir = join_paths(prefix, get_option('mandir')) + schemadir = join_paths(datadir, 'glib-2.0', 'schemas') + + grd_datadir = join_paths(datadir, 'gnome-remote-desktop') +@@ -93,6 +94,10 @@ subdir('src') + subdir('tests') + subdir('po') + ++if get_option('man') ++ subdir('man') ++endif ++ + meson.add_install_script('meson_post_install.py') + + output = [ +diff --git a/meson_options.txt b/meson_options.txt +index 3527588..2897f30 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,3 +1,8 @@ ++option('man', ++ type: 'boolean', ++ value: true, ++ description: 'Generate man pages') ++ + option('rdp', + type: 'boolean', + value: true, +-- +2.34.1 + From 5970c72c6e66879588689fc3973b14cb3746a8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Mar 2022 11:33:39 +0100 Subject: [PATCH 038/102] Fix path to grdctl --- gnome-remote-desktop.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a40f2af..17b09b3 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -82,7 +82,7 @@ GNOME desktop environment. %files -f gnome-remote-desktop.lang %license COPYING %doc README -%{_bin}/grdctl +%{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon %{_userunitdir}/gnome-remote-desktop.service %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml From 241c229ec7c3918758ef0f952bfcd5d86158fc20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 14 Mar 2022 12:25:43 +0100 Subject: [PATCH 039/102] Fix path to man page --- gnome-remote-desktop.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 17b09b3..2f8a3af 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -88,7 +88,7 @@ GNOME desktop environment. %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml %{_datadir}/gnome-remote-desktop/ -%{_mandir}/man1/grdctl.1 +%{_mandir}/man1/grdctl.1* %changelog From 889e4860230a7097ed5d8f2089c46190175e0633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 21 Mar 2022 07:14:31 +0100 Subject: [PATCH 040/102] Update to 42.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 067d29c..d78ebf2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /gnome-remote-desktop-41.2.tar.xz /gnome-remote-desktop-42.beta.tar.xz /gnome-remote-desktop-42.rc.tar.xz +/gnome-remote-desktop-42.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2f8a3af..2428c4e 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42~rc +Version: 42.0 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -92,6 +92,9 @@ GNOME desktop environment. %changelog +* Mon Mar 21 2022 Jonas Ådahl - 42.0 +- Update to 42.0 + * Mon Mar 14 2022 Jonas Ådahl - 42~rc-1 - Update to 42.rc diff --git a/sources b/sources index 9f8f626..cbcd187 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.rc.tar.xz) = b37f058f623cef85b046115c26411fb85a6c633b13f70bbfc5c943f091dc51621ef9d783193cf777eb2999a714c7e461d71e1999674ae6006ef6ecb98cea1c39 +SHA512 (gnome-remote-desktop-42.0.tar.xz) = 3bf03fc96205df4c5efcef0e340ad85e7011ad8e4fecf2e29d9902fbb1633801da7d1094645e850267249dda9383ae0aa782f3e0207a7351d764482f2d0dc349 From 23d93b319396d31726db291bcb95f6de7cd8d62c Mon Sep 17 00:00:00 2001 From: David King Date: Tue, 26 Apr 2022 09:46:19 +0100 Subject: [PATCH 041/102] Update to 42.1 (#2061546) --- .gitignore | 1 + gnome-remote-desktop.spec | 62 ++++++++++++++++++++------------------- sources | 2 +- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index d78ebf2..db0f27c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /gnome-remote-desktop-42.beta.tar.xz /gnome-remote-desktop-42.rc.tar.xz /gnome-remote-desktop-42.0.tar.xz +/gnome-remote-desktop-42.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2428c4e..05c7110 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,47 +3,43 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42.0 +Version: 42.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ -URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop -Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/%{name}-%{tarball_version}.tar.xz +URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop +Source0: https://download.gnome.org/sources/%{name}/42/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch Patch1: 0001-Add-man-page.patch -BuildRequires: git -BuildRequires: gcc -BuildRequires: meson >= 0.36.0 BuildRequires: asciidoc -BuildRequires: pkgconfig +BuildRequires: gcc +BuildRequires: meson >= 0.47.0 +BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(cairo) -BuildRequires: pkgconfig(glib-2.0) >= 2.32 -BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 -BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0 -BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 -BuildRequires: pkgconfig(freerdp2) -BuildRequires: pkgconfig(winpr2) -BuildRequires: pkgconfig(fuse3) -BuildRequires: pkgconfig(ffnvcodec) -BuildRequires: pkgconfig(xkbcommon) -BuildRequires: pkgconfig(libsecret-1) -BuildRequires: pkgconfig(libnotify) -BuildRequires: pkgconfig(gnutls) -BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(epoxy) +BuildRequires: pkgconfig(ffnvcodec) +BuildRequires: pkgconfig(freerdp2) +BuildRequires: pkgconfig(fuse3) BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(glib-2.0) >= 2.68 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(gudev-1.0) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(libpipewire-0.3) +BuildRequires: pkgconfig(libsecret-1) +BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(winpr2) +BuildRequires: pkgconfig(xkbcommon) -BuildRequires: systemd - -Requires: pipewire >= 0.3.0 -Requires: libdrm -Requires: libepoxy +Requires: pipewire{?_isa} >= 0.3.0 Obsoletes: vino < 3.22.0-21 @@ -53,18 +49,21 @@ GNOME desktop environment. %prep -%autosetup -S git -n %{name}-%{tarball_version} +%autosetup -p1 -n %{name}-%{tarball_version} %build -%meson +%meson \ + -Drdp=true \ + -Dsystemd=true \ + -Dvnc=true %meson_build %install %meson_install -%find_lang gnome-remote-desktop +%find_lang %{name} %post @@ -79,12 +78,12 @@ GNOME desktop environment. %systemd_user_postun_with_restart %{systemd_unit} -%files -f gnome-remote-desktop.lang +%files -f %{name}.lang %license COPYING %doc README %{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon -%{_userunitdir}/gnome-remote-desktop.service +%{_userunitdir}/%{systemd_unit} %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml %{_datadir}/gnome-remote-desktop/ @@ -92,6 +91,9 @@ GNOME desktop environment. %changelog +* Tue Apr 26 2022 David King - 42.1-1 +- Update to 42.1 (#2061546) + * Mon Mar 21 2022 Jonas Ådahl - 42.0 - Update to 42.0 diff --git a/sources b/sources index cbcd187..cd666c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.0.tar.xz) = 3bf03fc96205df4c5efcef0e340ad85e7011ad8e4fecf2e29d9902fbb1633801da7d1094645e850267249dda9383ae0aa782f3e0207a7351d764482f2d0dc349 +SHA512 (gnome-remote-desktop-42.1.tar.xz) = 3e17d6482941fccfe6860d2ca2db50235ee70a26fd8942ee1850addb11006cfb152dd949102a4c573f2b6a29f9f2bb78c9ad5be1cba8622ad5b54f82c509376f From 16e8998039856c2d8204f9d4b211fe570c447152 Mon Sep 17 00:00:00 2001 From: David King Date: Wed, 27 Apr 2022 12:05:03 +0100 Subject: [PATCH 042/102] Fix isa macro in Requires --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index db0f27c..21d67eb 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /gnome-remote-desktop-42.rc.tar.xz /gnome-remote-desktop-42.0.tar.xz /gnome-remote-desktop-42.1.tar.xz +/gnome-remote-desktop-42.1.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 05c7110..ef4f912 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 42.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -39,7 +39,7 @@ BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(winpr2) BuildRequires: pkgconfig(xkbcommon) -Requires: pipewire{?_isa} >= 0.3.0 +Requires: pipewire%{?_isa} >= 0.3.0 Obsoletes: vino < 3.22.0-21 @@ -91,6 +91,9 @@ GNOME desktop environment. %changelog +* Wed Apr 27 2022 David King - 42.1-2 +- Fix isa macro in Requires + * Tue Apr 26 2022 David King - 42.1-1 - Update to 42.1 (#2061546) diff --git a/sources b/sources index cd666c3..bf29544 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.1.tar.xz) = 3e17d6482941fccfe6860d2ca2db50235ee70a26fd8942ee1850addb11006cfb152dd949102a4c573f2b6a29f9f2bb78c9ad5be1cba8622ad5b54f82c509376f +SHA512 (gnome-remote-desktop-42.1.1.tar.xz) = 4fbf9305aa7339d9e7fcbf8df8eea97ba675630f6d01ef9a9f049ca3a3bf930f26b0e993ffe386682906d719b15058ce752e4592a3e710ceceb977000ebb1ce1 From 686710ebe0aafacb6277ab93ed4165d0e51dbf59 Mon Sep 17 00:00:00 2001 From: David King Date: Wed, 27 Apr 2022 12:08:44 +0100 Subject: [PATCH 043/102] Update sources --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index bf29544..cd666c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.1.1.tar.xz) = 4fbf9305aa7339d9e7fcbf8df8eea97ba675630f6d01ef9a9f049ca3a3bf930f26b0e993ffe386682906d719b15058ce752e4592a3e710ceceb977000ebb1ce1 +SHA512 (gnome-remote-desktop-42.1.tar.xz) = 3e17d6482941fccfe6860d2ca2db50235ee70a26fd8942ee1850addb11006cfb152dd949102a4c573f2b6a29f9f2bb78c9ad5be1cba8622ad5b54f82c509376f From d1e6ebec7f27b82a15bf28797dde160831d93e2c Mon Sep 17 00:00:00 2001 From: David King Date: Wed, 11 May 2022 11:26:25 +0100 Subject: [PATCH 044/102] Update to 42.1.1 (#2061546) --- ...s-using-the-right-destination-stride.patch | 71 --- 0001-vnc-Drop-frames-if-client-is-gone.patch | 80 --- ...pewire-stream-Handle-stride-mismatch.patch | 73 --- gnome-remote-desktop.spec | 7 +- gnutls-anontls.patch | 464 +++++++++--------- sources | 2 +- 6 files changed, 238 insertions(+), 459 deletions(-) delete mode 100644 0001-vnc-Copy-pixels-using-the-right-destination-stride.patch delete mode 100644 0001-vnc-Drop-frames-if-client-is-gone.patch delete mode 100644 0001-vnc-pipewire-stream-Handle-stride-mismatch.patch diff --git a/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch b/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch deleted file mode 100644 index fc5c830..0000000 --- a/0001-vnc-Copy-pixels-using-the-right-destination-stride.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 81172effba7c70d3b2932c67be79a2924eae9d73 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] vnc: Copy pixels using the right destination stride - -We're copying the pixels in a separate thread managed by PipeWire, and -in this thread, accessing the VNC framebuffer dimension and stride is -racy. Instead of fetching the dimension directly, pass the expected -width and get the stride it will eventually have. - -Already before this patch, when the copied pixel end up on the main -thread and the dimension still doesn't match up, the frame will be -dropped. ---- - src/grd-session-vnc.c | 5 +++-- - src/grd-session-vnc.h | 3 ++- - src/grd-vnc-pipewire-stream.c | 5 +++-- - 3 files changed, 8 insertions(+), 5 deletions(-) - -diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 69fb33d..f4835aa 100644 ---- a/src/grd-session-vnc.c -+++ b/src/grd-session-vnc.c -@@ -535,9 +535,10 @@ grd_session_vnc_get_fd (GrdSessionVnc *session_vnc) - } - - int --grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc) -+grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, -+ int width) - { -- return session_vnc->rfb_screen->paddedWidthInBytes; -+ return width * BGRX_BYTES_PER_PIXEL; - } - - rfbClientPtr -diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 0d01ad3..ccd046c 100644 ---- a/src/grd-session-vnc.h -+++ b/src/grd-session-vnc.h -@@ -60,7 +60,8 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, - - int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); - --int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); -+int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, -+ int width); - - gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); - -diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c -index 96dd7c9..82ceb9b 100644 ---- a/src/grd-vnc-pipewire-stream.c -+++ b/src/grd-vnc-pipewire-stream.c -@@ -326,10 +326,11 @@ process_buffer (GrdVncPipeWireStream *stream, - int height; - int y; - -- src_stride = buffer->datas[0].chunk->stride; -- dst_stride = grd_session_vnc_get_framebuffer_stride (stream->session); - height = stream->spa_format.size.height; - width = stream->spa_format.size.width; -+ src_stride = buffer->datas[0].chunk->stride; -+ dst_stride = grd_session_vnc_get_stride_for_width (stream->session, -+ width); - - frame->data = g_malloc (height * dst_stride); - for (y = 0; y < height; y++) --- -2.28.0 - diff --git a/0001-vnc-Drop-frames-if-client-is-gone.patch b/0001-vnc-Drop-frames-if-client-is-gone.patch deleted file mode 100644 index 59dde2a..0000000 --- a/0001-vnc-Drop-frames-if-client-is-gone.patch +++ /dev/null @@ -1,80 +0,0 @@ -From ab97841629f5f3f4fab9993b6255b6ae04828b9c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Wed, 9 Sep 2020 10:14:20 +0200 -Subject: [PATCH] vnc: Drop frames if client is gone - -Frames from PipeWire are posted asynchronously from a I/O thread to the -main thread where they are turned into VNC frame updates and cursor -movements. On the other hand, sessions are closed asynchronously when -the VNC client disappears. If a frame ended up on the main thread after -a client disappeared but before the session and stream was closed, we'd -try to turn the new frames into VNC updates without a client being -available, causing use after free. - -Fix this by dropping frames that happens during this time frame. - -Closes: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/issues/43 ---- - src/grd-session-vnc.c | 7 +++++++ - src/grd-session-vnc.h | 2 ++ - src/grd-vnc-pipewire-stream.c | 8 ++++++++ - 3 files changed, 17 insertions(+) - -diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 813838a..a06d34d 100644 ---- a/src/grd-session-vnc.c -+++ b/src/grd-session-vnc.c -@@ -209,6 +209,12 @@ maybe_queue_close_session_idle (GrdSessionVnc *session_vnc) - g_idle_add (close_session_idle, session_vnc); - } - -+gboolean -+grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc) -+{ -+ return !session_vnc->rfb_client; -+} -+ - static void - handle_client_gone (rfbClientPtr rfb_client) - { -@@ -218,6 +224,7 @@ handle_client_gone (rfbClientPtr rfb_client) - - grd_session_vnc_detach_source (session_vnc); - maybe_queue_close_session_idle (session_vnc); -+ session_vnc->rfb_client = NULL; - } - - static void -diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 579a12a..07678c8 100644 ---- a/src/grd-session-vnc.h -+++ b/src/grd-session-vnc.h -@@ -57,4 +57,6 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc, - - int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); - -+gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -+ - #endif /* GRD_SESSION_VNC_H */ -diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c -index 78793c4..96dd7c9 100644 ---- a/src/grd-vnc-pipewire-stream.c -+++ b/src/grd-vnc-pipewire-stream.c -@@ -234,6 +234,14 @@ do_render (struct spa_loop *loop, - if (!frame) - return 0; - -+ if (grd_session_vnc_is_client_gone (stream->session)) -+ { -+ g_free (frame->data); -+ g_clear_pointer (&frame->rfb_cursor, rfbFreeCursor); -+ g_free (frame); -+ return 0; -+ } -+ - if (frame->rfb_cursor) - grd_session_vnc_set_cursor (stream->session, frame->rfb_cursor); - --- -2.26.2 - diff --git a/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch b/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch deleted file mode 100644 index dcdad19..0000000 --- a/0001-vnc-pipewire-stream-Handle-stride-mismatch.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 78c5bcb181fe2b0b9fc17eea696feac8b504df54 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Thu, 7 May 2020 15:48:22 +0200 -Subject: [PATCH] vnc/pipewire-stream: Handle stride mismatch - -The VNC server framebuffer assumes a particular stride; but there is no -guarantee that we'll get the same from PipeWire. Handle this gracefully -by coping row by row instead of the whole buffer. ---- - src/grd-vnc-pipewire-stream.c | 23 +++++++++++++++-------- - 1 file changed, 15 insertions(+), 8 deletions(-) - -diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c -index 88c07be..261292a 100644 ---- a/src/grd-vnc-pipewire-stream.c -+++ b/src/grd-vnc-pipewire-stream.c -@@ -187,8 +187,6 @@ on_stream_param_changed (void *user_data, - struct spa_pod_builder pod_builder; - int width; - int height; -- int stride; -- int size; - const struct spa_pod *params[3]; - - if (!format || id != SPA_PARAM_Format) -@@ -203,14 +201,9 @@ on_stream_param_changed (void *user_data, - - grd_session_vnc_queue_resize_framebuffer (stream->session, width, height); - -- stride = grd_session_vnc_get_framebuffer_stride (stream->session); -- size = stride * height; -- - params[0] = spa_pod_builder_add_object ( - &pod_builder, - SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, -- SPA_PARAM_BUFFERS_size, SPA_POD_Int (size), -- SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride), - SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (8, 1, 8), - 0); - -@@ -319,6 +312,10 @@ process_buffer (GrdVncPipeWireStream *stream, - size_t size; - uint8_t *map; - void *src_data; -+ int src_stride; -+ int dst_stride; -+ int height; -+ int y; - struct spa_meta_cursor *spa_meta_cursor; - g_autofree GrdVncFrame *frame = NULL; - -@@ -359,7 +356,17 @@ process_buffer (GrdVncPipeWireStream *stream, - return NULL; - } - -- frame->data = g_memdup (src_data, buffer->datas[0].maxsize); -+ src_stride = buffer->datas[0].chunk->stride; -+ dst_stride = grd_session_vnc_get_framebuffer_stride (stream->session); -+ height = stream->spa_format.size.height; -+ -+ frame->data = g_malloc (height * dst_stride); -+ for (y = 0; y < height; y++) -+ { -+ memcpy (((uint8_t *) frame->data) + y * dst_stride, -+ ((uint8_t *) src_data) + y * src_stride, -+ stream->spa_format.size.width * 4); -+ } - - if (map) - { --- -2.26.2 - diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ef4f912..544bfd5 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: 42.1 -Release: 2%{?dist} +Version: 42.1.1 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -91,6 +91,9 @@ GNOME desktop environment. %changelog +* Wed May 11 2022 David King - 42.1.1-1 +- Update to 42.1.1 (#2061546) + * Wed Apr 27 2022 David King - 42.1-2 - Fix isa macro in Requires diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 98a9a49..d36acfd 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 6ca82648e9b6791fbfbbbc9b05f15ec07a992e1a Mon Sep 17 00:00:00 2001 +From 63d1c041e3997bfc78803b4d0fe09d96b53c9e50 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,7 +25,7 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 6bd2420..d6c5d9b 100644 +index 72d34a4..9a341fa 100644 --- a/meson.build +++ b/meson.build @@ -50,6 +50,7 @@ endif @@ -52,7 +52,7 @@ index e3ecc40..fa8dfb7 100644 + #endif /* GRD_ENUMS_H */ diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index a4cb958..c2e29b4 100644 +index fbc66a4..fa694f0 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -45,7 +45,9 @@ struct _GrdSessionVnc @@ -220,7 +220,7 @@ index a4cb958..c2e29b4 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -669,8 +733,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -673,8 +737,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -231,7 +231,7 @@ index a4cb958..c2e29b4 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -685,6 +751,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -689,6 +755,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -276,7 +276,7 @@ index fcc508d..092d9dc 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index c8f28fb..502d956 100644 +index dad5d57..7753186 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -69,6 +69,7 @@ struct _GrdSettings @@ -287,7 +287,7 @@ index c8f28fb..502d956 100644 } vnc; }; -@@ -245,6 +246,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) +@@ -259,6 +260,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) return settings->vnc.auth_method; } @@ -300,7 +300,7 @@ index c8f28fb..502d956 100644 static void update_screen_share_mode (GrdSettings *settings) { -@@ -303,6 +310,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -317,6 +324,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -314,7 +314,7 @@ index c8f28fb..502d956 100644 static void on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -355,6 +369,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -369,6 +383,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 c8f28fb..502d956 100644 } static void -@@ -392,6 +411,8 @@ grd_settings_init (GrdSettings *settings) +@@ -406,6 +425,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 c8f28fb..502d956 100644 } static void -@@ -457,4 +478,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -471,4 +492,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -962,181 +962,13 @@ index 939b9a6..e57affb 100644 -- -2.34.1 +2.36.1 -From 212fa98088cb4a754bac8cdb3a69d2a3e6b4dff9 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 - -Paused is when the socket sourec is detached, and resumed when attached. -Meant to be used by the TLS channel security to a attach/detach -out-of-socket source. ---- - src/grd-session-vnc.c | 72 ++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 65 insertions(+), 7 deletions(-) - -diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index c2e29b4..4be4c49 100644 ---- a/src/grd-session-vnc.c -+++ b/src/grd-session-vnc.c -@@ -41,14 +41,27 @@ - #define BGRX_SAMPLES_PER_PIXEL 3 - #define BGRX_BYTES_PER_PIXEL 4 - -+enum -+{ -+ PAUSED, -+ RESUMED, -+ -+ N_SIGNALS -+}; -+ -+static guint signals[N_SIGNALS]; -+ - struct _GrdSessionVnc - { - GrdSession parent; - - GrdVncServer *vnc_server; - GSocketConnection *connection; -+ - GList *socket_grabs; - GSource *source; -+ gboolean is_paused; -+ - rfbScreenInfoPtr rfb_screen; - rfbClientPtr rfb_client; - -@@ -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); -+grd_session_vnc_pause (GrdSessionVnc *session_vnc); - - static gboolean - close_session_idle (gpointer user_data); -@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) - - g_debug ("VNC client gone"); - -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); -+ - maybe_queue_close_session_idle (session_vnc); - session_vnc->rfb_client = NULL; - } -@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) - session_vnc->prompt_cancellable, - prompt_response_callback, - session_vnc); -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - return RFB_CLIENT_ON_HOLD; - case GRD_VNC_AUTH_METHOD_PASSWORD: - session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -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)); -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - return TRUE; - } - else -@@ -721,6 +735,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) - g_clear_pointer (&session_vnc->source, g_source_destroy); - } - -+gboolean -+grd_session_vnc_is_paused (GrdSessionVnc *session_vnc) -+{ -+ return session_vnc->is_paused; -+} -+ -+static void -+grd_session_vnc_pause (GrdSessionVnc *session_vnc) -+{ -+ if (grd_session_vnc_is_paused (session_vnc)) -+ return; -+ -+ session_vnc->is_paused = TRUE; -+ -+ grd_session_vnc_detach_source (session_vnc); -+ g_signal_emit (session_vnc, signals[PAUSED], 0); -+} -+ -+static void -+grd_session_vnc_resume (GrdSessionVnc *session_vnc) -+{ -+ if (!grd_session_vnc_is_paused (session_vnc)) -+ return; -+ -+ session_vnc->is_paused = FALSE; -+ -+ grd_session_vnc_attach_source (session_vnc); -+ g_signal_emit (session_vnc, signals[RESUMED], 0); -+} -+ - GrdSessionVnc * - grd_session_vnc_new (GrdVncServer *vnc_server, - GSocketConnection *connection) -@@ -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); -+ session_vnc->is_paused = FALSE; - - init_vnc_session (session_vnc); - -@@ -767,7 +812,7 @@ grd_session_vnc_stop (GrdSession *session) - - g_clear_object (&session_vnc->pipewire_stream); - -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - - g_clear_object (&session_vnc->connection); - g_clear_object (&session_vnc->clipboard_vnc); -@@ -827,8 +872,8 @@ grd_session_vnc_stream_ready (GrdSession *session, - G_CALLBACK (on_pipewire_stream_closed), - session_vnc); - -- if (!session_vnc->source) -- grd_session_vnc_attach_source (session_vnc); -+ if (grd_session_vnc_is_paused (session_vnc)) -+ grd_session_vnc_resume (session_vnc); - } - - static void -@@ -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", -+ G_TYPE_FROM_CLASS (klass), -+ G_SIGNAL_RUN_LAST, -+ 0, -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); -+ signals[RESUMED] = g_signal_new ("resumed", -+ G_TYPE_FROM_CLASS (klass), -+ G_SIGNAL_RUN_LAST, -+ 0, -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); - } --- -2.34.1 - - -From db1ce3962bbe49491b87cb0a4a90de41614e118b Mon Sep 17 00:00:00 2001 +From 38d981d05fa79da2aa15076637253f6c4cc606d9 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 +Subject: [PATCH 2/7] session-vnc: Add grd_session_vnc_dispatch() helper To be used by the TLS channel security to dispatch when there is data available that is not visible to the socket source. @@ -1146,10 +978,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 4be4c49..9708de0 100644 +index fa694f0..1edd33a 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -675,6 +675,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -661,6 +661,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1171,7 +1003,7 @@ index 4be4c49..9708de0 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -691,16 +706,7 @@ handle_socket_data (GSocket *socket, +@@ -677,16 +692,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1203,13 +1035,13 @@ index 092d9dc..e9eced0 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.34.1 +2.36.1 -From d6115fc524886ba716ba22464743c1a72472ff75 Mon Sep 17 00:00:00 2001 +From 9aacfa825fcdef0f2eb87b7f48872b1a93ec7923 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 +Subject: [PATCH 3/7] vnc/tls: Add some logging Uses the log utility from libvncserver as it is related to the RFB protocol rather than the session itself. @@ -1280,13 +1112,13 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.34.1 +2.36.1 -From c71c9d295a2921014d55820042fc8bdad02df19c Mon Sep 17 00:00:00 2001 +From aeaa81db6cf160a32c8d83a945c860bb7451babf 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 +Subject: [PATCH 4/7] vnc/tls: Dispatch also when data is pending outside of the socket gnutls may have data available in its buffers, and we have our own peek @@ -1450,13 +1282,216 @@ index ac6c35f..312b6b9 100644 } -- -2.34.1 +2.36.1 -From edc2380304d19e1bea58b079b943bad42cac5d69 Mon Sep 17 00:00:00 2001 +From be203b966ff119e82ea7ac9894b67a1db2f55f26 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 +Date: Mon, 12 Oct 2020 17:34:30 +0200 +Subject: [PATCH 5/7] vnc: Copy pixels using the right destination stride + +We're copying the pixels in a separate thread managed by PipeWire, and +in this thread, accessing the VNC framebuffer dimension and stride is +racy. Instead of fetching the dimension directly, pass the expected +width and get the stride it will eventually have. + +Already before this patch, when the copied pixel end up on the main +thread and the dimension still doesn't match up, the frame will be +dropped. +--- + src/grd-session-vnc.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +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, + + int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + +-int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); ++int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, ++ int width); + + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); + +-- +2.36.1 + + +From ffd24b13dfce2e89acf5eb6ccd7bb6b90487e547 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Wed, 11 May 2022 11:17:00 +0100 +Subject: [PATCH 6/7] session-vnc: Add paused/resumed signals + +Paused is when the socket sourec is detached, and resumed when attached. +Meant to be used by the TLS channel security to a attach/detach +out-of-socket source. +--- + src/grd-session-vnc.c | 72 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 65 insertions(+), 7 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index 1edd33a..39d3ead 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -41,14 +41,27 @@ + #define BGRX_SAMPLES_PER_PIXEL 3 + #define BGRX_BYTES_PER_PIXEL 4 + ++enum ++{ ++ PAUSED, ++ RESUMED, ++ ++ N_SIGNALS ++}; ++ ++static guint signals[N_SIGNALS]; ++ + struct _GrdSessionVnc + { + GrdSession parent; + + GrdVncServer *vnc_server; + GSocketConnection *connection; ++ + GList *socket_grabs; + GSource *source; ++ gboolean is_paused; ++ + rfbScreenInfoPtr rfb_screen; + rfbClientPtr rfb_client; + +@@ -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); ++grd_session_vnc_pause (GrdSessionVnc *session_vnc); + + static gboolean + close_session_idle (gpointer user_data); +@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) + + g_debug ("VNC client gone"); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); ++ + maybe_queue_close_session_idle (session_vnc); + session_vnc->rfb_client = NULL; + } +@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) + session_vnc->prompt_cancellable, + prompt_response_callback, + session_vnc); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return RFB_CLIENT_ON_HOLD; + case GRD_VNC_AUTH_METHOD_PASSWORD: + session_vnc->rfb_screen->passwordCheck = check_rfb_password; +@@ -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)); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return TRUE; + } + else +@@ -731,6 +745,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) + g_clear_pointer (&session_vnc->source, g_source_unref); + } + ++gboolean ++grd_session_vnc_is_paused (GrdSessionVnc *session_vnc) ++{ ++ return session_vnc->is_paused; ++} ++ ++static void ++grd_session_vnc_pause (GrdSessionVnc *session_vnc) ++{ ++ if (grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = TRUE; ++ ++ grd_session_vnc_detach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[PAUSED], 0); ++} ++ ++static void ++grd_session_vnc_resume (GrdSessionVnc *session_vnc) ++{ ++ if (!grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = FALSE; ++ ++ grd_session_vnc_attach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[RESUMED], 0); ++} ++ + GrdSessionVnc * + grd_session_vnc_new (GrdVncServer *vnc_server, + GSocketConnection *connection) +@@ -748,6 +792,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); ++ session_vnc->is_paused = FALSE; + + init_vnc_session (session_vnc); + +@@ -777,7 +822,7 @@ grd_session_vnc_stop (GrdSession *session) + + g_clear_object (&session_vnc->pipewire_stream); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + + g_clear_object (&session_vnc->connection); + g_clear_object (&session_vnc->clipboard_vnc); +@@ -837,8 +882,8 @@ grd_session_vnc_stream_ready (GrdSession *session, + G_CALLBACK (on_pipewire_stream_closed), + session_vnc); + +- if (!session_vnc->source) +- grd_session_vnc_attach_source (session_vnc); ++ if (grd_session_vnc_is_paused (session_vnc)) ++ grd_session_vnc_resume (session_vnc); + } + + static void +@@ -859,4 +904,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", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); ++ signals[RESUMED] = g_signal_new ("resumed", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); + } +-- +2.36.1 + + +From 156cd6920fd461a677c3eb848590a88249079303 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Wed, 11 May 2022 11:19:26 +0100 +Subject: [PATCH 7/7] session-vnc: Set our own password handling function up front libvncserver decides whether to register a auth security handler @@ -1472,7 +1507,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 9708de0..bc60285 100644 +index 39d3ead..6d0e5e2 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -95,11 +95,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1505,40 +1540,5 @@ index 9708de0..bc60285 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.34.1 - - -From 539d2c562b8068f1f698468cb87b36b4968c1517 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 - -We're copying the pixels in a separate thread managed by PipeWire, and -in this thread, accessing the VNC framebuffer dimension and stride is -racy. Instead of fetching the dimension directly, pass the expected -width and get the stride it will eventually have. - -Already before this patch, when the copied pixel end up on the main -thread and the dimension still doesn't match up, the frame will be -dropped. ---- - src/grd-session-vnc.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -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, - - int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); - --int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); -+int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, -+ int width); - - gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); - --- -2.34.1 +2.36.1 diff --git a/sources b/sources index cd666c3..bf29544 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.1.tar.xz) = 3e17d6482941fccfe6860d2ca2db50235ee70a26fd8942ee1850addb11006cfb152dd949102a4c573f2b6a29f9f2bb78c9ad5be1cba8622ad5b54f82c509376f +SHA512 (gnome-remote-desktop-42.1.1.tar.xz) = 4fbf9305aa7339d9e7fcbf8df8eea97ba675630f6d01ef9a9f049ca3a3bf930f26b0e993ffe386682906d719b15058ce752e4592a3e710ceceb977000ebb1ce1 From 8e6dec6081760754153f2511fd82595cc75ae6af Mon Sep 17 00:00:00 2001 From: David King Date: Sun, 29 May 2022 18:11:31 +0100 Subject: [PATCH 045/102] Update to 42.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 21d67eb..310dcd7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /gnome-remote-desktop-42.0.tar.xz /gnome-remote-desktop-42.1.tar.xz /gnome-remote-desktop-42.1.1.tar.xz +/gnome-remote-desktop-42.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 544bfd5..2dfcf3a 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42.1.1 +Version: 42.2 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -91,6 +91,9 @@ GNOME desktop environment. %changelog +* Sun May 29 2022 David King - 42.2-1 +- Update to 42.2 + * Wed May 11 2022 David King - 42.1.1-1 - Update to 42.1.1 (#2061546) diff --git a/sources b/sources index bf29544..aab132c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.1.1.tar.xz) = 4fbf9305aa7339d9e7fcbf8df8eea97ba675630f6d01ef9a9f049ca3a3bf930f26b0e993ffe386682906d719b15058ce752e4592a3e710ceceb977000ebb1ce1 +SHA512 (gnome-remote-desktop-42.2.tar.xz) = 620f2119bec845bf93226b1b873519c5609b7b6212232b33de2d1c420160378ad917c7b593b00c3e15a3b3c3788f3300ef89a226952afb6dae40f9fcc6782e16 From f6166f9a71d88ed851bd725d49533d01c1f26807 Mon Sep 17 00:00:00 2001 From: David King Date: Thu, 7 Jul 2022 13:44:03 +0100 Subject: [PATCH 046/102] Update to 43.3 (#2091415) --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 310dcd7..2f0b258 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /gnome-remote-desktop-42.1.tar.xz /gnome-remote-desktop-42.1.1.tar.xz /gnome-remote-desktop-42.2.tar.xz +/gnome-remote-desktop-42.3.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2dfcf3a..7e50be2 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42.2 +Version: 42.3 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -91,6 +91,9 @@ GNOME desktop environment. %changelog +* Thu Jul 07 2022 David King - 42.3-1 +- Update to 43.3 (#2091415) + * Sun May 29 2022 David King - 42.2-1 - Update to 42.2 diff --git a/sources b/sources index aab132c..e04d4b6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.2.tar.xz) = 620f2119bec845bf93226b1b873519c5609b7b6212232b33de2d1c420160378ad917c7b593b00c3e15a3b3c3788f3300ef89a226952afb6dae40f9fcc6782e16 +SHA512 (gnome-remote-desktop-42.3.tar.xz) = 3545ec6b3f7f80315546d03ecb0c30ed554e879c743e1d7031ac65cf10e6d9d510553049393221be0be203a79b8be8bc96c0d3fe600be1ac3c0a1e24431ba945 From 14083291c08dcf59d9e5bd4a8bb705156821b15a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 06:56:51 +0000 Subject: [PATCH 047/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 7e50be2..19ce35c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -4,7 +4,7 @@ Name: gnome-remote-desktop Version: 42.3 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -91,6 +91,9 @@ GNOME desktop environment. %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 42.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Thu Jul 07 2022 David King - 42.3-1 - Update to 43.3 (#2091415) From 16a4814700241c53635e0fa2b7b8fffbafbdeacc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 28 Jul 2022 18:16:08 +0200 Subject: [PATCH 048/102] Update to 43.alpha --- .gitignore | 1 + 0001-Add-man-page.patch | 220 ------------------- gnome-remote-desktop.spec | 11 +- gnutls-anontls.patch | 450 +++++++++++++++++++------------------- sources | 2 +- 5 files changed, 233 insertions(+), 451 deletions(-) delete mode 100644 0001-Add-man-page.patch diff --git a/.gitignore b/.gitignore index 2f0b258..8b37a48 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /gnome-remote-desktop-42.1.1.tar.xz /gnome-remote-desktop-42.2.tar.xz /gnome-remote-desktop-42.3.tar.xz +/gnome-remote-desktop-43.alpha.tar.xz diff --git a/0001-Add-man-page.patch b/0001-Add-man-page.patch deleted file mode 100644 index ef8ef47..0000000 --- a/0001-Add-man-page.patch +++ /dev/null @@ -1,220 +0,0 @@ -From 712d6a036cfb6b49ad35d4d27ba8255f5fef36b6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Mon, 14 Mar 2022 10:38:55 +0100 -Subject: [PATCH] Add man page - -Uses asciidoc; the stylesheet was copied from gnome-shell. ---- - .gitlab-ci.yml | 3 +- - man/grdctl.txt | 88 ++++++++++++++++++++++++++++++++++++++++++++++ - man/meson.build | 9 +++++ - man/stylesheet.xsl | 27 ++++++++++++++ - meson.build | 5 +++ - meson_options.txt | 5 +++ - 6 files changed, 136 insertions(+), 1 deletion(-) - create mode 100644 man/grdctl.txt - create mode 100644 man/meson.build - create mode 100644 man/stylesheet.xsl - -diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml -index f261657..735bb64 100644 ---- a/.gitlab-ci.yml -+++ b/.gitlab-ci.yml -@@ -9,7 +9,7 @@ stages: - .gnome-remote-desktop.fedora:35@common: - variables: - FDO_DISTRIBUTION_VERSION: 35 -- BASE_TAG: '2022-02-11.0' -+ BASE_TAG: '2022-03-14.0' - FDO_UPSTREAM_REPO: GNOME/gnome-remote-desktop - FDO_DISTRIBUTION_EXEC: | - dnf -y update && dnf -y upgrade && -@@ -21,6 +21,7 @@ stages: - dnf builddep -y gnome-remote-desktop && - dnf install -y 'pkgconfig(epoxy)' 'pkgconfig(libdrm)' 'pkgconfig(gbm)' \ - 'pkgconfig(gudev-1.0)' && -+ dnf install -y asciidoc && - - # To test - dnf install -y 'pkgconfig(libvncclient)' && -diff --git a/man/grdctl.txt b/man/grdctl.txt -new file mode 100644 -index 0000000..83777da ---- /dev/null -+++ b/man/grdctl.txt -@@ -0,0 +1,88 @@ -+GRDCTL(1) -+========= -+:man manual: User Commands -+:man source: GNOME-REMOTE-DESKTOP -+:doctype: manpage -+:date: March 2022 -+ -+NAME -+---- -+grdctl - Command line tool for configuring GNOME Remote Desktop -+ -+SYNOPSIS -+-------- -+*grdctl* ['OPTION'...] ['COMMAND'] ['SUBCOMMAND'...] -+ -+DESCRIPTION -+----------- -+grdctl provides methods for configuring the GNOME Remote Desktop service, -+for example setting credentials. -+ -+OPTIONS -+------- -+*--help*:: -+Show help text. -+ -+GENERAL COMMANDS -+---------------- -+*status*:: -+Show current status. -+ -+RDP COMMANDS -+------------ -+*rdp* *enable*:: -+Enable the RDP backend. -+ -+*rdp* *disable*:: -+Disable the RDP backend. -+ -+*rdp* *set-tls-cert* 'TLS-CERT':: -+Set path to TLS certificate. -+ -+*rdp* *set-tls-key* 'TLS-KEY':: -+Set path to TLS key. -+ -+*rdp* *set-credentials* 'USERNAME' 'PASSWORD':: -+Set username and password credentials. -+ -+*rdp* *clear-credentials*:: -+Clear username and password credentials. -+ -+*rdp* *enable-view-only*:: -+Disable remote control of input devices. -+ -+*rdp* *disable-view-only*:: -+Enable remote control of input devices. -+ -+VNC COMMANDS -+------------ -+*vnc* *enable*:: -+Enable the VNC backend. -+ -+*vnc* *disable*:: -+Disable the VNC backend. -+ -+*vnc* *set-password* 'PASSWORD':: -+Set the VNC password. -+ -+*vnc* *clear-password*:: -+Clear the VNC password. -+ -+*vnc* *set-auth-method* 'AUTH-METHOD':: -+Set the authorization method used for new VNC connections. Can be either -+*password* or *prompt*. -+ -+*vnc* *enable-view-only*: -+Disable remote control of input devices. -+ -+*vnc* *disable-view-only*:: -+Enable remote control of input devices. -+ -+BUGS -+---- -+The bug tracker can be reached by visiting the website -+https://gitlab.gnome.org/GNOME/gnome-remote-desktop/issues. Before sending -+a bug report, please verify that you have the latest version of -+gnome-remote-desktop. Many bugs (major and minor) are fixed at each -+release, and if yours is out of date, the problem may already have been -+solved. -diff --git a/man/meson.build b/man/meson.build -new file mode 100644 -index 0000000..1e73f11 ---- /dev/null -+++ b/man/meson.build -@@ -0,0 +1,9 @@ -+a2x = find_program('a2x') -+ -+custom_target('man page', -+ input: ['grdctl.txt', 'stylesheet.xsl'], -+ output: 'grdctl.1', -+ command: [a2x, '-v', '-D', '@OUTDIR@', '--xsl-file', '@INPUT1@', '-f' ,'manpage', '@INPUT0@'], -+ install_dir: mandir + '/man1', -+ install: true -+) -diff --git a/man/stylesheet.xsl b/man/stylesheet.xsl -new file mode 100644 -index 0000000..047bd1b ---- /dev/null -+++ b/man/stylesheet.xsl -@@ -0,0 +1,27 @@ -+ -+ -+ -+ -+ -+ .PP -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ .RS 4 -+ -+ .\" -+ -+ -+ -+ .RE -+ -+ -+ -+ -diff --git a/meson.build b/meson.build -index 6bd2420..0660cd0 100644 ---- a/meson.build -+++ b/meson.build -@@ -55,6 +55,7 @@ endif - prefix = get_option('prefix') - libexecdir = join_paths(prefix, get_option('libexecdir')) - datadir = join_paths(prefix, get_option('datadir')) -+mandir = join_paths(prefix, get_option('mandir')) - schemadir = join_paths(datadir, 'glib-2.0', 'schemas') - - grd_datadir = join_paths(datadir, 'gnome-remote-desktop') -@@ -93,6 +94,10 @@ subdir('src') - subdir('tests') - subdir('po') - -+if get_option('man') -+ subdir('man') -+endif -+ - meson.add_install_script('meson_post_install.py') - - output = [ -diff --git a/meson_options.txt b/meson_options.txt -index 3527588..2897f30 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -1,3 +1,8 @@ -+option('man', -+ type: 'boolean', -+ value: true, -+ description: 'Generate man pages') -+ - option('rdp', - type: 'boolean', - value: true, --- -2.34.1 - diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 19ce35c..b1c0a6c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,19 +3,17 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-remote-desktop -Version: 42.3 -Release: 2%{?dist} +Version: 43~alpha +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/42/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/43/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch -Patch1: 0001-Add-man-page.patch - BuildRequires: asciidoc BuildRequires: gcc BuildRequires: meson >= 0.47.0 @@ -91,6 +89,9 @@ GNOME desktop environment. %changelog +* Thu Jul 28 2022 Jonas Ådahl - 43~alpha +- Update to 43.alpha + * Thu Jul 21 2022 Fedora Release Engineering - 42.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index d36acfd..3e5bd30 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 63d1c041e3997bfc78803b4d0fe09d96b53c9e50 Mon Sep 17 00:00:00 2001 +From a371957f58dc2d5022b2b145d15081e1b9cab629 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,13 +25,13 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 72d34a4..9a341fa 100644 +index 3e7c272..17d85d9 100644 --- a/meson.build +++ b/meson.build @@ -50,6 +50,7 @@ endif if have_vnc - libvncserver_dep = dependency('libvncserver') libvncclient_dep = dependency('libvncclient') + libvncserver_dep = dependency('libvncserver') + gnutls_dep = dependency('gnutls') endif @@ -924,7 +924,7 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 1d671d7..ab675ff 100644 +index 3def890..31f11fa 100644 --- a/src/meson.build +++ b/src/meson.build @@ -115,10 +115,13 @@ if have_vnc @@ -942,7 +942,7 @@ index 1d671d7..ab675ff 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 939b9a6..e57affb 100644 +index 6ea4875..4d36b5d 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in @@ -90,5 +90,15 @@ @@ -962,13 +962,181 @@ index 939b9a6..e57affb 100644 -- -2.36.1 +2.35.3 -From 38d981d05fa79da2aa15076637253f6c4cc606d9 Mon Sep 17 00:00:00 2001 +From 817a3712b076a0054e0ee78e9bf0b31d203a954d 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 + +Paused is when the socket sourec is detached, and resumed when attached. +Meant to be used by the TLS channel security to a attach/detach +out-of-socket source. +--- + src/grd-session-vnc.c | 72 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 65 insertions(+), 7 deletions(-) + +diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c +index fa694f0..8173897 100644 +--- a/src/grd-session-vnc.c ++++ b/src/grd-session-vnc.c +@@ -41,14 +41,27 @@ + #define BGRX_SAMPLES_PER_PIXEL 3 + #define BGRX_BYTES_PER_PIXEL 4 + ++enum ++{ ++ PAUSED, ++ RESUMED, ++ ++ N_SIGNALS ++}; ++ ++static guint signals[N_SIGNALS]; ++ + struct _GrdSessionVnc + { + GrdSession parent; + + GrdVncServer *vnc_server; + GSocketConnection *connection; ++ + GList *socket_grabs; + GSource *source; ++ gboolean is_paused; ++ + rfbScreenInfoPtr rfb_screen; + rfbClientPtr rfb_client; + +@@ -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); ++grd_session_vnc_pause (GrdSessionVnc *session_vnc); + + static gboolean + close_session_idle (gpointer user_data); +@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) + + g_debug ("VNC client gone"); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); ++ + maybe_queue_close_session_idle (session_vnc); + session_vnc->rfb_client = NULL; + } +@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) + session_vnc->prompt_cancellable, + prompt_response_callback, + session_vnc); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return RFB_CLIENT_ON_HOLD; + case GRD_VNC_AUTH_METHOD_PASSWORD: + session_vnc->rfb_screen->passwordCheck = check_rfb_password; +@@ -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)); +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + return TRUE; + } + else +@@ -725,6 +739,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) + g_clear_pointer (&session_vnc->source, g_source_unref); + } + ++gboolean ++grd_session_vnc_is_paused (GrdSessionVnc *session_vnc) ++{ ++ return session_vnc->is_paused; ++} ++ ++static void ++grd_session_vnc_pause (GrdSessionVnc *session_vnc) ++{ ++ if (grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = TRUE; ++ ++ grd_session_vnc_detach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[PAUSED], 0); ++} ++ ++static void ++grd_session_vnc_resume (GrdSessionVnc *session_vnc) ++{ ++ if (!grd_session_vnc_is_paused (session_vnc)) ++ return; ++ ++ session_vnc->is_paused = FALSE; ++ ++ grd_session_vnc_attach_source (session_vnc); ++ g_signal_emit (session_vnc, signals[RESUMED], 0); ++} ++ + GrdSessionVnc * + grd_session_vnc_new (GrdVncServer *vnc_server, + GSocketConnection *connection) +@@ -742,6 +786,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); ++ session_vnc->is_paused = FALSE; + + init_vnc_session (session_vnc); + +@@ -771,7 +816,7 @@ grd_session_vnc_stop (GrdSession *session) + + g_clear_object (&session_vnc->pipewire_stream); + +- grd_session_vnc_detach_source (session_vnc); ++ grd_session_vnc_pause (session_vnc); + + g_clear_object (&session_vnc->connection); + g_clear_object (&session_vnc->clipboard_vnc); +@@ -831,8 +876,8 @@ grd_session_vnc_stream_ready (GrdSession *session, + G_CALLBACK (on_pipewire_stream_closed), + session_vnc); + +- if (!session_vnc->source) +- grd_session_vnc_attach_source (session_vnc); ++ if (grd_session_vnc_is_paused (session_vnc)) ++ grd_session_vnc_resume (session_vnc); + } + + static void +@@ -853,4 +898,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", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); ++ signals[RESUMED] = g_signal_new ("resumed", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, NULL, ++ G_TYPE_NONE, 0); + } +-- +2.35.3 + + +From 9581bf42a2a03cc1b80c2d0b61304e2b1594fa81 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 2/7] session-vnc: Add grd_session_vnc_dispatch() helper +Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper To be used by the TLS channel security to dispatch when there is data available that is not visible to the socket source. @@ -978,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 fa694f0..1edd33a 100644 +index 8173897..39d3ead 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -661,6 +661,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -675,6 +675,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1003,7 +1171,7 @@ index fa694f0..1edd33a 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -677,16 +692,7 @@ handle_socket_data (GSocket *socket, +@@ -691,16 +706,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1035,13 +1203,13 @@ index 092d9dc..e9eced0 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.36.1 +2.35.3 -From 9aacfa825fcdef0f2eb87b7f48872b1a93ec7923 Mon Sep 17 00:00:00 2001 +From 3c10a7ba8514a4f5f9b7af2556330ba00db576ce 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 3/7] vnc/tls: Add some logging +Subject: [PATCH 4/7] vnc/tls: Add some logging Uses the log utility from libvncserver as it is related to the RFB protocol rather than the session itself. @@ -1112,13 +1280,13 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.36.1 +2.35.3 -From aeaa81db6cf160a32c8d83a945c860bb7451babf Mon Sep 17 00:00:00 2001 +From 1f5ba28f773b3b6b5f238df93c27dec8402684d0 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 4/7] vnc/tls: Dispatch also when data is pending outside of +Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of the socket gnutls may have data available in its buffers, and we have our own peek @@ -1282,216 +1450,13 @@ index ac6c35f..312b6b9 100644 } -- -2.36.1 +2.35.3 -From be203b966ff119e82ea7ac9894b67a1db2f55f26 Mon Sep 17 00:00:00 2001 +From c6ed5cc1fb612099eca207297dcb80a2c9a77112 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 5/7] vnc: Copy pixels using the right destination stride - -We're copying the pixels in a separate thread managed by PipeWire, and -in this thread, accessing the VNC framebuffer dimension and stride is -racy. Instead of fetching the dimension directly, pass the expected -width and get the stride it will eventually have. - -Already before this patch, when the copied pixel end up on the main -thread and the dimension still doesn't match up, the frame will be -dropped. ---- - src/grd-session-vnc.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -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, - - int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); - --int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); -+int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, -+ int width); - - gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); - --- -2.36.1 - - -From ffd24b13dfce2e89acf5eb6ccd7bb6b90487e547 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Wed, 11 May 2022 11:17:00 +0100 -Subject: [PATCH 6/7] session-vnc: Add paused/resumed signals - -Paused is when the socket sourec is detached, and resumed when attached. -Meant to be used by the TLS channel security to a attach/detach -out-of-socket source. ---- - src/grd-session-vnc.c | 72 ++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 65 insertions(+), 7 deletions(-) - -diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 1edd33a..39d3ead 100644 ---- a/src/grd-session-vnc.c -+++ b/src/grd-session-vnc.c -@@ -41,14 +41,27 @@ - #define BGRX_SAMPLES_PER_PIXEL 3 - #define BGRX_BYTES_PER_PIXEL 4 - -+enum -+{ -+ PAUSED, -+ RESUMED, -+ -+ N_SIGNALS -+}; -+ -+static guint signals[N_SIGNALS]; -+ - struct _GrdSessionVnc - { - GrdSession parent; - - GrdVncServer *vnc_server; - GSocketConnection *connection; -+ - GList *socket_grabs; - GSource *source; -+ gboolean is_paused; -+ - rfbScreenInfoPtr rfb_screen; - rfbClientPtr rfb_client; - -@@ -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); -+grd_session_vnc_pause (GrdSessionVnc *session_vnc); - - static gboolean - close_session_idle (gpointer user_data); -@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) - - g_debug ("VNC client gone"); - -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); -+ - maybe_queue_close_session_idle (session_vnc); - session_vnc->rfb_client = NULL; - } -@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) - session_vnc->prompt_cancellable, - prompt_response_callback, - session_vnc); -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - return RFB_CLIENT_ON_HOLD; - case GRD_VNC_AUTH_METHOD_PASSWORD: - session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -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)); -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - return TRUE; - } - else -@@ -731,6 +745,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) - g_clear_pointer (&session_vnc->source, g_source_unref); - } - -+gboolean -+grd_session_vnc_is_paused (GrdSessionVnc *session_vnc) -+{ -+ return session_vnc->is_paused; -+} -+ -+static void -+grd_session_vnc_pause (GrdSessionVnc *session_vnc) -+{ -+ if (grd_session_vnc_is_paused (session_vnc)) -+ return; -+ -+ session_vnc->is_paused = TRUE; -+ -+ grd_session_vnc_detach_source (session_vnc); -+ g_signal_emit (session_vnc, signals[PAUSED], 0); -+} -+ -+static void -+grd_session_vnc_resume (GrdSessionVnc *session_vnc) -+{ -+ if (!grd_session_vnc_is_paused (session_vnc)) -+ return; -+ -+ session_vnc->is_paused = FALSE; -+ -+ grd_session_vnc_attach_source (session_vnc); -+ g_signal_emit (session_vnc, signals[RESUMED], 0); -+} -+ - GrdSessionVnc * - grd_session_vnc_new (GrdVncServer *vnc_server, - GSocketConnection *connection) -@@ -748,6 +792,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); -+ session_vnc->is_paused = FALSE; - - init_vnc_session (session_vnc); - -@@ -777,7 +822,7 @@ grd_session_vnc_stop (GrdSession *session) - - g_clear_object (&session_vnc->pipewire_stream); - -- grd_session_vnc_detach_source (session_vnc); -+ grd_session_vnc_pause (session_vnc); - - g_clear_object (&session_vnc->connection); - g_clear_object (&session_vnc->clipboard_vnc); -@@ -837,8 +882,8 @@ grd_session_vnc_stream_ready (GrdSession *session, - G_CALLBACK (on_pipewire_stream_closed), - session_vnc); - -- if (!session_vnc->source) -- grd_session_vnc_attach_source (session_vnc); -+ if (grd_session_vnc_is_paused (session_vnc)) -+ grd_session_vnc_resume (session_vnc); - } - - static void -@@ -859,4 +904,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", -+ G_TYPE_FROM_CLASS (klass), -+ G_SIGNAL_RUN_LAST, -+ 0, -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); -+ signals[RESUMED] = g_signal_new ("resumed", -+ G_TYPE_FROM_CLASS (klass), -+ G_SIGNAL_RUN_LAST, -+ 0, -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); - } --- -2.36.1 - - -From 156cd6920fd461a677c3eb848590a88249079303 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Wed, 11 May 2022 11:19:26 +0100 -Subject: [PATCH 7/7] session-vnc: Set our own password handling function up +Date: Wed, 27 Nov 2019 16:48:00 +0100 +Subject: [PATCH 6/7] session-vnc: Set our own password handling function up front libvncserver decides whether to register a auth security handler @@ -1540,5 +1505,40 @@ index 39d3ead..6d0e5e2 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.36.1 +2.35.3 + + +From b7420dcf10c92974efa17d8584f7a4d2773dd425 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 + +We're copying the pixels in a separate thread managed by PipeWire, and +in this thread, accessing the VNC framebuffer dimension and stride is +racy. Instead of fetching the dimension directly, pass the expected +width and get the stride it will eventually have. + +Already before this patch, when the copied pixel end up on the main +thread and the dimension still doesn't match up, the frame will be +dropped. +--- + src/grd-session-vnc.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h +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, + + int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); + +-int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); ++int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, ++ int width); + + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); + +-- +2.35.3 diff --git a/sources b/sources index e04d4b6..6b3c9d8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-42.3.tar.xz) = 3545ec6b3f7f80315546d03ecb0c30ed554e879c743e1d7031ac65cf10e6d9d510553049393221be0be203a79b8be8bc96c0d3fe600be1ac3c0a1e24431ba945 +SHA512 (gnome-remote-desktop-43.alpha.tar.xz) = 1f885f5ddbf21821107f18a277c419864d0bb7a8b5c031282868318393febc97837e5e28324f667f7f4406d29d4309f412a537fca339668a9a215797a1685027 From 7b1e71ddd36d9139fb0e4513bf1e3d93b057b83b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 28 Jul 2022 21:07:19 +0200 Subject: [PATCH 049/102] README -> README.md --- gnome-remote-desktop.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index b1c0a6c..4c9f27e 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -78,7 +78,7 @@ GNOME desktop environment. %files -f %{name}.lang %license COPYING -%doc README +%doc README.md %{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon %{_userunitdir}/%{systemd_unit} From 97c9b9cc3b64af599cb063d87fc95bf9b63c0464 Mon Sep 17 00:00:00 2001 From: Tomas Popela Date: Fri, 29 Jul 2022 11:08:04 +0200 Subject: [PATCH 050/102] Don't enable RDP support in ELN/RHEL 9+ FreeRDP is built without server support in RHEL and ELN so we should disable the RDP there. Partial backport of a RHEL 9 change from https://gitlab.com/redhat/centos-stream/rpms/gnome-remote-desktop/-/commit/9a9f01d1 --- gnome-remote-desktop.spec | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 4c9f27e..a5b8100 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,9 +2,16 @@ %global tarball_version %%(echo %{version} | tr '~' '.') +# In RHEL/ELN FreeRDP is built without server support +%if 0%{?rhel} >= 9 +%global enable_rdp 0 +%else +%global enable_rdp 1 +%endif + Name: gnome-remote-desktop Version: 43~alpha -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -21,8 +28,11 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(ffnvcodec) +%if 0%{?enable_rdp} BuildRequires: pkgconfig(freerdp2) BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(winpr2) +%endif BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(glib-2.0) >= 2.68 BuildRequires: pkgconfig(gio-unix-2.0) @@ -34,7 +44,6 @@ BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(systemd) -BuildRequires: pkgconfig(winpr2) BuildRequires: pkgconfig(xkbcommon) Requires: pipewire%{?_isa} >= 0.3.0 @@ -52,7 +61,11 @@ GNOME desktop environment. %build %meson \ +%if 0%{?enable_rdp} -Drdp=true \ +%else + -Drdp=false \ +%endif -Dsystemd=true \ -Dvnc=true %meson_build @@ -84,11 +97,17 @@ GNOME desktop environment. %{_userunitdir}/%{systemd_unit} %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml +%if 0%{?enable_rdp} %{_datadir}/gnome-remote-desktop/ +%endif %{_mandir}/man1/grdctl.1* %changelog +* Fri Jul 29 2022 Tomas Popela - 43~alpha-2 +- FreeRDP is built without server support in RHEL and ELN so we should disable + the RDP there + * Thu Jul 28 2022 Jonas Ådahl - 43~alpha - Update to 43.alpha From 9e971ca11ca1019d7c68e137aa4015dd4a277635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 11 Aug 2022 15:54:34 +0200 Subject: [PATCH 051/102] Bump version to gnome-remote-desktop-43.beta --- .gitignore | 1 + gnome-remote-desktop.spec | 17 +++- gnutls-anontls.patch | 167 ++++++++++++++++++++------------------ sources | 2 +- 4 files changed, 103 insertions(+), 84 deletions(-) diff --git a/.gitignore b/.gitignore index 8b37a48..68a0128 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ /gnome-remote-desktop-42.2.tar.xz /gnome-remote-desktop-42.3.tar.xz /gnome-remote-desktop-43.alpha.tar.xz +/gnome-remote-desktop-43.beta.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a5b8100..10b936b 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,8 +10,8 @@ %endif Name: gnome-remote-desktop -Version: 43~alpha -Release: 2%{?dist} +Version: 43~beta +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -45,8 +45,18 @@ BuildRequires: pkgconfig(libsecret-1) BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(tss2-esys) +BuildRequires: pkgconfig(tss2-mu) +BuildRequires: pkgconfig(tss2-rc) +BuildRequires: pkgconfig(tss2-tcildr) Requires: pipewire%{?_isa} >= 0.3.0 +Requires: tss2-esys +Requires: tss2-mu +Requires: tss2-rc +Requires: tss2-tcildr +Requires: tss2-tcildr +Requires: tpm2-abrmd Obsoletes: vino < 3.22.0-21 @@ -104,6 +114,9 @@ GNOME desktop environment. %changelog +* Thu Aug 11 2022 Jonas Ådahl - 43~beta +- Update to 43.beta + * Fri Jul 29 2022 Tomas Popela - 43~alpha-2 - FreeRDP is built without server support in RHEL and ELN so we should disable the RDP there diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 3e5bd30..da8e9a4 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From a371957f58dc2d5022b2b145d15081e1b9cab629 Mon Sep 17 00:00:00 2001 +From b67e49d9e9d511b489c7ce8b4a477bf8825ccf3a 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 @@ -15,20 +15,20 @@ VNC connection. src/grd-session-vnc.h | 17 + src/grd-settings.c | 28 ++ src/grd-settings.h | 2 + - src/grd-vnc-server.c | 45 ++ + src/grd-vnc-server.c | 47 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 678 insertions(+), 26 deletions(-) + 11 files changed, 680 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 3e7c272..17d85d9 100644 +index 274452b..50fb6f2 100644 --- a/meson.build +++ b/meson.build -@@ -50,6 +50,7 @@ endif +@@ -63,6 +63,7 @@ endif if have_vnc libvncclient_dep = dependency('libvncclient') libvncserver_dep = dependency('libvncserver') @@ -37,12 +37,12 @@ index 3e7c272..17d85d9 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index e3ecc40..fa8dfb7 100644 +index 44b181d..de0d0f8 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h -@@ -33,4 +33,10 @@ typedef enum - GRD_VNC_AUTH_METHOD_PASSWORD - } GrdVncAuthMethod; +@@ -39,4 +39,10 @@ typedef enum + GRD_VNC_SCREEN_SHARE_MODE_EXTEND, + } GrdVncScreenShareMode; +typedef enum +{ @@ -52,7 +52,7 @@ index e3ecc40..fa8dfb7 100644 + #endif /* GRD_ENUMS_H */ diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index fbc66a4..fa694f0 100644 +index d310706..d145b8d 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -45,7 +45,9 @@ struct _GrdSessionVnc @@ -65,7 +65,7 @@ index fbc66a4..fa694f0 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -543,6 +545,12 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -586,6 +588,12 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -78,7 +78,7 @@ index fbc66a4..fa694f0 100644 int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width) -@@ -550,6 +558,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -593,6 +601,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, return width * BGRX_BYTES_PER_PIXEL; } @@ -97,7 +97,7 @@ index fbc66a4..fa694f0 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -593,44 +613,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -667,44 +687,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -208,7 +208,7 @@ index fbc66a4..fa694f0 100644 } return G_SOURCE_CONTINUE; -@@ -643,7 +704,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -717,7 +778,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,18 +220,21 @@ index fbc66a4..fa694f0 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -673,8 +737,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -748,11 +812,13 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); + session_vnc->vnc_server = vnc_server; session_vnc->connection = g_object_ref (connection); + settings = grd_context_get_settings (context); + session_vnc->screen_share_mode = grd_settings_get_vnc_screen_share_mode (settings); + + grd_session_vnc_grab_socket (session_vnc, vnc_socket_grab_func); grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -689,6 +755,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -767,6 +833,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -241,10 +244,10 @@ index fbc66a4..fa694f0 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 fcc508d..092d9dc 100644 +index be79cf4..ffc8d27 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, +@@ -37,6 +37,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, GRD, SESSION_VNC, GrdSession) @@ -254,7 +257,7 @@ index fcc508d..092d9dc 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -62,6 +65,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, +@@ -63,6 +66,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width); @@ -276,18 +279,18 @@ index fcc508d..092d9dc 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index dad5d57..7753186 100644 +index fc004fd..d4b4710 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c -@@ -69,6 +69,7 @@ struct _GrdSettings - gboolean view_only; +@@ -74,6 +74,7 @@ struct _GrdSettings GrdVncAuthMethod auth_method; int port; + GrdVncScreenShareMode screen_share_mode; + GrdVncEncryption encryption; } vnc; }; -@@ -259,6 +260,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 +303,7 @@ index dad5d57..7753186 100644 static void update_screen_share_mode (GrdSettings *settings) { -@@ -317,6 +324,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -313,6 +320,13 @@ update_vnc_auth_method (GrdSettings *settings) "auth-method"); } @@ -314,7 +317,7 @@ index dad5d57..7753186 100644 static void on_rdp_settings_changed (GSettings *rdp_settings, const char *key, -@@ -369,6 +383,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, +@@ -370,6 +384,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -325,8 +328,8 @@ index dad5d57..7753186 100644 + } } - static void -@@ -406,6 +425,8 @@ grd_settings_init (GrdSettings *settings) + GrdSettings * +@@ -419,6 +438,8 @@ grd_settings_init (GrdSettings *settings) settings->rdp.port = GRD_RDP_SERVER_PORT; settings->vnc.port = GRD_VNC_SERVER_PORT; @@ -335,7 +338,7 @@ index dad5d57..7753186 100644 } static void -@@ -471,4 +492,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -491,4 +512,11 @@ grd_settings_class_init (GrdSettingsClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -348,21 +351,21 @@ index dad5d57..7753186 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index 449894a..900d81e 100644 +index a000fb2..f889d6e 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -65,4 +65,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); +@@ -68,4 +68,6 @@ GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); - GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); + GrdVncScreenShareMode grd_settings_get_vnc_screen_share_mode (GrdSettings *settings); +GrdVncEncryption grd_settings_get_vnc_encryption (GrdSettings *settings); + #endif /* GRD_SETTINGS_H */ diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index 0b4322d..e8833f1 100644 +index 70efab1..9280dfb 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c -@@ -24,11 +24,13 @@ +@@ -24,12 +24,14 @@ #include "grd-vnc-server.h" @@ -371,11 +374,12 @@ index 0b4322d..e8833f1 100644 #include #include "grd-context.h" + #include "grd-debug.h" #include "grd-session-vnc.h" +#include "grd-vnc-tls.h" - enum + { @@ -129,6 +131,43 @@ on_incoming (GSocketService *service, return TRUE; } @@ -420,13 +424,14 @@ index 0b4322d..e8833f1 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -217,12 +256,18 @@ static void +@@ -216,11 +255,19 @@ grd_vnc_server_dispose (GObject *object) + static void grd_vnc_server_constructed (GObject *object) { - GrdVncServer *vnc_server = GRD_VNC_SERVER (object); ++ GrdVncServer *vnc_server = GRD_VNC_SERVER (object); + GrdSettings *settings = grd_context_get_settings (vnc_server->context); - - if (grd_context_get_debug_flags (vnc_server->context) & GRD_DEBUG_VNC) ++ + if (grd_get_debug_flags () & GRD_DEBUG_VNC) rfbLogEnable (1); else rfbLogEnable (0); @@ -924,10 +929,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 3def890..31f11fa 100644 +index 6506d92..47dce4f 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -115,10 +115,13 @@ if have_vnc +@@ -148,10 +148,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -942,11 +947,11 @@ index 3def890..31f11fa 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 6ea4875..4d36b5d 100644 +index 5b39a5d..c6dc2ab 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -@@ -90,5 +90,15 @@ - * password - by requiring the remote client to provide a known password +@@ -116,5 +116,15 @@ + configuration updates. + @@ -962,10 +967,10 @@ index 6ea4875..4d36b5d 100644 -- -2.35.3 +2.37.1 -From 817a3712b076a0054e0ee78e9bf0b31d203a954d Mon Sep 17 00:00:00 2001 +From 622d00773d059ebe96498fb3d12f2ca7a7579d6b 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 +983,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 fa694f0..8173897 100644 +index d145b8d..e7a77d5 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -41,14 +41,27 @@ @@ -1009,7 +1014,7 @@ index fa694f0..8173897 100644 rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -77,7 +90,7 @@ struct _GrdSessionVnc +@@ -79,7 +92,7 @@ struct _GrdSessionVnc G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION) static void @@ -1018,7 +1023,7 @@ index fa694f0..8173897 100644 static gboolean close_session_idle (gpointer user_data); -@@ -236,7 +249,8 @@ handle_client_gone (rfbClientPtr rfb_client) +@@ -246,7 +259,8 @@ handle_client_gone (rfbClientPtr rfb_client) g_debug ("VNC client gone"); @@ -1028,7 +1033,7 @@ index fa694f0..8173897 100644 maybe_queue_close_session_idle (session_vnc); session_vnc->rfb_client = NULL; } -@@ -305,7 +319,7 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -315,7 +329,7 @@ handle_new_client (rfbClientPtr rfb_client) session_vnc->prompt_cancellable, prompt_response_callback, session_vnc); @@ -1037,7 +1042,7 @@ index fa694f0..8173897 100644 return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -536,7 +550,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -579,7 +593,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1046,7 +1051,7 @@ index fa694f0..8173897 100644 return TRUE; } else -@@ -725,6 +739,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -799,6 +813,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_unref); } @@ -1083,7 +1088,7 @@ index fa694f0..8173897 100644 GrdSessionVnc * grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection) -@@ -742,6 +786,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -820,6 +864,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 +1096,7 @@ index fa694f0..8173897 100644 init_vnc_session (session_vnc); -@@ -771,7 +816,7 @@ grd_session_vnc_stop (GrdSession *session) +@@ -849,7 +894,7 @@ grd_session_vnc_stop (GrdSession *session) g_clear_object (&session_vnc->pipewire_stream); @@ -1100,7 +1105,7 @@ index fa694f0..8173897 100644 g_clear_object (&session_vnc->connection); g_clear_object (&session_vnc->clipboard_vnc); -@@ -831,8 +876,8 @@ grd_session_vnc_stream_ready (GrdSession *session, +@@ -936,8 +981,8 @@ grd_session_vnc_stream_ready (GrdSession *session, G_CALLBACK (on_pipewire_stream_closed), session_vnc); @@ -1111,7 +1116,7 @@ index fa694f0..8173897 100644 } static void -@@ -853,4 +898,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) +@@ -958,4 +1003,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; @@ -1130,10 +1135,10 @@ index fa694f0..8173897 100644 + G_TYPE_NONE, 0); } -- -2.35.3 +2.37.1 -From 9581bf42a2a03cc1b80c2d0b61304e2b1594fa81 Mon Sep 17 00:00:00 2001 +From 029ee7d275e57c573a726b051f6da647a9cbaaa1 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 +1151,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 8173897..39d3ead 100644 +index e7a77d5..67308a2 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -675,6 +675,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -749,6 +749,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1171,7 +1176,7 @@ index 8173897..39d3ead 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -691,16 +706,7 @@ handle_socket_data (GSocket *socket, +@@ -765,16 +780,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1190,10 +1195,10 @@ index 8173897..39d3ead 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 092d9dc..e9eced0 100644 +index ffc8d27..a86d61d 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, +@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1203,10 +1208,10 @@ index 092d9dc..e9eced0 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.35.3 +2.37.1 -From 3c10a7ba8514a4f5f9b7af2556330ba00db576ce Mon Sep 17 00:00:00 2001 +From 797b5827121177cf13c6c60d0eed3af41aeec929 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 +1285,10 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.35.3 +2.37.1 -From 1f5ba28f773b3b6b5f238df93c27dec8402684d0 Mon Sep 17 00:00:00 2001 +From bf2b7ef3557fb128b1ef580f14c203a8e7073ab2 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,10 +1305,10 @@ 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 e9eced0..8a916b7 100644 +index a86d61d..5db388b 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, +@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1450,10 +1455,10 @@ index ac6c35f..312b6b9 100644 } -- -2.35.3 +2.37.1 -From c6ed5cc1fb612099eca207297dcb80a2c9a77112 Mon Sep 17 00:00:00 2001 +From 0cb5e3cc2dd4ce71b744cf4a84175880f89cca1e 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 +1477,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 39d3ead..6d0e5e2 100644 +index 67308a2..39b3a56 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -95,11 +95,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); +@@ -97,11 +97,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); static gboolean close_session_idle (gpointer user_data); @@ -1487,7 +1492,7 @@ index 39d3ead..6d0e5e2 100644 static void swap_uint8 (uint8_t *a, uint8_t *b) -@@ -322,7 +317,6 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -332,7 +327,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,9 +1500,9 @@ index 39d3ead..6d0e5e2 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -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); +@@ -697,6 +691,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) + session_vnc->monitor_config->connectors = connectors; + } + rfb_screen->passwordCheck = check_rfb_password; + @@ -1505,10 +1510,10 @@ index 39d3ead..6d0e5e2 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.35.3 +2.37.1 -From b7420dcf10c92974efa17d8584f7a4d2773dd425 Mon Sep 17 00:00:00 2001 +From bcebb14b9bb6cd4de9e9996021d6957cd1cfd873 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,10 +1531,10 @@ dropped. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 8a916b7..e85f31e 100644 +index 5db388b..c4f4e8d 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, +@@ -68,7 +68,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); @@ -1540,5 +1545,5 @@ index 8a916b7..e85f31e 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.35.3 +2.37.1 diff --git a/sources b/sources index 6b3c9d8..0e2536b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-43.alpha.tar.xz) = 1f885f5ddbf21821107f18a277c419864d0bb7a8b5c031282868318393febc97837e5e28324f667f7f4406d29d4309f412a537fca339668a9a215797a1685027 +SHA512 (gnome-remote-desktop-43.beta.tar.xz) = 8609e30556cb1387df1f6ffe46338e20194f1f02da56e138be03d2289cc0806d492a601d9c83f0804cd445ae02b3e1c772bd22f572d78846268d7f72f08b3f09 From 2607ef7a5f73de3da91e326fdaab3205af66dbdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 11 Aug 2022 16:04:25 +0200 Subject: [PATCH 052/102] Fix typo tss2-tcildr -> tss2-tctildr --- gnome-remote-desktop.spec | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 10b936b..5e7890d 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -48,14 +48,13 @@ BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(tss2-esys) BuildRequires: pkgconfig(tss2-mu) BuildRequires: pkgconfig(tss2-rc) -BuildRequires: pkgconfig(tss2-tcildr) +BuildRequires: pkgconfig(tss2-tctildr) Requires: pipewire%{?_isa} >= 0.3.0 Requires: tss2-esys Requires: tss2-mu Requires: tss2-rc -Requires: tss2-tcildr -Requires: tss2-tcildr +Requires: tss2-tctildr Requires: tpm2-abrmd Obsoletes: vino < 3.22.0-21 From 8f239811a858e9e07aadbd256b7bba97180148c5 Mon Sep 17 00:00:00 2001 From: Simone Caronni Date: Mon, 15 Aug 2022 15:37:43 +0200 Subject: [PATCH 053/102] Rebuild for updated FreeRDP --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 5e7890d..5f61878 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,7 +11,7 @@ Name: gnome-remote-desktop Version: 43~beta -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Mon Aug 15 2022 Simone Caronni - 43~beta-2 +- Rebuild for updated FreeRDP. + * Thu Aug 11 2022 Jonas Ådahl - 43~beta - Update to 43.beta From 74e6a3b6c1ebc5557504e01804f685547754126d Mon Sep 17 00:00:00 2001 From: Simone Caronni Date: Mon, 15 Aug 2022 15:58:18 +0200 Subject: [PATCH 054/102] Add missing build requirement --- gnome-remote-desktop.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 5f61878..39378c4 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -29,6 +29,7 @@ BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(ffnvcodec) %if 0%{?enable_rdp} +BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(freerdp2) BuildRequires: pkgconfig(fuse3) BuildRequires: pkgconfig(winpr2) From 2691874439ebed32616969ae981bdd2213bf9873 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Tue, 16 Aug 2022 13:44:46 +0200 Subject: [PATCH 055/102] Avoid manual requires on tss2* and rely on automatic soname deps instead This fixes the package to be installable again as the requires were wrong. https://pagure.io/releng/failed-composes/issue/3849#comment-810808 --- gnome-remote-desktop.spec | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 39378c4..12bd1aa 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,7 +11,7 @@ Name: gnome-remote-desktop Version: 43~beta -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -52,10 +52,6 @@ BuildRequires: pkgconfig(tss2-rc) BuildRequires: pkgconfig(tss2-tctildr) Requires: pipewire%{?_isa} >= 0.3.0 -Requires: tss2-esys -Requires: tss2-mu -Requires: tss2-rc -Requires: tss2-tctildr Requires: tpm2-abrmd Obsoletes: vino < 3.22.0-21 @@ -114,6 +110,9 @@ GNOME desktop environment. %changelog +* Tue Aug 16 2022 Kalev Lember - 43~beta-3 +- Avoid manual requires on tss2* and rely on automatic soname deps instead + * Mon Aug 15 2022 Simone Caronni - 43~beta-2 - Rebuild for updated FreeRDP. From ecba35aba172effca5a0af05938ea18ebd707b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 18 Aug 2022 15:46:19 +0200 Subject: [PATCH 056/102] Drop dependency on tpm2-abrmd It should be handled by the kernel already. --- gnome-remote-desktop.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 12bd1aa..39175ae 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,7 +11,7 @@ Name: gnome-remote-desktop Version: 43~beta -Release: 3%{?dist} +Release: 4%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -52,7 +52,6 @@ BuildRequires: pkgconfig(tss2-rc) BuildRequires: pkgconfig(tss2-tctildr) Requires: pipewire%{?_isa} >= 0.3.0 -Requires: tpm2-abrmd Obsoletes: vino < 3.22.0-21 @@ -110,6 +109,9 @@ GNOME desktop environment. %changelog +* Thu Aug 18 2022 Jonas Ådahl - 43~beta-4 +- Drop dependency on tpm2-abrmd + * Tue Aug 16 2022 Kalev Lember - 43~beta-3 - Avoid manual requires on tss2* and rely on automatic soname deps instead From 01e33994cfb58c5c0a2cc42357ad704499f084f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 20 Sep 2022 16:00:30 +0200 Subject: [PATCH 057/102] Bump version to 43.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- gnutls-anontls.patch | 28 ++++++++++++++-------------- sources | 2 +- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 68a0128..e55fda8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /gnome-remote-desktop-42.3.tar.xz /gnome-remote-desktop-43.alpha.tar.xz /gnome-remote-desktop-43.beta.tar.xz +/gnome-remote-desktop-43.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 39175ae..8519506 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,8 +10,8 @@ %endif Name: gnome-remote-desktop -Version: 43~beta -Release: 4%{?dist} +Version: 43.0 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -109,6 +109,9 @@ GNOME desktop environment. %changelog +* Tue Sep 20 2022 Jonas Ådahl - 43.0 +- Update to 43.0 + * Thu Aug 18 2022 Jonas Ådahl - 43~beta-4 - Drop dependency on tpm2-abrmd diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index da8e9a4..12f9dff 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From b67e49d9e9d511b489c7ce8b4a477bf8825ccf3a Mon Sep 17 00:00:00 2001 +From adf2ee8c9745b3aecd2b909de67b03b178b06f4c 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,7 +25,7 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 274452b..50fb6f2 100644 +index 70a3ef3..2a92588 100644 --- a/meson.build +++ b/meson.build @@ -63,6 +63,7 @@ endif @@ -279,7 +279,7 @@ index be79cf4..ffc8d27 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings.c b/src/grd-settings.c -index fc004fd..d4b4710 100644 +index a95628f..15d2ad2 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -74,6 +74,7 @@ struct _GrdSettings @@ -351,12 +351,12 @@ index fc004fd..d4b4710 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index a000fb2..f889d6e 100644 +index 1fe6419..b45f839 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -68,4 +68,6 @@ GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); +@@ -68,4 +68,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); - GrdVncScreenShareMode grd_settings_get_vnc_screen_share_mode (GrdSettings *settings); + GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); +GrdVncEncryption grd_settings_get_vnc_encryption (GrdSettings *settings); + @@ -929,10 +929,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 6506d92..47dce4f 100644 +index 9f9b9b7..bc82252 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -148,10 +148,13 @@ if have_vnc +@@ -153,10 +153,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -970,7 +970,7 @@ index 5b39a5d..c6dc2ab 100644 2.37.1 -From 622d00773d059ebe96498fb3d12f2ca7a7579d6b Mon Sep 17 00:00:00 2001 +From f91f9a17e8277f15a44720eb180bf22bd91307c6 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 @@ -1138,7 +1138,7 @@ index d145b8d..e7a77d5 100644 2.37.1 -From 029ee7d275e57c573a726b051f6da647a9cbaaa1 Mon Sep 17 00:00:00 2001 +From 5856f0b5da2b3f71d8424db96e777001a8250137 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 @@ -1211,7 +1211,7 @@ index ffc8d27..a86d61d 100644 2.37.1 -From 797b5827121177cf13c6c60d0eed3af41aeec929 Mon Sep 17 00:00:00 2001 +From b8a59836a2348ab10fed0ff1590e12690ea427de 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 @@ -1288,7 +1288,7 @@ index ec4758e..ac6c35f 100644 2.37.1 -From bf2b7ef3557fb128b1ef580f14c203a8e7073ab2 Mon Sep 17 00:00:00 2001 +From 26a824eede76c1d06ac6eb11cb0dd016ec66c739 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 @@ -1458,7 +1458,7 @@ index ac6c35f..312b6b9 100644 2.37.1 -From 0cb5e3cc2dd4ce71b744cf4a84175880f89cca1e Mon Sep 17 00:00:00 2001 +From 879b9a26595c338cee40aa919596e439be910f4b 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 @@ -1513,7 +1513,7 @@ index 67308a2..39b3a56 100644 2.37.1 -From bcebb14b9bb6cd4de9e9996021d6957cd1cfd873 Mon Sep 17 00:00:00 2001 +From 7b0523bd3f6981225d2614956f297a698e846c1a 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 diff --git a/sources b/sources index 0e2536b..1cf547a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-43.beta.tar.xz) = 8609e30556cb1387df1f6ffe46338e20194f1f02da56e138be03d2289cc0806d492a601d9c83f0804cd445ae02b3e1c772bd22f572d78846268d7f72f08b3f09 +SHA512 (gnome-remote-desktop-43.0.tar.xz) = d774d85ef15b02f6c668806e8d7b036c3063decbec81a8cf253aaa01e13a49d802f4338e677744867e2e1ab3dc02ed30c8d8edbca2a9c428b783d5a4cdd8d110 From 94af2b84e6b2c24f6ce2684ec987c5d484ed5030 Mon Sep 17 00:00:00 2001 From: David King Date: Thu, 27 Oct 2022 20:45:00 +0100 Subject: [PATCH 058/102] Update to 43.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e55fda8..43d07a2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /gnome-remote-desktop-43.alpha.tar.xz /gnome-remote-desktop-43.beta.tar.xz /gnome-remote-desktop-43.0.tar.xz +/gnome-remote-desktop-43.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 8519506..f37bec6 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,7 +10,7 @@ %endif Name: gnome-remote-desktop -Version: 43.0 +Version: 43.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -109,6 +109,9 @@ GNOME desktop environment. %changelog +* Thu Oct 27 2022 David King - 43.1-1 +- Update to 43.1 + * Tue Sep 20 2022 Jonas Ådahl - 43.0 - Update to 43.0 diff --git a/sources b/sources index 1cf547a..9f13300 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-43.0.tar.xz) = d774d85ef15b02f6c668806e8d7b036c3063decbec81a8cf253aaa01e13a49d802f4338e677744867e2e1ab3dc02ed30c8d8edbca2a9c428b783d5a4cdd8d110 +SHA512 (gnome-remote-desktop-43.1.tar.xz) = 5e0164092da0fdb4877c8a1b40f1df609315390468522efaaad8f30f5c8e29111b021c1a7f3b8ce25627dfbe7937a4876d6673a816d81fdc191d30d4553a0596 From cd6eb69cf7b37bd166de5369d1e8c114b1e76db8 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Tue, 8 Nov 2022 09:44:49 -0500 Subject: [PATCH 059/102] Fix build on RHEL 9+/ELN Signed-off-by: Stephen Gallagher --- gnome-remote-desktop.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index f37bec6..a84af89 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,7 +11,7 @@ Name: gnome-remote-desktop Version: 43.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -68,8 +68,10 @@ GNOME desktop environment. %meson \ %if 0%{?enable_rdp} -Drdp=true \ + -Dfdk_aac=true \ %else -Drdp=false \ + -Dfdk_aac=false \ %endif -Dsystemd=true \ -Dvnc=true @@ -109,6 +111,9 @@ GNOME desktop environment. %changelog +* Tue Nov 08 2022 Stephen Gallagher - 43.1-2 +- Fix build on RHEL 9+/ELN + * Thu Oct 27 2022 David King - 43.1-1 - Update to 43.1 From a1879e78725ae732d81e39e12a8b99e9b2e503a0 Mon Sep 17 00:00:00 2001 From: David King Date: Thu, 8 Dec 2022 20:56:55 +0000 Subject: [PATCH 060/102] Update to 43.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 43d07a2..e8a8c2b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /gnome-remote-desktop-43.beta.tar.xz /gnome-remote-desktop-43.0.tar.xz /gnome-remote-desktop-43.1.tar.xz +/gnome-remote-desktop-43.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index a84af89..efb5341 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,8 +10,8 @@ %endif Name: gnome-remote-desktop -Version: 43.1 -Release: 2%{?dist} +Version: 43.2 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -111,6 +111,9 @@ GNOME desktop environment. %changelog +* Thu Dec 08 2022 David King - 43.2-1 +- Update to 43.2 + * Tue Nov 08 2022 Stephen Gallagher - 43.1-2 - Fix build on RHEL 9+/ELN diff --git a/sources b/sources index 9f13300..a820d04 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-43.1.tar.xz) = 5e0164092da0fdb4877c8a1b40f1df609315390468522efaaad8f30f5c8e29111b021c1a7f3b8ce25627dfbe7937a4876d6673a816d81fdc191d30d4553a0596 +SHA512 (gnome-remote-desktop-43.2.tar.xz) = e7e9c36e04a7273cb1700859d59ab8130bca7103c3def7f51a6df31b98f6021b9ceb15d2f9e71fef2464141dcd01d467e126731028d7dd6b6ec843dd52b1e8d4 From 1b80752d7eb73652fad7a0e66aa1ba4ab89b9159 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 05:33:34 +0000 Subject: [PATCH 061/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index efb5341..6bf3391 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,7 +11,7 @@ Name: gnome-remote-desktop Version: 43.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -111,6 +111,9 @@ GNOME desktop environment. %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 43.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Dec 08 2022 David King - 43.2-1 - Update to 43.2 From 5317f83d70eb868b634a6d95a8378be8da5cb8a5 Mon Sep 17 00:00:00 2001 From: David King Date: Mon, 6 Feb 2023 18:20:57 +0000 Subject: [PATCH 062/102] Update to 44.alpha --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index e8a8c2b..74ec655 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /gnome-remote-desktop-43.0.tar.xz /gnome-remote-desktop-43.1.tar.xz /gnome-remote-desktop-43.2.tar.xz +/gnome-remote-desktop-44.alpha.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6bf3391..34120db 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,8 +10,8 @@ %endif Name: gnome-remote-desktop -Version: 43.2 -Release: 2%{?dist} +Version: 44~alpha +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPLv2+ @@ -111,6 +111,9 @@ GNOME desktop environment. %changelog +* Mon Feb 06 2023 David King - 44~alpha-1 +- Update to 44.alpha + * Thu Jan 19 2023 Fedora Release Engineering - 43.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index a820d04..52220e3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-43.2.tar.xz) = e7e9c36e04a7273cb1700859d59ab8130bca7103c3def7f51a6df31b98f6021b9ceb15d2f9e71fef2464141dcd01d467e126731028d7dd6b6ec843dd52b1e8d4 +SHA512 (gnome-remote-desktop-44.alpha.tar.xz) = 253a00e4d7f28b577a1818607eb872572ffbd915cc3392f76d5838d3161ad55ddcbc9301eef9dbc91d2a2408fd4d9f73cd99e96c4b44be2567926c7a2ccd50c9 From cbd043b91cf2c30579fd427980bb80c00909b1e5 Mon Sep 17 00:00:00 2001 From: David King Date: Sun, 5 Mar 2023 08:01:56 +0000 Subject: [PATCH 063/102] Update to 44.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 74ec655..1252955 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /gnome-remote-desktop-43.1.tar.xz /gnome-remote-desktop-43.2.tar.xz /gnome-remote-desktop-44.alpha.tar.xz +/gnome-remote-desktop-44.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 34120db..5d08998 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,13 +10,13 @@ %endif Name: gnome-remote-desktop -Version: 44~alpha +Version: 44~rc Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service -License: GPLv2+ +License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/43/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/44/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -111,6 +111,9 @@ GNOME desktop environment. %changelog +* Sun Mar 05 2023 David King - 44~rc-1 +- Update to 44.rc + * Mon Feb 06 2023 David King - 44~alpha-1 - Update to 44.alpha diff --git a/sources b/sources index 52220e3..3e13436 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-44.alpha.tar.xz) = 253a00e4d7f28b577a1818607eb872572ffbd915cc3392f76d5838d3161ad55ddcbc9301eef9dbc91d2a2408fd4d9f73cd99e96c4b44be2567926c7a2ccd50c9 +SHA512 (gnome-remote-desktop-44.rc.tar.xz) = ed33a3add26ada4b8d15d3e0e22cb14ac87c6779c5c7ad89db5ceacae457b4967460a40994c38ebf59b194c23c6d5a94e1b8719ad60d582961091b7ca9ad5ae2 From 8f7f0c37005176f01ef125338f192306d01e25c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 16 Mar 2023 11:25:06 +0100 Subject: [PATCH 064/102] Enable RDP in ELN --- gnome-remote-desktop.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 5d08998..0fba2f3 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -3,7 +3,9 @@ %global tarball_version %%(echo %{version} | tr '~' '.') # In RHEL/ELN FreeRDP is built without server support -%if 0%{?rhel} >= 9 +%if 0%{?rhel} >= 10 +%global enable_rdp 1 +%elif 0%{?rhel} >= 9 %global enable_rdp 0 %else %global enable_rdp 1 @@ -11,7 +13,7 @@ Name: gnome-remote-desktop Version: 44~rc -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -111,6 +113,9 @@ GNOME desktop environment. %changelog +* Thu Mar 16 2023 Jonas Ådahl - 44~rc-2 +- Enable RDP in ELN + * Sun Mar 05 2023 David King - 44~rc-1 - Update to 44.rc From 8d37b5f88dddd61639de0d89b7b1b2fe632166f1 Mon Sep 17 00:00:00 2001 From: David King Date: Sun, 19 Mar 2023 15:03:50 +0000 Subject: [PATCH 065/102] Update to 44.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 1252955..c313f9c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /gnome-remote-desktop-43.2.tar.xz /gnome-remote-desktop-44.alpha.tar.xz /gnome-remote-desktop-44.rc.tar.xz +/gnome-remote-desktop-44.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 0fba2f3..dbe209b 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,8 +12,8 @@ %endif Name: gnome-remote-desktop -Version: 44~rc -Release: 2%{?dist} +Version: 44.0 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Sun Mar 19 2023 David King - 44.0-1 +- Update to 44.0 + * Thu Mar 16 2023 Jonas Ådahl - 44~rc-2 - Enable RDP in ELN diff --git a/sources b/sources index 3e13436..84f5b83 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-44.rc.tar.xz) = ed33a3add26ada4b8d15d3e0e22cb14ac87c6779c5c7ad89db5ceacae457b4967460a40994c38ebf59b194c23c6d5a94e1b8719ad60d582961091b7ca9ad5ae2 +SHA512 (gnome-remote-desktop-44.0.tar.xz) = 6ca62126790be4498806aeb61c02edf68f113aa1ec53ab73f8bd822b10f5957b32a67d5a23f7ba023db117a8b2fe8fb3be87ea72bca1c22dedde00e94677549e From 144ec16b0a2c33e4c3cd2b0b56e0fafdd212812d Mon Sep 17 00:00:00 2001 From: David King Date: Mon, 24 Apr 2023 12:53:32 +0100 Subject: [PATCH 066/102] Update to 44.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c313f9c..e61fa50 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /gnome-remote-desktop-44.alpha.tar.xz /gnome-remote-desktop-44.rc.tar.xz /gnome-remote-desktop-44.0.tar.xz +/gnome-remote-desktop-44.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index dbe209b..c82a87e 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %endif Name: gnome-remote-desktop -Version: 44.0 +Version: 44.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Mon Apr 24 2023 David King - 44.1-1 +- Update to 44.1 + * Sun Mar 19 2023 David King - 44.0-1 - Update to 44.0 diff --git a/sources b/sources index 84f5b83..d113496 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-44.0.tar.xz) = 6ca62126790be4498806aeb61c02edf68f113aa1ec53ab73f8bd822b10f5957b32a67d5a23f7ba023db117a8b2fe8fb3be87ea72bca1c22dedde00e94677549e +SHA512 (gnome-remote-desktop-44.1.tar.xz) = bb1d8a9ee7868309beb84d01c35e17c92bd26ac855df00caaa780796fe403842ee00462c4c222bf16cd3b98752106d34bfca55c98d634e712a5b561c7ace5285 From ee4a2cc6c77ba2cdfb86de9f93e4f922bd4f3363 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 31 May 2023 14:25:44 +0200 Subject: [PATCH 067/102] Update to 44.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e61fa50..33798bc 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /gnome-remote-desktop-44.rc.tar.xz /gnome-remote-desktop-44.0.tar.xz /gnome-remote-desktop-44.1.tar.xz +/gnome-remote-desktop-44.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index c82a87e..143ac47 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %endif Name: gnome-remote-desktop -Version: 44.1 +Version: 44.2 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Wed May 31 2023 Kalev Lember - 44.2-1 +- Update to 44.2 + * Mon Apr 24 2023 David King - 44.1-1 - Update to 44.1 diff --git a/sources b/sources index d113496..bf32cbd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-44.1.tar.xz) = bb1d8a9ee7868309beb84d01c35e17c92bd26ac855df00caaa780796fe403842ee00462c4c222bf16cd3b98752106d34bfca55c98d634e712a5b561c7ace5285 +SHA512 (gnome-remote-desktop-44.2.tar.xz) = 2e310cd926e0ed6fd28406a56e4d4ba239b9817b035231f66b648a98e08a5c7a7d810a2b786292aa39a7c67ca17af3de92dce4a6031a4f72166d667b8f498bd0 From bb1bf212e8965743ee29517c6f7ec6ef4724660c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 5 Jul 2023 15:00:48 +0200 Subject: [PATCH 068/102] Update to 45.alpha --- .gitignore | 1 + gnome-remote-desktop.spec | 5 +- gnutls-anontls.patch | 192 +++++++++++++++++++++----------------- sources | 2 +- 4 files changed, 110 insertions(+), 90 deletions(-) diff --git a/.gitignore b/.gitignore index 33798bc..ca8e6fb 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /gnome-remote-desktop-44.0.tar.xz /gnome-remote-desktop-44.1.tar.xz /gnome-remote-desktop-44.2.tar.xz +/gnome-remote-desktop-45.alpha.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 143ac47..598eddc 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %endif Name: gnome-remote-desktop -Version: 44.2 +Version: 45.alpha Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Wed Jul 05 2023 Jonas Ådahl - 45~alpha-1 +- Update to 45.alpha + * Wed May 31 2023 Kalev Lember - 44.2-1 - Update to 44.2 diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 12f9dff..bbbed42 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From adf2ee8c9745b3aecd2b909de67b03b178b06f4c Mon Sep 17 00:00:00 2001 +From f2978ab58bc13a1d4bc51f5c73c23a63f07f8881 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 @@ -13,19 +13,19 @@ VNC connection. src/grd-enums.h | 6 + src/grd-session-vnc.c | 120 ++++- src/grd-session-vnc.h | 17 + - src/grd-settings.c | 28 ++ - src/grd-settings.h | 2 + + src/grd-settings-user.c | 28 ++ + src/grd-settings.h | 4 + src/grd-vnc-server.c | 47 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 680 insertions(+), 26 deletions(-) + 11 files changed, 682 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 70a3ef3..2a92588 100644 +index af607a47..a827c356 100644 --- a/meson.build +++ b/meson.build @@ -63,6 +63,7 @@ endif @@ -37,7 +37,7 @@ index 70a3ef3..2a92588 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index 44b181d..de0d0f8 100644 +index 44b181d6..de0d0f86 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h @@ -39,4 +39,10 @@ typedef enum @@ -52,7 +52,7 @@ index 44b181d..de0d0f8 100644 + #endif /* GRD_ENUMS_H */ diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index d310706..d145b8d 100644 +index de1c26d7..a82952ae 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -45,7 +45,9 @@ struct _GrdSessionVnc @@ -65,7 +65,7 @@ index d310706..d145b8d 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -586,6 +588,12 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -588,6 +590,12 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -78,7 +78,7 @@ index d310706..d145b8d 100644 int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width) -@@ -593,6 +601,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -595,6 +603,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, return width * BGRX_BYTES_PER_PIXEL; } @@ -97,7 +97,7 @@ index d310706..d145b8d 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -667,44 +687,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -669,44 +689,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -208,7 +208,7 @@ index d310706..d145b8d 100644 } return G_SOURCE_CONTINUE; -@@ -717,7 +778,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -719,7 +780,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 d310706..d145b8d 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -748,11 +812,13 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -750,11 +814,13 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -234,7 +234,7 @@ index d310706..d145b8d 100644 grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -767,6 +833,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -769,6 +835,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -244,7 +244,7 @@ index d310706..d145b8d 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 be79cf4..ffc8d27 100644 +index be79cf4a..ffc8d27a 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -37,6 +37,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, @@ -278,46 +278,46 @@ index be79cf4..ffc8d27 100644 +GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); + #endif /* GRD_SESSION_VNC_H */ -diff --git a/src/grd-settings.c b/src/grd-settings.c -index a95628f..15d2ad2 100644 ---- a/src/grd-settings.c -+++ b/src/grd-settings.c -@@ -74,6 +74,7 @@ struct _GrdSettings - GrdVncAuthMethod auth_method; - int port; +diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c +index 42bf31dd..5f6a87dd 100644 +--- a/src/grd-settings-user.c ++++ b/src/grd-settings-user.c +@@ -66,6 +66,7 @@ struct _GrdSettingsUser + gboolean view_only; GrdVncScreenShareMode screen_share_mode; + GrdVncAuthMethod auth_method; + GrdVncEncryption encryption; } vnc; }; -@@ -248,6 +249,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) - return settings->vnc.auth_method; - } - -+GrdVncEncryption -+grd_settings_get_vnc_encryption (GrdSettings *settings) -+{ -+ return settings->vnc.encryption; -+} -+ - static void - update_screen_share_mode (GrdSettings *settings) - { -@@ -313,6 +320,13 @@ update_vnc_auth_method (GrdSettings *settings) +@@ -138,6 +139,13 @@ update_vnc_auth_method (GrdSettingsUser *settings) "auth-method"); } +static void -+update_vnc_encryption (GrdSettings *settings) ++update_vnc_encryption (GrdSettingsUser *settings) +{ + settings->vnc.encryption = g_settings_get_flags (settings->vnc.settings, + "encryption"); +} + - static void - on_rdp_settings_changed (GSettings *rdp_settings, - const char *key, -@@ -370,6 +384,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, + static gboolean + grd_settings_user_is_rdp_enabled (GrdSettings *settings) + { +@@ -192,6 +200,12 @@ grd_settings_user_get_vnc_auth_method (GrdSettings *settings) + return GRD_SETTINGS_USER (settings)->vnc.auth_method; + } + ++static GrdVncEncryption ++grd_settings_user_get_encryption (GrdSettings *settings) ++{ ++ return GRD_SETTINGS_USER (settings)->vnc.encryption; ++} ++ + GrdSettingsUser * + grd_settings_user_new (GrdContext *context) + { +@@ -273,6 +287,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, update_vnc_auth_method (settings); g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); } @@ -328,17 +328,24 @@ index a95628f..15d2ad2 100644 + } } - GrdSettings * -@@ -419,6 +438,8 @@ grd_settings_init (GrdSettings *settings) - - settings->rdp.port = GRD_RDP_SERVER_PORT; - settings->vnc.port = GRD_VNC_SERVER_PORT; -+ + static void +@@ -294,6 +313,7 @@ grd_settings_user_init (GrdSettingsUser *settings) + update_vnc_view_only (settings); + update_vnc_screen_share_mode (settings); + update_vnc_auth_method (settings); + update_vnc_encryption (settings); } static void -@@ -491,4 +512,11 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -313,6 +333,7 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass) + settings_class->get_rdp_server_key = grd_settings_user_get_rdp_server_key; + settings_class->get_rdp_server_cert = grd_settings_user_get_rdp_server_cert; + settings_class->get_vnc_auth_method = grd_settings_user_get_vnc_auth_method; ++ settings_class->get_vnc_encryption = grd_settings_user_get_encryption; + + signals[RDP_ENABLED_CHANGED] = + g_signal_new ("rdp-enabled-changed", +@@ -377,4 +398,11 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -351,10 +358,19 @@ index a95628f..15d2ad2 100644 + G_TYPE_NONE, 0); } diff --git a/src/grd-settings.h b/src/grd-settings.h -index 1fe6419..b45f839 100644 +index 9e36ff9d..51f0f1c3 100644 --- a/src/grd-settings.h +++ b/src/grd-settings.h -@@ -68,4 +68,6 @@ gboolean grd_settings_get_vnc_view_only (GrdSettings *settings); +@@ -56,6 +56,8 @@ struct _GrdSettingsClass + char * (* get_rdp_server_key) (GrdSettings *settings); + + GrdVncAuthMethod (* get_vnc_auth_method) (GrdSettings *settings); ++ ++ GrdVncEncryption (* get_vnc_encryption) (GrdSettings *settings); + }; + + int grd_settings_get_rdp_port (GrdSettings *settings); +@@ -94,4 +96,6 @@ char *grd_settings_get_rdp_server_key (GrdSettings *settings); GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); @@ -362,7 +378,7 @@ index 1fe6419..b45f839 100644 + #endif /* GRD_SETTINGS_H */ diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index 70efab1..9280dfb 100644 +index 70efab12..9280dfb5 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,12 +24,14 @@ @@ -446,7 +462,7 @@ index 70efab1..9280dfb 100644 diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c new file mode 100644 -index 0000000..ec4758e +index 00000000..ec4758e0 --- /dev/null +++ b/src/grd-vnc-tls.c @@ -0,0 +1,444 @@ @@ -896,7 +912,7 @@ index 0000000..ec4758e +} diff --git a/src/grd-vnc-tls.h b/src/grd-vnc-tls.h new file mode 100644 -index 0000000..135ef8c +index 00000000..135ef8c7 --- /dev/null +++ b/src/grd-vnc-tls.h @@ -0,0 +1,28 @@ @@ -929,10 +945,10 @@ index 0000000..135ef8c + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 9f9b9b7..bc82252 100644 +index ac07455b..654caccb 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -153,10 +153,13 @@ if have_vnc +@@ -161,10 +161,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -947,7 +963,7 @@ index 9f9b9b7..bc82252 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 5b39a5d..c6dc2ab 100644 +index 5b39a5de..c6dc2ab5 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in @@ -116,5 +116,15 @@ @@ -967,10 +983,10 @@ index 5b39a5d..c6dc2ab 100644 -- -2.37.1 +2.40.0 -From f91f9a17e8277f15a44720eb180bf22bd91307c6 Mon Sep 17 00:00:00 2001 +From b8cfd8e5428ca5e90e7be3da2c1b71226413f11a 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 @@ -983,7 +999,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 d145b8d..e7a77d5 100644 +index a82952ae..1fd3b778 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -41,14 +41,27 @@ @@ -1042,7 +1058,7 @@ index d145b8d..e7a77d5 100644 return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -579,7 +593,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -581,7 +595,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1051,7 +1067,7 @@ index d145b8d..e7a77d5 100644 return TRUE; } else -@@ -799,6 +813,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -801,6 +815,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_unref); } @@ -1088,7 +1104,7 @@ index d145b8d..e7a77d5 100644 GrdSessionVnc * grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection) -@@ -820,6 +864,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -822,6 +866,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); @@ -1096,16 +1112,16 @@ index d145b8d..e7a77d5 100644 init_vnc_session (session_vnc); -@@ -849,7 +894,7 @@ grd_session_vnc_stop (GrdSession *session) - - g_clear_object (&session_vnc->pipewire_stream); +@@ -856,7 +901,7 @@ grd_session_vnc_stop (GrdSession *session) + g_clear_object (&session_vnc->stream); + } - grd_session_vnc_detach_source (session_vnc); + grd_session_vnc_pause (session_vnc); g_clear_object (&session_vnc->connection); g_clear_object (&session_vnc->clipboard_vnc); -@@ -936,8 +981,8 @@ grd_session_vnc_stream_ready (GrdSession *session, +@@ -941,8 +986,8 @@ on_stream_ready (GrdStream *stream, G_CALLBACK (on_pipewire_stream_closed), session_vnc); @@ -1116,10 +1132,10 @@ index d145b8d..e7a77d5 100644 } static void -@@ -958,4 +1003,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) +@@ -977,4 +1022,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; + session_class->on_stream_created = grd_session_vnc_on_stream_created; + + signals[PAUSED] = g_signal_new ("paused", + G_TYPE_FROM_CLASS (klass), @@ -1135,10 +1151,10 @@ index d145b8d..e7a77d5 100644 + G_TYPE_NONE, 0); } -- -2.37.1 +2.40.0 -From 5856f0b5da2b3f71d8424db96e777001a8250137 Mon Sep 17 00:00:00 2001 +From e65f12d3b022891eb39d8ee0f0c88db3f5ae4526 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 @@ -1151,10 +1167,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 e7a77d5..67308a2 100644 +index 1fd3b778..8366e661 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -749,6 +749,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -751,6 +751,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1176,7 +1192,7 @@ index e7a77d5..67308a2 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -765,16 +780,7 @@ handle_socket_data (GSocket *socket, +@@ -767,16 +782,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1195,7 +1211,7 @@ index e7a77d5..67308a2 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index ffc8d27..a86d61d 100644 +index ffc8d27a..a86d61d2 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -1208,10 +1224,10 @@ index ffc8d27..a86d61d 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.37.1 +2.40.0 -From b8a59836a2348ab10fed0ff1590e12690ea427de Mon Sep 17 00:00:00 2001 +From 0cbebce170fdc994c467b43082a41e56209142f0 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 @@ -1223,7 +1239,7 @@ protocol rather than the session itself. 1 file changed, 9 insertions(+) diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c -index ec4758e..ac6c35f 100644 +index ec4758e0..ac6c35f6 100644 --- a/src/grd-vnc-tls.c +++ b/src/grd-vnc-tls.c @@ -67,6 +67,7 @@ grd_vnc_tls_context_new (void) @@ -1285,10 +1301,10 @@ index ec4758e..ac6c35f 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.37.1 +2.40.0 -From 26a824eede76c1d06ac6eb11cb0dd016ec66c739 Mon Sep 17 00:00:00 2001 +From 547a51efd438d2b812d4d3b0d725ccd38547018a 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 @@ -1305,7 +1321,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 a86d61d..5db388b 100644 +index a86d61d2..5db388b0 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -1318,7 +1334,7 @@ index a86d61d..5db388b 100644 GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c -index ac6c35f..312b6b9 100644 +index ac6c35f6..312b6b92 100644 --- a/src/grd-vnc-tls.c +++ b/src/grd-vnc-tls.c @@ -41,6 +41,12 @@ typedef enum _GrdTlsHandshakeState @@ -1455,10 +1471,10 @@ index ac6c35f..312b6b9 100644 } -- -2.37.1 +2.40.0 -From 879b9a26595c338cee40aa919596e439be910f4b Mon Sep 17 00:00:00 2001 +From 339341e34b4ecb1ab897604d24f3bedf9c8b1e53 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 @@ -1477,7 +1493,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 67308a2..39b3a56 100644 +index 8366e661..baf7520c 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -97,11 +97,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1500,7 +1516,7 @@ index 67308a2..39b3a56 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -697,6 +691,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -699,6 +693,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) session_vnc->monitor_config->connectors = connectors; } @@ -1510,10 +1526,10 @@ index 67308a2..39b3a56 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.37.1 +2.40.0 -From 7b0523bd3f6981225d2614956f297a698e846c1a Mon Sep 17 00:00:00 2001 +From 2902160953407cfe6934d6ebcff2f1ea3722bfc8 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 @@ -1531,7 +1547,7 @@ dropped. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 5db388b..c4f4e8d 100644 +index 5db388b0..c4f4e8d4 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h @@ -68,7 +68,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, @@ -1545,5 +1561,5 @@ index 5db388b..c4f4e8d 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.37.1 +2.40.0 diff --git a/sources b/sources index bf32cbd..9d91158 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-44.2.tar.xz) = 2e310cd926e0ed6fd28406a56e4d4ba239b9817b035231f66b648a98e08a5c7a7d810a2b786292aa39a7c67ca17af3de92dce4a6031a4f72166d667b8f498bd0 +SHA512 (gnome-remote-desktop-45.alpha.tar.xz) = 047488a3c2131cb0a52b6378e8a4edc70eae5b2d9b2f4a53dd83bc7d46ca4a3b87a59817ec31a674b8be1e5b4e997e0b4d504fb03cb54149aa0ed25789a31752 From 57715ab6084a0963d9b838957dd4ad268427aac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 5 Jul 2023 16:16:17 +0200 Subject: [PATCH 069/102] Add missing function definition in TLS patch --- gnutls-anontls.patch | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index bbbed42..66947d3 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From f2978ab58bc13a1d4bc51f5c73c23a63f07f8881 Mon Sep 17 00:00:00 2001 +From e2a39fbf7b1a90aee818790ad847c20f59351adc 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 @@ -14,13 +14,14 @@ VNC connection. src/grd-session-vnc.c | 120 ++++- src/grd-session-vnc.h | 17 + src/grd-settings-user.c | 28 ++ + src/grd-settings.c | 6 + src/grd-settings.h | 4 + src/grd-vnc-server.c | 47 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 682 insertions(+), 26 deletions(-) + 12 files changed, 688 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h @@ -357,6 +358,23 @@ index 42bf31dd..5f6a87dd 100644 + NULL, NULL, NULL, + G_TYPE_NONE, 0); } +diff --git a/src/grd-settings.c b/src/grd-settings.c +index 1cd4bea5..cd1dda1f 100644 +--- a/src/grd-settings.c ++++ b/src/grd-settings.c +@@ -230,6 +230,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) + return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_auth_method (settings); + } + ++GrdVncEncryption ++grd_settings_get_vnc_encryption (GrdSettings *settings) ++{ ++ return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_encryption (settings); ++} ++ + static void + grd_settings_finalize (GObject *object) + { diff --git a/src/grd-settings.h b/src/grd-settings.h index 9e36ff9d..51f0f1c3 100644 --- a/src/grd-settings.h @@ -986,7 +1004,7 @@ index 5b39a5de..c6dc2ab5 100644 2.40.0 -From b8cfd8e5428ca5e90e7be3da2c1b71226413f11a Mon Sep 17 00:00:00 2001 +From e0192db09adddb551e4dbfeb17c281fb5815d7be 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 @@ -1154,7 +1172,7 @@ index a82952ae..1fd3b778 100644 2.40.0 -From e65f12d3b022891eb39d8ee0f0c88db3f5ae4526 Mon Sep 17 00:00:00 2001 +From 9a36ce45052d05a0e0e4ab70beba704b321875a6 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 @@ -1227,7 +1245,7 @@ index ffc8d27a..a86d61d2 100644 2.40.0 -From 0cbebce170fdc994c467b43082a41e56209142f0 Mon Sep 17 00:00:00 2001 +From 685f376a6b331d91e2bb34e8484682974db149a5 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 @@ -1304,7 +1322,7 @@ index ec4758e0..ac6c35f6 100644 2.40.0 -From 547a51efd438d2b812d4d3b0d725ccd38547018a Mon Sep 17 00:00:00 2001 +From eebd752d3df83d6ae2df79782dbb8b4a80083608 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 @@ -1474,7 +1492,7 @@ index ac6c35f6..312b6b92 100644 2.40.0 -From 339341e34b4ecb1ab897604d24f3bedf9c8b1e53 Mon Sep 17 00:00:00 2001 +From 9f41a7aba0f24a3253a1483a290364e887345b42 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 @@ -1529,7 +1547,7 @@ index 8366e661..baf7520c 100644 2.40.0 -From 2902160953407cfe6934d6ebcff2f1ea3722bfc8 Mon Sep 17 00:00:00 2001 +From ea9f0e491c6fd34cc6eda0104d017eba1a671023 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 From 07cee12810192adaae0bee79671b94580309776a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 23:42:30 +0000 Subject: [PATCH 070/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 598eddc..83cfe69 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 45.alpha -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -113,6 +113,9 @@ GNOME desktop environment. %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 45.alpha-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed Jul 05 2023 Jonas Ådahl - 45~alpha-1 - Update to 45.alpha From 78affe76dcbe401b4e3eb9f6cb3c30aafe8cf4a8 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Fri, 11 Aug 2023 12:31:23 +0200 Subject: [PATCH 071/102] Update to 45.beta --- .gitignore | 1 + gnome-remote-desktop.spec | 10 +++++++--- sources | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ca8e6fb..2ce45df 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /gnome-remote-desktop-44.1.tar.xz /gnome-remote-desktop-44.2.tar.xz /gnome-remote-desktop-45.alpha.tar.xz +/gnome-remote-desktop-45.beta.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 83cfe69..42bb70c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %endif Name: gnome-remote-desktop -Version: 45.alpha -Release: 2%{?dist} +Version: 45.beta +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/44/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/45/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -76,6 +76,7 @@ GNOME desktop environment. -Dfdk_aac=false \ %endif -Dsystemd=true \ + -Dtests=false \ -Dvnc=true %meson_build @@ -113,6 +114,9 @@ GNOME desktop environment. %changelog +* Fri Aug 11 2023 Kalev Lember - 45.beta-1 +- Update to 45.beta + * Wed Jul 19 2023 Fedora Release Engineering - 45.alpha-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index 9d91158..7b4fbb9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-45.alpha.tar.xz) = 047488a3c2131cb0a52b6378e8a4edc70eae5b2d9b2f4a53dd83bc7d46ca4a3b87a59817ec31a674b8be1e5b4e997e0b4d504fb03cb54149aa0ed25789a31752 +SHA512 (gnome-remote-desktop-45.beta.tar.xz) = 3b99b1cbc7677ef0529d3c1e9fdfe5868f94ee035b4ba19cf203504063358946cb521ecbed6575ba56bbe69ce2c721f28a25ccd81093ca9dddd50a83c6c7ecc3 From c09c038ad6e1c6a69ec5c6ae7adc1ced07a46011 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Tue, 5 Sep 2023 15:50:43 +0200 Subject: [PATCH 072/102] Update to 45.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 8 ++++++-- sources | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2ce45df..00bc051 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /gnome-remote-desktop-44.2.tar.xz /gnome-remote-desktop-45.alpha.tar.xz /gnome-remote-desktop-45.beta.tar.xz +/gnome-remote-desktop-45.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 42bb70c..53c0fa9 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %endif Name: gnome-remote-desktop -Version: 45.beta +Version: 45.rc Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -42,6 +42,7 @@ BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(gudev-1.0) BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libei-1.0) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libsecret-1) @@ -53,7 +54,7 @@ BuildRequires: pkgconfig(tss2-mu) BuildRequires: pkgconfig(tss2-rc) BuildRequires: pkgconfig(tss2-tctildr) -Requires: pipewire%{?_isa} >= 0.3.0 +Requires: pipewire%{?_isa} >= 0.3.49 Obsoletes: vino < 3.22.0-21 @@ -114,6 +115,9 @@ GNOME desktop environment. %changelog +* Tue Sep 05 2023 Kalev Lember - 45.rc-1 +- Update to 45.rc + * Fri Aug 11 2023 Kalev Lember - 45.beta-1 - Update to 45.beta diff --git a/sources b/sources index 7b4fbb9..4d1e5b2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-45.beta.tar.xz) = 3b99b1cbc7677ef0529d3c1e9fdfe5868f94ee035b4ba19cf203504063358946cb521ecbed6575ba56bbe69ce2c721f28a25ccd81093ca9dddd50a83c6c7ecc3 +SHA512 (gnome-remote-desktop-45.rc.tar.xz) = 1aea24c27c45d343821abe2cb4429afdba14cd636885bdac9f80bf811732e33249bb24632ee723dbe609a77488434051e4f109570da93397cd1e25aba96de1d0 From f4ba5058833465d6ebb89961c1b40d653bff1dfb Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 6 Sep 2023 11:37:18 +0200 Subject: [PATCH 073/102] Add minimum required libei version The required libei version is still in updates-testing for F39 so it's best to be careful. While at this, also move both libei and pipewire minimum version numbers to a global, so that they can be set in a single place and work for both requires and buildrequires. --- gnome-remote-desktop.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 53c0fa9..ecc1028 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -11,6 +11,9 @@ %global enable_rdp 1 %endif +%global libei_version 1.0.901 +%global pipewire_version 0.3.49 + Name: gnome-remote-desktop Version: 45.rc Release: 1%{?dist} @@ -42,7 +45,7 @@ BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(gudev-1.0) BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(libei-1.0) +BuildRequires: pkgconfig(libei-1.0) >= %{libei_version} BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libsecret-1) @@ -54,7 +57,8 @@ BuildRequires: pkgconfig(tss2-mu) BuildRequires: pkgconfig(tss2-rc) BuildRequires: pkgconfig(tss2-tctildr) -Requires: pipewire%{?_isa} >= 0.3.49 +Requires: libei%{?_isa} >= %{libei_version} +Requires: pipewire%{?_isa} >= %{pipewire_version} Obsoletes: vino < 3.22.0-21 From 534ec8aafea94ac9f6e8ffc814ae24f5bf0d66c1 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Sat, 21 Oct 2023 13:16:27 +0200 Subject: [PATCH 074/102] Update to 45.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 00bc051..65be0a0 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ /gnome-remote-desktop-45.alpha.tar.xz /gnome-remote-desktop-45.beta.tar.xz /gnome-remote-desktop-45.rc.tar.xz +/gnome-remote-desktop-45.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ecc1028..f44e26c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -15,7 +15,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 45.rc +Version: 45.0 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -119,6 +119,9 @@ GNOME desktop environment. %changelog +* Sat Oct 21 2023 Kalev Lember - 45.0-1 +- Update to 45.0 + * Tue Sep 05 2023 Kalev Lember - 45.rc-1 - Update to 45.rc diff --git a/sources b/sources index 4d1e5b2..d33c927 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-45.rc.tar.xz) = 1aea24c27c45d343821abe2cb4429afdba14cd636885bdac9f80bf811732e33249bb24632ee723dbe609a77488434051e4f109570da93397cd1e25aba96de1d0 +SHA512 (gnome-remote-desktop-45.0.tar.xz) = 257548da2dffe1ed403708dba955fee5a1cd3219e82dd9db8914da603de89a28bfd7b60bcb5667fb47f6de1e590c68ea53d7df689b49d62a216a418d5b72c0d6 From b86d5f3b4dedc1caaea79f674c39fd12239201a4 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Sun, 22 Oct 2023 23:29:53 +0200 Subject: [PATCH 075/102] Update to 45.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 65be0a0..882fd93 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /gnome-remote-desktop-45.beta.tar.xz /gnome-remote-desktop-45.rc.tar.xz /gnome-remote-desktop-45.0.tar.xz +/gnome-remote-desktop-45.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index f44e26c..827a061 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -15,7 +15,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 45.0 +Version: 45.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -119,6 +119,9 @@ GNOME desktop environment. %changelog +* Sun Oct 22 2023 Kalev Lember - 45.1-1 +- Update to 45.1 + * Sat Oct 21 2023 Kalev Lember - 45.0-1 - Update to 45.0 diff --git a/sources b/sources index d33c927..9c1592b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-45.0.tar.xz) = 257548da2dffe1ed403708dba955fee5a1cd3219e82dd9db8914da603de89a28bfd7b60bcb5667fb47f6de1e590c68ea53d7df689b49d62a216a418d5b72c0d6 +SHA512 (gnome-remote-desktop-45.1.tar.xz) = 4572fefa03ee433783c822cf0405bd17b645f3aa08e8d88c04165859fd30643d612e5d7516a64ded8c1a0d2007026d6df877930b5ea127d7e1e939c1bb60f379 From 30c0ed87849c8100eec1eab26086a9e21a57f82a Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Fri, 24 Nov 2023 13:10:07 -0500 Subject: [PATCH 076/102] Disable VNC in RHEL 10+ --- gnome-remote-desktop.spec | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 827a061..f3d3ef9 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -2,21 +2,15 @@ %global tarball_version %%(echo %{version} | tr '~' '.') -# In RHEL/ELN FreeRDP is built without server support -%if 0%{?rhel} >= 10 -%global enable_rdp 1 -%elif 0%{?rhel} >= 9 -%global enable_rdp 0 -%else -%global enable_rdp 1 -%endif +%bcond rdp %[0%{?fedora} || 0%{?rhel} >= 10] +%bcond vnc %[0%{?fedora} || 0%{?rhel} < 10] %global libei_version 1.0.901 %global pipewire_version 0.3.49 Name: gnome-remote-desktop Version: 45.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -33,7 +27,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(ffnvcodec) -%if 0%{?enable_rdp} +%if %{with rdp} BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(freerdp2) BuildRequires: pkgconfig(fuse3) @@ -49,7 +43,9 @@ BuildRequires: pkgconfig(libei-1.0) >= %{libei_version} BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libsecret-1) +%if %{with vnc} BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7 +%endif BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(tss2-esys) @@ -73,16 +69,20 @@ GNOME desktop environment. %build %meson \ -%if 0%{?enable_rdp} +%if %{with rdp} -Drdp=true \ -Dfdk_aac=true \ %else -Drdp=false \ -Dfdk_aac=false \ +%endif +%if %{with vnc} + -Dvnc=true \ +%else + -Dvnc=false \ %endif -Dsystemd=true \ - -Dtests=false \ - -Dvnc=true + -Dtests=false %meson_build @@ -112,13 +112,16 @@ GNOME desktop environment. %{_userunitdir}/%{systemd_unit} %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml -%if 0%{?enable_rdp} +%if %{with rdp} %{_datadir}/gnome-remote-desktop/ %endif %{_mandir}/man1/grdctl.1* %changelog +* Fri Nov 24 2023 Yaakov Selkowitz - 45.1-2 +- Disable VNC in RHEL 10+ + * Sun Oct 22 2023 Kalev Lember - 45.1-1 - Update to 45.1 From 8707c8c7f4f7f9707d968a72fb9270548d7334f6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 23:01:11 +0000 Subject: [PATCH 077/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index f3d3ef9..0717f7c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,7 +10,7 @@ Name: gnome-remote-desktop Version: 45.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -119,6 +119,9 @@ GNOME desktop environment. %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 45.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Nov 24 2023 Yaakov Selkowitz - 45.1-2 - Disable VNC in RHEL 10+ From 308ffcae221f8ce9d4848620761247dbb5120702 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 15:34:43 +0000 Subject: [PATCH 078/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 0717f7c..40bed8c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -10,7 +10,7 @@ Name: gnome-remote-desktop Version: 45.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -119,6 +119,9 @@ GNOME desktop environment. %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 45.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 45.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 884620465e9062874c3dec40800f137f4e016444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 25 Mar 2024 23:09:20 +0100 Subject: [PATCH 079/102] Bump version to 46.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 45 ++++-- gnutls-anontls.patch | 309 +++++++++++++++++--------------------- sources | 2 +- 4 files changed, 170 insertions(+), 187 deletions(-) diff --git a/.gitignore b/.gitignore index 882fd93..067ec62 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ /gnome-remote-desktop-45.rc.tar.xz /gnome-remote-desktop-45.0.tar.xz /gnome-remote-desktop-45.1.tar.xz +/gnome-remote-desktop-46.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 40bed8c..ead47a5 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -1,4 +1,7 @@ -%global systemd_unit gnome-remote-desktop.service +%global systemd_unit_handover gnome-remote-desktop-handover.service +%global systemd_unit_headless gnome-remote-desktop-headless.service +%global systemd_unit_system gnome-remote-desktop.service +%global systemd_unit_user gnome-remote-desktop.service %global tarball_version %%(echo %{version} | tr '~' '.') @@ -9,8 +12,8 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 45.1 -Release: 4%{?dist} +Version: 46.0 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -26,12 +29,15 @@ BuildRequires: meson >= 0.47.0 BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(epoxy) +BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(ffnvcodec) %if %{with rdp} BuildRequires: pkgconfig(fdk-aac) -BuildRequires: pkgconfig(freerdp2) +BuildRequires: pkgconfig(freerdp3) BuildRequires: pkgconfig(fuse3) -BuildRequires: pkgconfig(winpr2) +BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(polkit-gobject-1) +BuildRequires: pkgconfig(winpr3) %endif BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(glib-2.0) >= 2.68 @@ -71,10 +77,8 @@ GNOME desktop environment. %meson \ %if %{with rdp} -Drdp=true \ - -Dfdk_aac=true \ %else -Drdp=false \ - -Dfdk_aac=false \ %endif %if %{with vnc} -Dvnc=true \ @@ -93,15 +97,24 @@ GNOME desktop environment. %post -%systemd_user_post %{systemd_unit} +%systemd_system_post %{systemd_unit_system} +%systemd_user_post %{systemd_unit_handover} +%systemd_user_post %{systemd_unit_headless} +%systemd_user_post %{systemd_unit_user} %preun -%systemd_user_preun %{systemd_unit} +%systemd_system_preun %{systemd_unit_system} +%systemd_user_preun %{systemd_unit_handover} +%systemd_user_preun %{systemd_unit_headless} +%systemd_user_preun %{systemd_unit_user} %postun -%systemd_user_postun_with_restart %{systemd_unit} +%systemd_system_postun_with_restart %{systemd_unit_system} +%systemd_user_postun_with_restart %{systemd_unit_handover} +%systemd_user_postun_with_restart %{systemd_unit_headless} +%systemd_user_postun_with_restart %{systemd_unit_user} %files -f %{name}.lang @@ -109,9 +122,19 @@ GNOME desktop environment. %doc README.md %{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon -%{_userunitdir}/%{systemd_unit} +%{_userunitdir}/%{systemd_unit_user} +%{_userunitdir}/%{systemd_unit_headless} +%{_userunitdir}/%{systemd_unit_handover} +%{_unitdir}/%{systemd_unit_system} +%{_datadir}/applications/org.gnome.RemoteDesktop.Handover.desktop +%{_datadir}/dbus-1/system-services/org.gnome.RemoteDesktop.service +%{_datadir}/dbus-1/system.d/org.gnome.RemoteDesktop.conf %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml +%{_datadir}/polkit-1/actions/org.gnome.remotedesktop.configure-system-daemon.policy +%{_sysusersdir}/gnome-remote-desktop-sysusers.conf +%{_tmpfilesdir}/gnome-remote-desktop-tmpfiles.conf + %if %{with rdp} %{_datadir}/gnome-remote-desktop/ %endif diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 66947d3..56d91f6 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From e2a39fbf7b1a90aee818790ad847c20f59351adc Mon Sep 17 00:00:00 2001 +From 0e754e3a90f486c031da535656584673016107a3 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 @@ -13,23 +13,22 @@ VNC connection. src/grd-enums.h | 6 + src/grd-session-vnc.c | 120 ++++- src/grd-session-vnc.h | 17 + - src/grd-settings-user.c | 28 ++ - src/grd-settings.c | 6 + - src/grd-settings.h | 4 + - src/grd-vnc-server.c | 47 ++ + src/grd-settings-user.c | 3 + + src/grd-settings.c | 18 + + src/grd-vnc-server.c | 49 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 12 files changed, 688 insertions(+), 26 deletions(-) + 11 files changed, 673 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index af607a47..a827c356 100644 +index 995863ce..40733a6e 100644 --- a/meson.build +++ b/meson.build -@@ -63,6 +63,7 @@ endif +@@ -62,6 +62,7 @@ endif if have_vnc libvncclient_dep = dependency('libvncclient') libvncserver_dep = dependency('libvncserver') @@ -38,12 +37,12 @@ index af607a47..a827c356 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index 44b181d6..de0d0f86 100644 +index 028bdf9a..47a1d921 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h -@@ -39,4 +39,10 @@ typedef enum - GRD_VNC_SCREEN_SHARE_MODE_EXTEND, - } GrdVncScreenShareMode; +@@ -33,6 +33,12 @@ typedef enum + GRD_VNC_AUTH_METHOD_PASSWORD + } GrdVncAuthMethod; +typedef enum +{ @@ -51,12 +50,14 @@ index 44b181d6..de0d0f86 100644 + GRD_VNC_ENCRYPTION_TLS_ANON = 1 << 1, +} GrdVncEncryption; + - #endif /* GRD_ENUMS_H */ + typedef enum + { + GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY, diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index de1c26d7..a82952ae 100644 +index 0ca76e89..e13ac013 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -45,7 +45,9 @@ struct _GrdSessionVnc +@@ -46,7 +46,9 @@ struct _GrdSessionVnc { GrdSession parent; @@ -66,7 +67,7 @@ index de1c26d7..a82952ae 100644 GSource *source; rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -588,6 +590,12 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -608,6 +610,12 @@ check_rfb_password (rfbClientPtr rfb_client, } } @@ -79,7 +80,7 @@ index de1c26d7..a82952ae 100644 int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width) -@@ -595,6 +603,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -615,6 +623,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, return width * BGRX_BYTES_PER_PIXEL; } @@ -98,7 +99,7 @@ index de1c26d7..a82952ae 100644 static void init_vnc_session (GrdSessionVnc *session_vnc) { -@@ -669,44 +689,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -689,44 +709,85 @@ init_vnc_session (GrdSessionVnc *session_vnc) rfbProcessEvents (rfb_screen, 0); } @@ -209,7 +210,7 @@ index de1c26d7..a82952ae 100644 } return G_SOURCE_CONTINUE; -@@ -719,7 +780,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc) +@@ -739,7 +800,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, @@ -221,7 +222,7 @@ index de1c26d7..a82952ae 100644 NULL); g_source_set_callback (session_vnc->source, (GSourceFunc) handle_socket_data, -@@ -750,11 +814,13 @@ grd_session_vnc_new (GrdVncServer *vnc_server, +@@ -780,6 +844,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, "context", context, NULL); @@ -229,13 +230,15 @@ index de1c26d7..a82952ae 100644 session_vnc->connection = g_object_ref (connection); settings = grd_context_get_settings (context); - session_vnc->screen_share_mode = grd_settings_get_vnc_screen_share_mode (settings); +@@ -792,6 +857,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, + G_CALLBACK (on_view_only_changed), + session_vnc); + grd_session_vnc_grab_socket (session_vnc, vnc_socket_grab_func); grd_session_vnc_attach_source (session_vnc); init_vnc_session (session_vnc); -@@ -769,6 +835,8 @@ grd_session_vnc_dispose (GObject *object) +@@ -806,6 +872,8 @@ grd_session_vnc_dispose (GObject *object) g_assert (!session_vnc->rfb_screen); @@ -280,126 +283,79 @@ index be79cf4a..ffc8d27a 100644 + #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c -index 42bf31dd..5f6a87dd 100644 +index 20b81a94..34115078 100644 --- a/src/grd-settings-user.c +++ b/src/grd-settings-user.c -@@ -66,6 +66,7 @@ struct _GrdSettingsUser +@@ -79,6 +79,9 @@ grd_settings_user_constructed (GObject *object) + g_settings_bind (settings->vnc_settings, "auth-method", + settings, "vnc-auth-method", + G_SETTINGS_BIND_DEFAULT); ++ g_settings_bind (settings->vnc_settings, "encryption", ++ settings, "vnc-encryption", ++ G_SETTINGS_BIND_DEFAULT); + + switch (grd_settings_get_runtime_mode (GRD_SETTINGS (settings))) + { +diff --git a/src/grd-settings.c b/src/grd-settings.c +index fba1d714..f3475010 100644 +--- a/src/grd-settings.c ++++ b/src/grd-settings.c +@@ -58,6 +58,7 @@ enum + PROP_RDP_SERVER_CERT_PATH, + PROP_RDP_SERVER_KEY_PATH, + PROP_VNC_AUTH_METHOD, ++ PROP_VNC_ENCRYPTION, + }; + + typedef struct _GrdSettingsPrivate +@@ -84,6 +85,7 @@ typedef struct _GrdSettingsPrivate gboolean view_only; GrdVncScreenShareMode screen_share_mode; GrdVncAuthMethod auth_method; + GrdVncEncryption encryption; } vnc; - }; + } GrdSettingsPrivate; -@@ -138,6 +139,13 @@ update_vnc_auth_method (GrdSettingsUser *settings) - "auth-method"); - } - -+static void -+update_vnc_encryption (GrdSettingsUser *settings) -+{ -+ settings->vnc.encryption = g_settings_get_flags (settings->vnc.settings, -+ "encryption"); -+} -+ - static gboolean - grd_settings_user_is_rdp_enabled (GrdSettings *settings) - { -@@ -192,6 +200,12 @@ grd_settings_user_get_vnc_auth_method (GrdSettings *settings) - return GRD_SETTINGS_USER (settings)->vnc.auth_method; - } - -+static GrdVncEncryption -+grd_settings_user_get_encryption (GrdSettings *settings) -+{ -+ return GRD_SETTINGS_USER (settings)->vnc.encryption; -+} -+ - GrdSettingsUser * - grd_settings_user_new (GrdContext *context) - { -@@ -273,6 +287,11 @@ on_vnc_settings_changed (GSettings *vnc_settings, - update_vnc_auth_method (settings); - g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0); +@@ -425,6 +427,9 @@ grd_settings_get_property (GObject *object, + else + g_value_set_enum (value, priv->vnc.auth_method); + break; ++ case PROP_VNC_ENCRYPTION: ++ g_value_set_flags (value, priv->vnc.encryption); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } -+ else if (strcmp (key, "encryption") == 0) -+ { -+ update_vnc_encryption (settings); -+ g_signal_emit (settings, signals[VNC_ENCRYPTION_CHANGED], 0); -+ } +@@ -562,6 +567,9 @@ grd_settings_set_property (GObject *object, + case PROP_VNC_AUTH_METHOD: + priv->vnc.auth_method = g_value_get_enum (value); + break; ++ case PROP_VNC_ENCRYPTION: ++ priv->vnc.encryption = g_value_get_flags (value); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +@@ -743,4 +751,14 @@ grd_settings_class_init (GrdSettingsClass *klass) + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); ++ g_object_class_install_property (object_class, ++ PROP_VNC_ENCRYPTION, ++ g_param_spec_flags ("vnc-encryption", ++ "vnc encryption", ++ "vnc encryption", ++ GRD_TYPE_VNC_ENCRYPTION, ++ GRD_VNC_ENCRYPTION_TLS_ANON, ++ G_PARAM_READWRITE | ++ G_PARAM_CONSTRUCT | ++ G_PARAM_STATIC_STRINGS)); } - - static void -@@ -294,6 +313,7 @@ grd_settings_user_init (GrdSettingsUser *settings) - update_vnc_view_only (settings); - update_vnc_screen_share_mode (settings); - update_vnc_auth_method (settings); -+ update_vnc_encryption (settings); - } - - static void -@@ -313,6 +333,7 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass) - settings_class->get_rdp_server_key = grd_settings_user_get_rdp_server_key; - settings_class->get_rdp_server_cert = grd_settings_user_get_rdp_server_cert; - settings_class->get_vnc_auth_method = grd_settings_user_get_vnc_auth_method; -+ settings_class->get_vnc_encryption = grd_settings_user_get_encryption; - - signals[RDP_ENABLED_CHANGED] = - g_signal_new ("rdp-enabled-changed", -@@ -377,4 +398,11 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass) - 0, - NULL, NULL, NULL, - G_TYPE_NONE, 0); -+ signals[VNC_ENCRYPTION_CHANGED] = -+ g_signal_new ("vnc-encryption-changed", -+ G_TYPE_FROM_CLASS (klass), -+ G_SIGNAL_RUN_LAST, -+ 0, -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); - } -diff --git a/src/grd-settings.c b/src/grd-settings.c -index 1cd4bea5..cd1dda1f 100644 ---- a/src/grd-settings.c -+++ b/src/grd-settings.c -@@ -230,6 +230,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings) - return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_auth_method (settings); - } - -+GrdVncEncryption -+grd_settings_get_vnc_encryption (GrdSettings *settings) -+{ -+ return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_encryption (settings); -+} -+ - static void - grd_settings_finalize (GObject *object) - { -diff --git a/src/grd-settings.h b/src/grd-settings.h -index 9e36ff9d..51f0f1c3 100644 ---- a/src/grd-settings.h -+++ b/src/grd-settings.h -@@ -56,6 +56,8 @@ struct _GrdSettingsClass - char * (* get_rdp_server_key) (GrdSettings *settings); - - GrdVncAuthMethod (* get_vnc_auth_method) (GrdSettings *settings); -+ -+ GrdVncEncryption (* get_vnc_encryption) (GrdSettings *settings); - }; - - int grd_settings_get_rdp_port (GrdSettings *settings); -@@ -94,4 +96,6 @@ char *grd_settings_get_rdp_server_key (GrdSettings *settings); - - GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings); - -+GrdVncEncryption grd_settings_get_vnc_encryption (GrdSettings *settings); -+ - #endif /* GRD_SETTINGS_H */ diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index 70efab12..9280dfb5 100644 +index 877272d2..59a13db5 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c -@@ -24,12 +24,14 @@ +@@ -24,6 +24,7 @@ #include "grd-vnc-server.h" @@ -407,14 +363,15 @@ index 70efab12..9280dfb5 100644 #include #include - #include "grd-context.h" +@@ -31,6 +32,7 @@ #include "grd-debug.h" #include "grd-session-vnc.h" + #include "grd-utils.h" +#include "grd-vnc-tls.h" enum { -@@ -129,6 +131,43 @@ on_incoming (GSocketService *service, +@@ -130,6 +132,45 @@ on_incoming (GSocketService *service, return TRUE; } @@ -426,7 +383,9 @@ index 70efab12..9280dfb5 100644 + GrdVncEncryption encryption; + + tls_security_handler = grd_vnc_tls_get_security_handler (); -+ encryption = grd_settings_get_vnc_encryption (settings); ++ g_object_get (G_OBJECT (settings), ++ "vnc-encryption", &encryption, ++ NULL); + + if (encryption == (GRD_VNC_ENCRYPTION_NONE | GRD_VNC_ENCRYPTION_TLS_ANON)) + { @@ -458,7 +417,7 @@ index 70efab12..9280dfb5 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -216,11 +255,19 @@ grd_vnc_server_dispose (GObject *object) +@@ -241,11 +282,19 @@ grd_vnc_server_dispose (GObject *object) static void grd_vnc_server_constructed (GObject *object) { @@ -470,7 +429,7 @@ index 70efab12..9280dfb5 100644 else rfbLogEnable (0); -+ g_signal_connect (settings, "vnc-encryption-changed", ++ g_signal_connect (settings, "notify::vnc-encryption", + G_CALLBACK (on_vnc_encryption_changed), + vnc_server); + sync_encryption_settings (vnc_server); @@ -963,10 +922,10 @@ index 00000000..135ef8c7 + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index ac07455b..654caccb 100644 +index 914e2cc1..4e820c59 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -161,10 +161,13 @@ if have_vnc +@@ -188,10 +188,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -981,10 +940,10 @@ index ac07455b..654caccb 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 5b39a5de..c6dc2ab5 100644 +index c3d583c1..8a736c82 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -@@ -116,5 +116,15 @@ +@@ -148,5 +148,15 @@ configuration updates. @@ -1001,10 +960,10 @@ index 5b39a5de..c6dc2ab5 100644 -- -2.40.0 +2.44.0 -From e0192db09adddb551e4dbfeb17c281fb5815d7be Mon Sep 17 00:00:00 2001 +From 6e5f6deab459acdd1e7785ab6975932f2815548f 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 @@ -1017,10 +976,10 @@ 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 a82952ae..1fd3b778 100644 +index e13ac013..30820d7d 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -41,14 +41,27 @@ +@@ -42,14 +42,27 @@ #define BGRX_SAMPLES_PER_PIXEL 3 #define BGRX_BYTES_PER_PIXEL 4 @@ -1048,7 +1007,7 @@ index a82952ae..1fd3b778 100644 rfbScreenInfoPtr rfb_screen; rfbClientPtr rfb_client; -@@ -79,7 +92,7 @@ struct _GrdSessionVnc +@@ -81,7 +94,7 @@ struct _GrdSessionVnc G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION) static void @@ -1057,7 +1016,7 @@ index a82952ae..1fd3b778 100644 static gboolean close_session_idle (gpointer user_data); -@@ -246,7 +259,8 @@ handle_client_gone (rfbClientPtr rfb_client) +@@ -248,7 +261,8 @@ handle_client_gone (rfbClientPtr rfb_client) g_debug ("VNC client gone"); @@ -1067,16 +1026,16 @@ index a82952ae..1fd3b778 100644 maybe_queue_close_session_idle (session_vnc); session_vnc->rfb_client = NULL; } -@@ -315,7 +329,7 @@ handle_new_client (rfbClientPtr rfb_client) - session_vnc->prompt_cancellable, - prompt_response_callback, - session_vnc); +@@ -338,7 +352,7 @@ handle_new_client (rfbClientPtr rfb_client) + { + case GRD_VNC_AUTH_METHOD_PROMPT: + show_sharing_desktop_prompt (session_vnc, rfb_client->host); - grd_session_vnc_detach_source (session_vnc); + grd_session_vnc_pause (session_vnc); return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: session_vnc->rfb_screen->passwordCheck = check_rfb_password; -@@ -581,7 +595,7 @@ check_rfb_password (rfbClientPtr rfb_client, +@@ -601,7 +615,7 @@ check_rfb_password (rfbClientPtr rfb_client, if (memcmp (challenge_encrypted, response_encrypted, len) == 0) { grd_session_start (GRD_SESSION (session_vnc)); @@ -1085,7 +1044,7 @@ index a82952ae..1fd3b778 100644 return TRUE; } else -@@ -801,6 +815,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) +@@ -821,6 +835,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc) g_clear_pointer (&session_vnc->source, g_source_unref); } @@ -1119,10 +1078,10 @@ index a82952ae..1fd3b778 100644 + g_signal_emit (session_vnc, signals[RESUMED], 0); +} + - GrdSessionVnc * - grd_session_vnc_new (GrdVncServer *vnc_server, - GSocketConnection *connection) -@@ -822,6 +866,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server, + static void + on_view_only_changed (GrdSettings *settings, + GParamSpec *pspec, +@@ -859,6 +903,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); @@ -1130,7 +1089,7 @@ index a82952ae..1fd3b778 100644 init_vnc_session (session_vnc); -@@ -856,7 +901,7 @@ grd_session_vnc_stop (GrdSession *session) +@@ -893,7 +938,7 @@ grd_session_vnc_stop (GrdSession *session) g_clear_object (&session_vnc->stream); } @@ -1139,7 +1098,7 @@ index a82952ae..1fd3b778 100644 g_clear_object (&session_vnc->connection); g_clear_object (&session_vnc->clipboard_vnc); -@@ -941,8 +986,8 @@ on_stream_ready (GrdStream *stream, +@@ -984,8 +1029,8 @@ on_stream_ready (GrdStream *stream, G_CALLBACK (on_pipewire_stream_closed), session_vnc); @@ -1150,7 +1109,7 @@ index a82952ae..1fd3b778 100644 } static void -@@ -977,4 +1022,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) +@@ -1020,4 +1065,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) session_class->remote_desktop_session_started = grd_session_vnc_remote_desktop_session_started; session_class->on_stream_created = grd_session_vnc_on_stream_created; @@ -1169,10 +1128,10 @@ index a82952ae..1fd3b778 100644 + G_TYPE_NONE, 0); } -- -2.40.0 +2.44.0 -From 9a36ce45052d05a0e0e4ab70beba704b321875a6 Mon Sep 17 00:00:00 2001 +From 00f4fdfc676361f5f71e6f6b346c11cb7088b836 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 @@ -1185,10 +1144,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 1fd3b778..8366e661 100644 +index 30820d7d..3ee06f79 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -751,6 +751,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, +@@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, return TRUE; } @@ -1210,7 +1169,7 @@ index 1fd3b778..8366e661 100644 static gboolean handle_socket_data (GSocket *socket, GIOCondition condition, -@@ -767,16 +782,7 @@ handle_socket_data (GSocket *socket, +@@ -787,16 +802,7 @@ handle_socket_data (GSocket *socket, } else if (condition & G_IO_IN) { @@ -1242,10 +1201,10 @@ index ffc8d27a..a86d61d2 100644 #endif /* GRD_SESSION_VNC_H */ -- -2.40.0 +2.44.0 -From 685f376a6b331d91e2bb34e8484682974db149a5 Mon Sep 17 00:00:00 2001 +From 69efe6df5e9e8548c0241a612980af31f1dc5c5a 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 @@ -1319,10 +1278,10 @@ index ec4758e0..ac6c35f6 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.40.0 +2.44.0 -From eebd752d3df83d6ae2df79782dbb8b4a80083608 Mon Sep 17 00:00:00 2001 +From 2a11c4f47165b62409f4428b9de1bda59c6ebb2f 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 @@ -1489,10 +1448,10 @@ index ac6c35f6..312b6b92 100644 } -- -2.40.0 +2.44.0 -From 9f41a7aba0f24a3253a1483a290364e887345b42 Mon Sep 17 00:00:00 2001 +From 1ed580b541ab5c3b815d8e29cf3aa71f1de0b649 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 @@ -1511,10 +1470,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 8366e661..baf7520c 100644 +index 3ee06f79..6e118d88 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c -@@ -97,11 +97,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); +@@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); static gboolean close_session_idle (gpointer user_data); @@ -1526,7 +1485,7 @@ index 8366e661..baf7520c 100644 static void swap_uint8 (uint8_t *a, uint8_t *b) -@@ -332,7 +327,6 @@ handle_new_client (rfbClientPtr rfb_client) +@@ -355,7 +350,6 @@ handle_new_client (rfbClientPtr rfb_client) grd_session_vnc_pause (session_vnc); return RFB_CLIENT_ON_HOLD; case GRD_VNC_AUTH_METHOD_PASSWORD: @@ -1534,7 +1493,7 @@ index 8366e661..baf7520c 100644 /* * authPasswdData needs to be non NULL in libvncserver to trigger * password authentication. -@@ -699,6 +693,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) +@@ -719,6 +713,8 @@ init_vnc_session (GrdSessionVnc *session_vnc) session_vnc->monitor_config->connectors = connectors; } @@ -1544,10 +1503,10 @@ index 8366e661..baf7520c 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.40.0 +2.44.0 -From ea9f0e491c6fd34cc6eda0104d017eba1a671023 Mon Sep 17 00:00:00 2001 +From 9b7b729d9f945fcb2942c74d8ab7a9b62d6cf4bd 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 @@ -1579,5 +1538,5 @@ index 5db388b0..c4f4e8d4 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.40.0 +2.44.0 diff --git a/sources b/sources index 9c1592b..e73ca62 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-45.1.tar.xz) = 4572fefa03ee433783c822cf0405bd17b645f3aa08e8d88c04165859fd30643d612e5d7516a64ded8c1a0d2007026d6df877930b5ea127d7e1e939c1bb60f379 +SHA512 (gnome-remote-desktop-46.0.tar.xz) = 780f9fd9fdb1f388e386048825ee5dfb9060d4005f0742075186779e8818d9bac4b3c3702b2a5bad347a1245fb82796b21fdad6df9d1206e9529f90cafe73f38 From 61e4777d041bb18d3f6681c18c1249456479765d Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 28 Mar 2024 10:29:19 -0700 Subject: [PATCH 080/102] Correct systemd macros There is no `%systemd_system_post`, `%systemd_system_preun` etc. They're just `%systemd_post` and `%systemd_preun`. These currently wind up as literal strings in the scripts and cause an `fg: no job control` error when you install or remove the package. --- gnome-remote-desktop.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ead47a5..2e41162 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 46.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -97,21 +97,21 @@ GNOME desktop environment. %post -%systemd_system_post %{systemd_unit_system} +%systemd_post %{systemd_unit_system} %systemd_user_post %{systemd_unit_handover} %systemd_user_post %{systemd_unit_headless} %systemd_user_post %{systemd_unit_user} %preun -%systemd_system_preun %{systemd_unit_system} +%systemd_preun %{systemd_unit_system} %systemd_user_preun %{systemd_unit_handover} %systemd_user_preun %{systemd_unit_headless} %systemd_user_preun %{systemd_unit_user} %postun -%systemd_system_postun_with_restart %{systemd_unit_system} +%systemd_postun_with_restart %{systemd_unit_system} %systemd_user_postun_with_restart %{systemd_unit_handover} %systemd_user_postun_with_restart %{systemd_unit_headless} %systemd_user_postun_with_restart %{systemd_unit_user} @@ -142,6 +142,9 @@ GNOME desktop environment. %changelog +* Thu Mar 28 2024 Adam Williamson - 46.0-2 +- Correct systemd macros + * Wed Jan 24 2024 Fedora Release Engineering - 45.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From f82571736995ebee19bda132683595b351ac2f3d Mon Sep 17 00:00:00 2001 From: David King Date: Thu, 18 Apr 2024 10:52:16 +0100 Subject: [PATCH 081/102] Update to 46.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 067ec62..2729f97 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ /gnome-remote-desktop-45.0.tar.xz /gnome-remote-desktop-45.1.tar.xz /gnome-remote-desktop-46.0.tar.xz +/gnome-remote-desktop-46.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2e41162..6382421 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 46.0 -Release: 2%{?dist} +Version: 46.1 +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/45/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/46/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -142,6 +142,9 @@ GNOME desktop environment. %changelog +* Thu Apr 18 2024 David King - 46.1-1 +- Update to 46.1 + * Thu Mar 28 2024 Adam Williamson - 46.0-2 - Correct systemd macros diff --git a/sources b/sources index e73ca62..77651c4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-46.0.tar.xz) = 780f9fd9fdb1f388e386048825ee5dfb9060d4005f0742075186779e8818d9bac4b3c3702b2a5bad347a1245fb82796b21fdad6df9d1206e9529f90cafe73f38 +SHA512 (gnome-remote-desktop-46.1.tar.xz) = efc63c8a965d6e2db0363a96a8171dda992b1cc3467503d8d197c245ad099843a494c9609a77b600a7048ba8c39e2d28573ac3c800b56530c614e19aa179633f From 167376332190014b827eaae911742a2e1205368d Mon Sep 17 00:00:00 2001 From: Nieves Montero Date: Thu, 23 May 2024 12:41:41 +0200 Subject: [PATCH 082/102] Update to 46.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2729f97..64733a1 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ /gnome-remote-desktop-45.1.tar.xz /gnome-remote-desktop-46.0.tar.xz /gnome-remote-desktop-46.1.tar.xz +/gnome-remote-desktop-46.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6382421..aec15b7 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 46.1 +Version: 46.2 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -142,6 +142,9 @@ GNOME desktop environment. %changelog +* Thu May 23 2024 Nieves Montero - 46.2-1 +- Update to 46.2 + * Thu Apr 18 2024 David King - 46.1-1 - Update to 46.1 diff --git a/sources b/sources index 77651c4..92226e2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-46.1.tar.xz) = efc63c8a965d6e2db0363a96a8171dda992b1cc3467503d8d197c245ad099843a494c9609a77b600a7048ba8c39e2d28573ac3c800b56530c614e19aa179633f +SHA512 (gnome-remote-desktop-46.2.tar.xz) = 55e64cb4d9286a821916bf17c8997cb869a1e29a76098c058d293530773a4859acf67d2570136b0404dc9c2376a419f149e38a2a3fdabf82d8140689a074930e From 75a8e6e71dd0607aedc22316732665168b0fc582 Mon Sep 17 00:00:00 2001 From: Nieves Montero Date: Thu, 23 May 2024 12:41:41 +0200 Subject: [PATCH 083/102] Update to 46.2 --- gnome-remote-desktop.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index aec15b7..ef0eafc 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -122,6 +122,7 @@ GNOME desktop environment. %doc README.md %{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon +%{_libexecdir}/gnome-remote-desktop-enable-service %{_userunitdir}/%{systemd_unit_user} %{_userunitdir}/%{systemd_unit_headless} %{_userunitdir}/%{systemd_unit_handover} @@ -132,6 +133,8 @@ GNOME desktop environment. %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml %{_datadir}/polkit-1/actions/org.gnome.remotedesktop.configure-system-daemon.policy +%{_datadir}/polkit-1/actions/org.gnome.remotedesktop.enable-system-daemon.policy +%{_datadir}/polkit-1/rules.d/20-gnome-remote-desktop.rules %{_sysusersdir}/gnome-remote-desktop-sysusers.conf %{_tmpfilesdir}/gnome-remote-desktop-tmpfiles.conf From 298db87c8098c7f470e586e9b1f3a17fc311c6de Mon Sep 17 00:00:00 2001 From: David King Date: Wed, 10 Jul 2024 10:52:29 +0100 Subject: [PATCH 084/102] Update to 47.alpha --- .gitignore | 1 + gnome-remote-desktop.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 64733a1..e9133a3 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ /gnome-remote-desktop-46.0.tar.xz /gnome-remote-desktop-46.1.tar.xz /gnome-remote-desktop-46.2.tar.xz +/gnome-remote-desktop-47.alpha.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ef0eafc..8f775b4 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 46.2 +Version: 47~alpha Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/46/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/47/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -145,6 +145,9 @@ GNOME desktop environment. %changelog +* Wed Jul 10 2024 David King - 47~alpha-1 +- Update to 47.alpha + * Thu May 23 2024 Nieves Montero - 46.2-1 - Update to 46.2 diff --git a/sources b/sources index 92226e2..f3bf286 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-46.2.tar.xz) = 55e64cb4d9286a821916bf17c8997cb869a1e29a76098c058d293530773a4859acf67d2570136b0404dc9c2376a419f149e38a2a3fdabf82d8140689a074930e +SHA512 (gnome-remote-desktop-47.alpha.tar.xz) = d7e128d7c54c7e7bbb8f0b59574fa84711667150411ce79fa93eb710cfe1fa38df6ab59436347f62249a365da0e0cbe2791d0d98244ed35d03a4982a5f7fd37d From 618722855e2b972a8e0ae64d1d35b5f5e248453d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 03:05:49 +0000 Subject: [PATCH 085/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 8f775b4..11159f4 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 47~alpha -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -145,6 +145,9 @@ GNOME desktop environment. %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 47~alpha-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Wed Jul 10 2024 David King - 47~alpha-1 - Update to 47.alpha From 8cae364fd6508112332c7837def7fe95868a422d Mon Sep 17 00:00:00 2001 From: nmontero Date: Wed, 14 Aug 2024 12:41:55 +0200 Subject: [PATCH 086/102] Update to 47~beta --- .gitignore | 1 + gnome-remote-desktop.spec | 11 ++++++++--- sources | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index e9133a3..ec32249 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ /gnome-remote-desktop-46.1.tar.xz /gnome-remote-desktop-46.2.tar.xz /gnome-remote-desktop-47.alpha.tar.xz +/gnome-remote-desktop-47.beta.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 11159f4..ef46cd1 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,8 +12,8 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47~alpha -Release: 2%{?dist} +Version: 47~beta +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -123,12 +123,14 @@ GNOME desktop environment. %{_bindir}/grdctl %{_libexecdir}/gnome-remote-desktop-daemon %{_libexecdir}/gnome-remote-desktop-enable-service +%{_libexecdir}/gnome-remote-desktop-configuration-daemon %{_userunitdir}/%{systemd_unit_user} %{_userunitdir}/%{systemd_unit_headless} %{_userunitdir}/%{systemd_unit_handover} %{_unitdir}/%{systemd_unit_system} +%{_unitdir}/gnome-remote-desktop-configuration.service %{_datadir}/applications/org.gnome.RemoteDesktop.Handover.desktop -%{_datadir}/dbus-1/system-services/org.gnome.RemoteDesktop.service +%{_datadir}/dbus-1/system-services/org.gnome.RemoteDesktop.Configuration.service %{_datadir}/dbus-1/system.d/org.gnome.RemoteDesktop.conf %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml @@ -145,6 +147,9 @@ GNOME desktop environment. %changelog +* Wed Aug 14 2024 nmontero - 47~beta-1 +- Update to 47.beta + * Thu Jul 18 2024 Fedora Release Engineering - 47~alpha-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/sources b/sources index f3bf286..6f1d6de 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.alpha.tar.xz) = d7e128d7c54c7e7bbb8f0b59574fa84711667150411ce79fa93eb710cfe1fa38df6ab59436347f62249a365da0e0cbe2791d0d98244ed35d03a4982a5f7fd37d +SHA512 (gnome-remote-desktop-47.beta.tar.xz) = 788cdf50b5a78de3ca93b3c64fe9cbed238a15090b3697f98649acb7224a79821c40c282a01896d4f56ef7bdb70d05a0d328d238774b0234219f502ace28e59d From 986158f2781472ae85f26ebc77582ccc03d71355 Mon Sep 17 00:00:00 2001 From: David King Date: Sun, 1 Sep 2024 18:38:10 +0100 Subject: [PATCH 087/102] Update to 47.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ec32249..5e44bc0 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ /gnome-remote-desktop-46.2.tar.xz /gnome-remote-desktop-47.alpha.tar.xz /gnome-remote-desktop-47.beta.tar.xz +/gnome-remote-desktop-47.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ef46cd1..1a1384a 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47~beta +Version: 47~rc Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -147,6 +147,9 @@ GNOME desktop environment. %changelog +* Sun Sep 01 2024 David King - 47~rc-1 +- Update to 47.rc + * Wed Aug 14 2024 nmontero - 47~beta-1 - Update to 47.beta diff --git a/sources b/sources index 6f1d6de..0a8d0ec 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.beta.tar.xz) = 788cdf50b5a78de3ca93b3c64fe9cbed238a15090b3697f98649acb7224a79821c40c282a01896d4f56ef7bdb70d05a0d328d238774b0234219f502ace28e59d +SHA512 (gnome-remote-desktop-47.rc.tar.xz) = f1e036b76d40ebec83c265b4ab67094f280c4b7d068c12b2347e9fe8d5a27c5bbd4f4aea952b51c527218fff11c407b9bc7ee819eabec5449a29dbaa8c7d417e From c58ca2eae66f02f205622de7573f7a56ab648c7a Mon Sep 17 00:00:00 2001 From: nmontero Date: Tue, 17 Sep 2024 13:30:45 +0200 Subject: [PATCH 088/102] Update to 47.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5e44bc0..587a247 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ /gnome-remote-desktop-47.alpha.tar.xz /gnome-remote-desktop-47.beta.tar.xz /gnome-remote-desktop-47.rc.tar.xz +/gnome-remote-desktop-47.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 1a1384a..941aae8 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47~rc +Version: 47.0 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -147,6 +147,9 @@ GNOME desktop environment. %changelog +* Mon Sep 16 2024 nmontero - 47.0-1 +- Update to 47.0 + * Sun Sep 01 2024 David King - 47~rc-1 - Update to 47.rc diff --git a/sources b/sources index 0a8d0ec..5f92995 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.rc.tar.xz) = f1e036b76d40ebec83c265b4ab67094f280c4b7d068c12b2347e9fe8d5a27c5bbd4f4aea952b51c527218fff11c407b9bc7ee819eabec5449a29dbaa8c7d417e +SHA512 (gnome-remote-desktop-47.0.tar.xz) = 3e00aaf649756d69dca2bf862c43b16327ce8dc66f0efbd8f23779b32f083867317077e9fe26be870aa50818559edb9ed1964005e74dfc65822f26ed533cfb98 From 29ca9c1e601c2e55958e5de813e81af6ff0a66d4 Mon Sep 17 00:00:00 2001 From: nmontero Date: Tue, 22 Oct 2024 10:59:11 +0200 Subject: [PATCH 089/102] Update to 47.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 587a247..2076bf6 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ /gnome-remote-desktop-47.beta.tar.xz /gnome-remote-desktop-47.rc.tar.xz /gnome-remote-desktop-47.0.tar.xz +/gnome-remote-desktop-47.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 941aae8..6c762f5 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47.0 +Version: 47.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -147,6 +147,9 @@ GNOME desktop environment. %changelog +* Tue Oct 22 2024 nmontero - 47.1-1 +- Update to 47.1 + * Mon Sep 16 2024 nmontero - 47.0-1 - Update to 47.0 diff --git a/sources b/sources index 5f92995..215d735 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.0.tar.xz) = 3e00aaf649756d69dca2bf862c43b16327ce8dc66f0efbd8f23779b32f083867317077e9fe26be870aa50818559edb9ed1964005e74dfc65822f26ed533cfb98 +SHA512 (gnome-remote-desktop-47.1.tar.xz) = 072d4064d23976eaf76a3293c313a6e121a33ab5ab5aa9557e6065579b72cfeae3e070db705c9d1d07dbb9fd5633ab5014aa1d4f022bc0b9a15ee2120589b75c From 426b534e7cbcec65e76aaef3800f5173cc2c0575 Mon Sep 17 00:00:00 2001 From: nmontero Date: Mon, 25 Nov 2024 09:52:44 +0100 Subject: [PATCH 090/102] Update to 47.2 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2076bf6..04c0410 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ /gnome-remote-desktop-47.rc.tar.xz /gnome-remote-desktop-47.0.tar.xz /gnome-remote-desktop-47.1.tar.xz +/gnome-remote-desktop-47.2.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6c762f5..33caa4a 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47.1 +Version: 47.2 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -147,6 +147,9 @@ GNOME desktop environment. %changelog +* Mon Nov 25 2024 nmontero - 47.2-1 +- Update to 47.2 + * Tue Oct 22 2024 nmontero - 47.1-1 - Update to 47.1 diff --git a/sources b/sources index 215d735..13efee0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.1.tar.xz) = 072d4064d23976eaf76a3293c313a6e121a33ab5ab5aa9557e6065579b72cfeae3e070db705c9d1d07dbb9fd5633ab5014aa1d4f022bc0b9a15ee2120589b75c +SHA512 (gnome-remote-desktop-47.2.tar.xz) = 143e3148c2895ed80962b3bf0520897d32e57a131f1f62f079f39af2ae0cebd32f50429f5aa4b91a8f9b424f15aa41cd4db7ec2f9eaae34c1a80b6002fc2b958 From 5891147c92c7c761e8a098c18c9f39fe1c89b772 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 22:49:02 +0000 Subject: [PATCH 091/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 33caa4a..14ebef1 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 47.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -147,6 +147,9 @@ GNOME desktop environment. %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 47.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Mon Nov 25 2024 nmontero - 47.2-1 - Update to 47.2 From 6c066e6c8806487f8dca0ef8ecf50de2411f1bff Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Thu, 6 Mar 2025 13:16:50 +0100 Subject: [PATCH 092/102] Update to 48.rc --- .gitignore | 1 + gnome-remote-desktop.spec | 13 ++++++++++--- sources | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 04c0410..9c21e65 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ /gnome-remote-desktop-47.0.tar.xz /gnome-remote-desktop-47.1.tar.xz /gnome-remote-desktop-47.2.tar.xz +/gnome-remote-desktop-48.rc.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 14ebef1..6657bb0 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47.2 -Release: 2%{?dist} +Version: 48~rc +Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/47/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/48/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -32,11 +32,15 @@ BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(ffnvcodec) %if %{with rdp} +BuildRequires: glslc +BuildRequires: spirv-tools BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(freerdp3) BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(libva) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(polkit-gobject-1) +BuildRequires: pkgconfig(vulkan) BuildRequires: pkgconfig(winpr3) %endif BuildRequires: pkgconfig(gbm) @@ -147,6 +151,9 @@ GNOME desktop environment. %changelog +* Thu Mar 06 2025 Fabio Valentini - 48~rc-1 +- Update to 48.rc + * Thu Jan 16 2025 Fedora Release Engineering - 47.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/sources b/sources index 13efee0..8250658 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.2.tar.xz) = 143e3148c2895ed80962b3bf0520897d32e57a131f1f62f079f39af2ae0cebd32f50429f5aa4b91a8f9b424f15aa41cd4db7ec2f9eaae34c1a80b6002fc2b958 +SHA512 (gnome-remote-desktop-48.rc.tar.xz) = eab0885424b5565c2586dd32e2a415c713d05937aade915af260b8c0cc296b5324329b9dbee441c25f833aacab66e366104484fe78f4a913bcbe8b04ca9c9598 From 8157f81b957ad847152a93f56b6de15e77ed3f8c Mon Sep 17 00:00:00 2001 From: nmontero Date: Thu, 20 Mar 2025 12:50:05 +0100 Subject: [PATCH 093/102] Update to 48.0 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 9c21e65..2450267 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ /gnome-remote-desktop-47.1.tar.xz /gnome-remote-desktop-47.2.tar.xz /gnome-remote-desktop-48.rc.tar.xz +/gnome-remote-desktop-48.0.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6657bb0..54f2b24 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 48~rc +Version: 48.0 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -151,6 +151,9 @@ GNOME desktop environment. %changelog +* Thu Mar 20 2025 nmontero - 48.0-1 +- Update to 48.0 + * Thu Mar 06 2025 Fabio Valentini - 48~rc-1 - Update to 48.rc diff --git a/sources b/sources index 8250658..6191244 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-48.rc.tar.xz) = eab0885424b5565c2586dd32e2a415c713d05937aade915af260b8c0cc296b5324329b9dbee441c25f833aacab66e366104484fe78f4a913bcbe8b04ca9c9598 +SHA512 (gnome-remote-desktop-48.0.tar.xz) = 0c892253d91dafb588039b16b4f390d9b4c19ba93428653e6b843baf137c1b48c3116230915d344494942b55f4aef89834772a89082eadb6d87196430d97f537 From 47eb5467eac7df5707292b8ee21f8d4282228b2f Mon Sep 17 00:00:00 2001 From: nmontero Date: Mon, 14 Apr 2025 12:12:00 +0200 Subject: [PATCH 094/102] Update to 48.1 --- .gitignore | 1 + gnome-remote-desktop.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2450267..085db9f 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ /gnome-remote-desktop-47.2.tar.xz /gnome-remote-desktop-48.rc.tar.xz /gnome-remote-desktop-48.0.tar.xz +/gnome-remote-desktop-48.1.tar.xz diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 54f2b24..336dbd1 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 48.0 +Version: 48.1 Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service @@ -151,6 +151,9 @@ GNOME desktop environment. %changelog +* Mon Apr 14 2025 nmontero - 48.1-1 +- Update to 48.1 + * Thu Mar 20 2025 nmontero - 48.0-1 - Update to 48.0 diff --git a/sources b/sources index 6191244..c8b52a5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-48.0.tar.xz) = 0c892253d91dafb588039b16b4f390d9b4c19ba93428653e6b843baf137c1b48c3116230915d344494942b55f4aef89834772a89082eadb6d87196430d97f537 +SHA512 (gnome-remote-desktop-48.1.tar.xz) = 48cd8320df76fbe2a4bf664ab3ed58ef0517b2f70765e4c00828313403a96da476e07e270d9b4633b3d12ea27f34b09ed07d9e8983032c3ed9a631a4574f4edd From 77423cbd4538a16c2116bc3285bd2948f28ec3d7 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 9 Jul 2025 13:19:06 +0200 Subject: [PATCH 095/102] Update to 49.alpha --- .gitignore | 45 +------ gnome-remote-desktop.spec | 261 +------------------------------------- sources | 2 +- 3 files changed, 6 insertions(+), 302 deletions(-) diff --git a/.gitignore b/.gitignore index 085db9f..586a68d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,2 @@ -/gnome-remote-desktop-0.1.*.tar.xz -/gnome-remote-desktop-40.beta.tar.xz -/gnome-remote-desktop-40.rc.tar.xz -/gnome-remote-desktop-40.0.tar.xz -/gnome-remote-desktop-40.1.tar.xz -/gnome-remote-desktop-41.rc.tar.xz -/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 -/gnome-remote-desktop-42.rc.tar.xz -/gnome-remote-desktop-42.0.tar.xz -/gnome-remote-desktop-42.1.tar.xz -/gnome-remote-desktop-42.1.1.tar.xz -/gnome-remote-desktop-42.2.tar.xz -/gnome-remote-desktop-42.3.tar.xz -/gnome-remote-desktop-43.alpha.tar.xz -/gnome-remote-desktop-43.beta.tar.xz -/gnome-remote-desktop-43.0.tar.xz -/gnome-remote-desktop-43.1.tar.xz -/gnome-remote-desktop-43.2.tar.xz -/gnome-remote-desktop-44.alpha.tar.xz -/gnome-remote-desktop-44.rc.tar.xz -/gnome-remote-desktop-44.0.tar.xz -/gnome-remote-desktop-44.1.tar.xz -/gnome-remote-desktop-44.2.tar.xz -/gnome-remote-desktop-45.alpha.tar.xz -/gnome-remote-desktop-45.beta.tar.xz -/gnome-remote-desktop-45.rc.tar.xz -/gnome-remote-desktop-45.0.tar.xz -/gnome-remote-desktop-45.1.tar.xz -/gnome-remote-desktop-46.0.tar.xz -/gnome-remote-desktop-46.1.tar.xz -/gnome-remote-desktop-46.2.tar.xz -/gnome-remote-desktop-47.alpha.tar.xz -/gnome-remote-desktop-47.beta.tar.xz -/gnome-remote-desktop-47.rc.tar.xz -/gnome-remote-desktop-47.0.tar.xz -/gnome-remote-desktop-47.1.tar.xz -/gnome-remote-desktop-47.2.tar.xz -/gnome-remote-desktop-48.rc.tar.xz -/gnome-remote-desktop-48.0.tar.xz -/gnome-remote-desktop-48.1.tar.xz +/gnome-remote-desktop-*.tar.xz +/gnome-remote-desktop-*-build diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 336dbd1..2fe27ea 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 48.1 +Version: 49~alpha Release: 1%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/48/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/49/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -151,259 +151,4 @@ GNOME desktop environment. %changelog -* Mon Apr 14 2025 nmontero - 48.1-1 -- Update to 48.1 - -* Thu Mar 20 2025 nmontero - 48.0-1 -- Update to 48.0 - -* Thu Mar 06 2025 Fabio Valentini - 48~rc-1 -- Update to 48.rc - -* Thu Jan 16 2025 Fedora Release Engineering - 47.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Nov 25 2024 nmontero - 47.2-1 -- Update to 47.2 - -* Tue Oct 22 2024 nmontero - 47.1-1 -- Update to 47.1 - -* Mon Sep 16 2024 nmontero - 47.0-1 -- Update to 47.0 - -* Sun Sep 01 2024 David King - 47~rc-1 -- Update to 47.rc - -* Wed Aug 14 2024 nmontero - 47~beta-1 -- Update to 47.beta - -* Thu Jul 18 2024 Fedora Release Engineering - 47~alpha-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jul 10 2024 David King - 47~alpha-1 -- Update to 47.alpha - -* Thu May 23 2024 Nieves Montero - 46.2-1 -- Update to 46.2 - -* Thu Apr 18 2024 David King - 46.1-1 -- Update to 46.1 - -* Thu Mar 28 2024 Adam Williamson - 46.0-2 -- Correct systemd macros - -* Wed Jan 24 2024 Fedora Release Engineering - 45.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 45.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Nov 24 2023 Yaakov Selkowitz - 45.1-2 -- Disable VNC in RHEL 10+ - -* Sun Oct 22 2023 Kalev Lember - 45.1-1 -- Update to 45.1 - -* Sat Oct 21 2023 Kalev Lember - 45.0-1 -- Update to 45.0 - -* Tue Sep 05 2023 Kalev Lember - 45.rc-1 -- Update to 45.rc - -* Fri Aug 11 2023 Kalev Lember - 45.beta-1 -- Update to 45.beta - -* Wed Jul 19 2023 Fedora Release Engineering - 45.alpha-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jul 05 2023 Jonas Ådahl - 45~alpha-1 -- Update to 45.alpha - -* Wed May 31 2023 Kalev Lember - 44.2-1 -- Update to 44.2 - -* Mon Apr 24 2023 David King - 44.1-1 -- Update to 44.1 - -* Sun Mar 19 2023 David King - 44.0-1 -- Update to 44.0 - -* Thu Mar 16 2023 Jonas Ådahl - 44~rc-2 -- Enable RDP in ELN - -* Sun Mar 05 2023 David King - 44~rc-1 -- Update to 44.rc - -* Mon Feb 06 2023 David King - 44~alpha-1 -- Update to 44.alpha - -* Thu Jan 19 2023 Fedora Release Engineering - 43.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Dec 08 2022 David King - 43.2-1 -- Update to 43.2 - -* Tue Nov 08 2022 Stephen Gallagher - 43.1-2 -- Fix build on RHEL 9+/ELN - -* Thu Oct 27 2022 David King - 43.1-1 -- Update to 43.1 - -* Tue Sep 20 2022 Jonas Ådahl - 43.0 -- Update to 43.0 - -* Thu Aug 18 2022 Jonas Ådahl - 43~beta-4 -- Drop dependency on tpm2-abrmd - -* Tue Aug 16 2022 Kalev Lember - 43~beta-3 -- Avoid manual requires on tss2* and rely on automatic soname deps instead - -* Mon Aug 15 2022 Simone Caronni - 43~beta-2 -- Rebuild for updated FreeRDP. - -* Thu Aug 11 2022 Jonas Ådahl - 43~beta -- Update to 43.beta - -* Fri Jul 29 2022 Tomas Popela - 43~alpha-2 -- FreeRDP is built without server support in RHEL and ELN so we should disable - the RDP there - -* Thu Jul 28 2022 Jonas Ådahl - 43~alpha -- Update to 43.alpha - -* Thu Jul 21 2022 Fedora Release Engineering - 42.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jul 07 2022 David King - 42.3-1 -- Update to 43.3 (#2091415) - -* Sun May 29 2022 David King - 42.2-1 -- Update to 42.2 - -* Wed May 11 2022 David King - 42.1.1-1 -- Update to 42.1.1 (#2061546) - -* Wed Apr 27 2022 David King - 42.1-2 -- Fix isa macro in Requires - -* Tue Apr 26 2022 David King - 42.1-1 -- Update to 42.1 (#2061546) - -* Mon Mar 21 2022 Jonas Ådahl - 42.0 -- Update to 42.0 - -* Mon Mar 14 2022 Jonas Ådahl - 42~rc-1 -- Update to 42.rc - -* 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 - -* Wed Dec 08 2021 Jonas Ådahl - 41.2-1 -- Update to 41.2 - -* Mon Nov 01 2021 Kalev Lember - 41.1-1 -- Update to 41.1 - -* Mon Sep 20 2021 Kalev Lember - 41.0-1 -- Update to 41.0 - -* Tue Sep 07 2021 Jonas Ådahl - 41~rc-1 -- Bump to 41.rc - -* Wed Aug 04 2021 Kalev Lember - 40.1-3 -- Avoid systemd_requires as per updated packaging guidelines - -* Thu Jul 22 2021 Fedora Release Engineering - 40.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon May 03 2021 Jonas Ådahl - 40.1-1 -- Bump to 40.1 - -* Thu Apr 15 2021 Simone Caronni - 40.0-2 -- Rebuild for updated FreeRDP. - -* Mon Mar 22 2021 Kalev Lember - 40.0-1 -- Update to 40.0 - -* Thu Mar 18 2021 Michael Catanzaro - 40.0~rc-2 -- Add Obsoletes: vino - -* Mon Mar 15 2021 Kalev Lember - 40.0~rc-1 -- Update to 40.rc - -* Thu Mar 04 2021 Jonas Ådahl - 40.0~beta-1 -- Bump to 40.beta - -* Tue Jan 26 2021 Fedora Release Engineering - 0.1.9-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-2 -- Copy using the right destination stride - -* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-1 -- Update to 0.1.9 -- Backport race condition crash fix -- Rebase anon-tls patches - -* Thu Aug 27 2020 Ray Strode - 0.1.8-3 -- Fix crash - Related: #1844993 - -* Mon Jun 1 2020 Felipe Borges - 0.1.8-2 -- Fix black screen issue in remote connections on Wayland - -* Wed Mar 11 2020 Jonas Ådahl - 0.1.8-1 -- Update to 0.1.8 - -* Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jul 25 2019 Fedora Release Engineering - 0.1.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Mon Mar 4 2019 Jonas Ådahl - 0.1.7-1 -- Update to 0.1.7 - -* Thu Jan 31 2019 Fedora Release Engineering - 0.1.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Tue Oct 2 2018 Jonas Ådahl - 0.1.6-2 -- Don't crash when PipeWire disconnects (rhbz#1632781) - -* Tue Aug 7 2018 Jonas Ådahl - 0.1.6 -- Update to 0.1.6 -- Apply ANON-TLS patch -- Depend on pipewire 0.2.2 - -* Fri Jul 13 2018 Fedora Release Engineering - 0.1.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed May 30 2018 Jonas Ådahl - 0.1.4-1 -- Update to new version - -* Fri Feb 09 2018 Igor Gnatenko - 0.1.2-5 -- Escape macros in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 0.1.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Aug 29 2017 Jonas Ådahl - 0.1.2-3 -- Use %%autosetup -- Install licence file - -* Tue Aug 22 2017 Jonas Ådahl - 0.1.2-2 -- Remove gschema compilation step as that had been deprecated - -* Mon Aug 21 2017 Jonas Ådahl - 0.1.2-1 -- Update to 0.1.2 -- Changed tabs to spaces -- Added systemd user macros -- Install to correct systemd user unit directory -- Compile gsettings schemas after install and uninstall - -* Mon Aug 21 2017 Jonas Ådahl - 0.1.1-1 -- First packaged version +%autochangelog diff --git a/sources b/sources index c8b52a5..e997d9d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-48.1.tar.xz) = 48cd8320df76fbe2a4bf664ab3ed58ef0517b2f70765e4c00828313403a96da476e07e270d9b4633b3d12ea27f34b09ed07d9e8983032c3ed9a631a4574f4edd +SHA512 (gnome-remote-desktop-49.alpha.tar.xz) = 0e383056c82b51a13b1e9af9e84616f225e052f9328be8a05533c30f730c568eb0fcf93f3384a681dc60281a02db012e26798caf38de2b2fa5c5a7184f1e5a71 From 5107a61be025ababb782988bfde6f6d3119a5ba3 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 22:45:29 +0000 Subject: [PATCH 096/102] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- gnome-remote-desktop.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 2fe27ea..bbf57d8 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 49~alpha -Release: 1%{?dist} +Release: 2%{?dist} Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -151,4 +151,7 @@ GNOME desktop environment. %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 49~alpha-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + %autochangelog From ca47971a7f63aaeb35bb31648609d71aa362960c Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 29 Aug 2025 14:30:16 -0500 Subject: [PATCH 097/102] Fix changelog and use %autorelease --- gnome-remote-desktop.spec | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index bbf57d8..6481b6c 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -13,7 +13,7 @@ Name: gnome-remote-desktop Version: 49~alpha -Release: 2%{?dist} +Release: %autorelease Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later @@ -151,7 +151,4 @@ GNOME desktop environment. %changelog -* Wed Jul 23 2025 Fedora Release Engineering - 49~alpha-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - %autochangelog From c0cb73086cf3e478595c5f643c1cef4c50dd5835 Mon Sep 17 00:00:00 2001 From: Gordon Messmer Date: Fri, 2 Aug 2024 22:42:24 -0700 Subject: [PATCH 098/102] Examine the server process GOT for signs of tampering. --- .fmf/version | 1 + plans/main.fmf | 6 +++++ tests/got-audit/got-audit.gdb | 2 ++ tests/got-audit/main.fmf | 10 +++++++++ tests/got-audit/runtest.sh | 41 +++++++++++++++++++++++++++++++++++ tests/main.fmf | 2 ++ 6 files changed, 62 insertions(+) create mode 100644 .fmf/version create mode 100644 plans/main.fmf create mode 100644 tests/got-audit/got-audit.gdb create mode 100644 tests/got-audit/main.fmf create mode 100755 tests/got-audit/runtest.sh create mode 100644 tests/main.fmf diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..ae0c305 --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,6 @@ +summary: Run all tests +execute: + how: tmt +discover: + how: fmf + diff --git a/tests/got-audit/got-audit.gdb b/tests/got-audit/got-audit.gdb new file mode 100644 index 0000000..6661297 --- /dev/null +++ b/tests/got-audit/got-audit.gdb @@ -0,0 +1,2 @@ +gef config gef.disable_color True +got-audit --all diff --git a/tests/got-audit/main.fmf b/tests/got-audit/main.fmf new file mode 100644 index 0000000..25caf1d --- /dev/null +++ b/tests/got-audit/main.fmf @@ -0,0 +1,10 @@ +summary: Audit the GOT for signs of tampering +description: | + Pointers in the server process GOT will be checked to ensure that + each function pointer's value is within a shared object file + that exports a symbol of that name, and that no shared object + files export conflicting symbols. +contact: Gordon Messmer +require+: + - gdb-gef # needed to test got-audit + - gnome-remote-desktop diff --git a/tests/got-audit/runtest.sh b/tests/got-audit/runtest.sh new file mode 100755 index 0000000..c4b9b29 --- /dev/null +++ b/tests/got-audit/runtest.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/gnome-remote-desktop/Sanity/got-audit +# Description: Check pointers in the server process GOT for signs of tampering +# Author: Gordon Messmer +# + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "systemctl start --user gnome-remote-desktop-headless" + rlRun "TestDir=\$(pwd)" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "auditfile=\$(mktemp --tmpdir=${TmpDir})" + rlPhaseEnd + + rlPhaseStartTest "Run GEF got-audit" + rlRun "SERVICE_PID=\$( systemctl show --property=MainPID --user gnome-remote-desktop-headless.service | cut -f2 -d= )" + rlRun "echo SERVICE_PID is '$SERVICE_PID'" + [ -n "$SERVICE_PID" ] || rlFail "No service pid was found" + rlRun "gdb-gef --pid '$SERVICE_PID' --command='$TestDir'/got-audit.gdb --batch > '$auditfile'" + # Basic test: ensure that at least one symbol is found in libc.so, + # to verify that the report looks plausible. + rlAssertGrep " : /.*/libc.so" "$auditfile" + # Ensure the got-audit did not report any errors + rlAssertNotGrep " :: ERROR" "$auditfile" + rlRun "cp '$auditfile' '$TMT_TEST_DATA'/got-audit.txt" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "systemctl stop --user gnome-remote-desktop-headless" + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..f225a72 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,2 @@ +test: ./runtest.sh +framework: beakerlib From 8c9e6a004c8a62fa07b11d9a13c6723504f0b1df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 16 Sep 2025 23:01:02 +0200 Subject: [PATCH 099/102] Bump version to 49.0 --- gnome-remote-desktop.spec | 2 +- gnutls-anontls.patch | 108 +++++++++++++++++++------------------- sources | 2 +- 3 files changed, 55 insertions(+), 57 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 6481b6c..dfb1061 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 49~alpha +Version: 49.0 Release: %autorelease Summary: GNOME Remote Desktop screen share service diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 56d91f6..c8d1c88 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 0e754e3a90f486c031da535656584673016107a3 Mon Sep 17 00:00:00 2001 +From d95dd52e53ebab2b609d2f3f5e98065eda39149b 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 @@ -13,22 +13,22 @@ VNC connection. src/grd-enums.h | 6 + src/grd-session-vnc.c | 120 ++++- src/grd-session-vnc.h | 17 + - src/grd-settings-user.c | 3 + + src/grd-settings-user.c | 4 + src/grd-settings.c | 18 + src/grd-vnc-server.c | 49 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 673 insertions(+), 26 deletions(-) + 11 files changed, 674 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 995863ce..40733a6e 100644 +index ce7fb732..4168fa8c 100644 --- a/meson.build +++ b/meson.build -@@ -62,6 +62,7 @@ endif +@@ -70,6 +70,7 @@ endif if have_vnc libvncclient_dep = dependency('libvncclient') libvncserver_dep = dependency('libvncserver') @@ -37,10 +37,10 @@ index 995863ce..40733a6e 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index 028bdf9a..47a1d921 100644 +index 25b42661..f4438764 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h -@@ -33,6 +33,12 @@ typedef enum +@@ -32,6 +32,12 @@ typedef enum GRD_VNC_AUTH_METHOD_PASSWORD } GrdVncAuthMethod; @@ -54,7 +54,7 @@ index 028bdf9a..47a1d921 100644 { GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY, diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 0ca76e89..e13ac013 100644 +index b3fe63a8..b51b0db2 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -46,7 +46,9 @@ struct _GrdSessionVnc @@ -248,10 +248,10 @@ index 0ca76e89..e13ac013 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 be79cf4a..ffc8d27a 100644 +index 8fc71850..3c08f812 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -37,6 +37,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, +@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, GRD, SESSION_VNC, GrdSession) @@ -261,7 +261,7 @@ index be79cf4a..ffc8d27a 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -63,6 +66,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, +@@ -62,4 +65,18 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width); @@ -270,7 +270,7 @@ index be79cf4a..ffc8d27a 100644 +int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); - ++ +rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc); + +void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -280,24 +280,23 @@ index be79cf4a..ffc8d27a 100644 + GrdVncSocketGrabFunc grab_func); + +GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); -+ - #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c -index 20b81a94..34115078 100644 +index 1bd679e4..c54e0b80 100644 --- a/src/grd-settings-user.c +++ b/src/grd-settings-user.c -@@ -79,6 +79,9 @@ grd_settings_user_constructed (GObject *object) - g_settings_bind (settings->vnc_settings, "auth-method", - settings, "vnc-auth-method", +@@ -91,6 +91,10 @@ grd_settings_user_constructed (GObject *object) + g_settings_bind (settings->vnc_settings, "screen-share-mode", + settings, "vnc-screen-share-mode", G_SETTINGS_BIND_DEFAULT); + g_settings_bind (settings->vnc_settings, "encryption", + settings, "vnc-encryption", + G_SETTINGS_BIND_DEFAULT); ++ - switch (grd_settings_get_runtime_mode (GRD_SETTINGS (settings))) - { + G_OBJECT_CLASS (grd_settings_user_parent_class)->constructed (object); + } diff --git a/src/grd-settings.c b/src/grd-settings.c -index fba1d714..f3475010 100644 +index 8393ace5..a65385ef 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -58,6 +58,7 @@ enum @@ -316,7 +315,7 @@ index fba1d714..f3475010 100644 } vnc; } GrdSettingsPrivate; -@@ -425,6 +427,9 @@ grd_settings_get_property (GObject *object, +@@ -426,6 +428,9 @@ grd_settings_get_property (GObject *object, else g_value_set_enum (value, priv->vnc.auth_method); break; @@ -326,7 +325,7 @@ index fba1d714..f3475010 100644 default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } -@@ -562,6 +567,9 @@ grd_settings_set_property (GObject *object, +@@ -563,6 +568,9 @@ grd_settings_set_property (GObject *object, case PROP_VNC_AUTH_METHOD: priv->vnc.auth_method = g_value_get_enum (value); break; @@ -336,7 +335,7 @@ index fba1d714..f3475010 100644 default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } -@@ -743,4 +751,14 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -744,4 +752,14 @@ grd_settings_class_init (GrdSettingsClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); @@ -352,7 +351,7 @@ index fba1d714..f3475010 100644 + G_PARAM_STATIC_STRINGS)); } diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index 877272d2..59a13db5 100644 +index 83220655..2f8229b2 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,6 +24,7 @@ @@ -417,7 +416,7 @@ index 877272d2..59a13db5 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -241,11 +282,19 @@ grd_vnc_server_dispose (GObject *object) +@@ -242,11 +283,19 @@ grd_vnc_server_dispose (GObject *object) static void grd_vnc_server_constructed (GObject *object) { @@ -922,10 +921,10 @@ index 00000000..135ef8c7 + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 914e2cc1..4e820c59 100644 +index 1b2cb93d..6b8b517e 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -188,10 +188,13 @@ if have_vnc +@@ -274,10 +274,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -940,10 +939,10 @@ index 914e2cc1..4e820c59 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 c3d583c1..8a736c82 100644 +index 2986a0e5..a0169789 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -@@ -148,5 +148,15 @@ +@@ -173,6 +173,16 @@ configuration updates. @@ -958,12 +957,13 @@ index c3d583c1..8a736c82 100644 + + - + + -- -2.44.0 +2.50.1 -From 6e5f6deab459acdd1e7785ab6975932f2815548f Mon Sep 17 00:00:00 2001 +From 0dd3f241226ab3e2f64dd1aa8f1457b7c0b045f1 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 @@ -976,7 +976,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 e13ac013..30820d7d 100644 +index b51b0db2..f2757519 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -42,14 +42,27 @@ @@ -1128,10 +1128,10 @@ index e13ac013..30820d7d 100644 + G_TYPE_NONE, 0); } -- -2.44.0 +2.50.1 -From 00f4fdfc676361f5f71e6f6b346c11cb7088b836 Mon Sep 17 00:00:00 2001 +From 1e9e0df9861bb0fed61125181925ad8bfb813e7e 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 @@ -1144,7 +1144,7 @@ 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 30820d7d..3ee06f79 100644 +index f2757519..80bd56e9 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, @@ -1188,23 +1188,21 @@ index 30820d7d..3ee06f79 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index ffc8d27a..a86d61d2 100644 +index 3c08f812..f230887e 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,4 +79,6 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); +void grd_session_vnc_dispatch (GrdSessionVnc *session_vnc); + GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); - - #endif /* GRD_SESSION_VNC_H */ -- -2.44.0 +2.50.1 -From 69efe6df5e9e8548c0241a612980af31f1dc5c5a Mon Sep 17 00:00:00 2001 +From ce816ac0c8b6718958b0cc26ac7508084bf2f7f9 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 @@ -1278,10 +1276,10 @@ index ec4758e0..ac6c35f6 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.44.0 +2.50.1 -From 2a11c4f47165b62409f4428b9de1bda59c6ebb2f Mon Sep 17 00:00:00 2001 +From 7da830b9992060c7699ead61fcfdc8a81b79f6c2 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 @@ -1298,10 +1296,10 @@ 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 a86d61d2..5db388b0 100644 +index f230887e..9dd33442 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1448,10 +1446,10 @@ index ac6c35f6..312b6b92 100644 } -- -2.44.0 +2.50.1 -From 1ed580b541ab5c3b815d8e29cf3aa71f1de0b649 Mon Sep 17 00:00:00 2001 +From afe2e3960aeaff2c089349ce0b3f686dc11b8b96 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 @@ -1470,7 +1468,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 3ee06f79..6e118d88 100644 +index 80bd56e9..03442a3c 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1503,10 +1501,10 @@ index 3ee06f79..6e118d88 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.44.0 +2.50.1 -From 9b7b729d9f945fcb2942c74d8ab7a9b62d6cf4bd Mon Sep 17 00:00:00 2001 +From 6c5bbaf18e6ea738f3109f10b1369b74cd2ab2d9 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 @@ -1524,10 +1522,10 @@ dropped. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 5db388b0..c4f4e8d4 100644 +index 9dd33442..98c73451 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -68,7 +68,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -67,7 +67,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); @@ -1538,5 +1536,5 @@ index 5db388b0..c4f4e8d4 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.44.0 +2.50.1 diff --git a/sources b/sources index e997d9d..659c033 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-49.alpha.tar.xz) = 0e383056c82b51a13b1e9af9e84616f225e052f9328be8a05533c30f730c568eb0fcf93f3384a681dc60281a02db012e26798caf38de2b2fa5c5a7184f1e5a71 +SHA512 (gnome-remote-desktop-49.0.tar.xz) = 3959407ef18dd44bdb7dcf26d939f071fcb1167dd6dc55c6121bf69a523b6c291d8ebdf94f5bd27bbbb061252a2227f8529aeba0c9f48dc3550565ac914f39ca From b9ed222ec51d239294afb074c7a57d0b81bffc1f Mon Sep 17 00:00:00 2001 From: Petr Schindler Date: Thu, 16 Oct 2025 11:25:51 +0200 Subject: [PATCH 100/102] Update to 49.1 --- gnome-remote-desktop.spec | 2 +- gnutls-anontls.patch | 45 ++++++++++++++++++++------------------- sources | 2 +- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index dfb1061..ed8d375 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 49.0 +Version: 49.1 Release: %autorelease Summary: GNOME Remote Desktop screen share service diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index c8d1c88..6151d72 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From d95dd52e53ebab2b609d2f3f5e98065eda39149b Mon Sep 17 00:00:00 2001 +From 005617f3e2cb59241dc02c2db714c2b934553acb 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,7 +25,7 @@ VNC connection. create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index ce7fb732..4168fa8c 100644 +index 5dcb77c3..269238c0 100644 --- a/meson.build +++ b/meson.build @@ -70,6 +70,7 @@ endif @@ -54,7 +54,7 @@ index 25b42661..f4438764 100644 { GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY, diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index b3fe63a8..b51b0db2 100644 +index f7e14080..b5e4fe13 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -46,7 +46,9 @@ struct _GrdSessionVnc @@ -960,10 +960,10 @@ index 2986a0e5..a0169789 100644 -- -2.50.1 +2.51.0 -From 0dd3f241226ab3e2f64dd1aa8f1457b7c0b045f1 Mon Sep 17 00:00:00 2001 +From bc65e13fb3687b2f79433c880525333810d6ba31 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 @@ -976,7 +976,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 b51b0db2..f2757519 100644 +index b5e4fe13..79de30d4 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -42,14 +42,27 @@ @@ -1109,9 +1109,9 @@ index b51b0db2..f2757519 100644 } static void -@@ -1020,4 +1065,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) - session_class->remote_desktop_session_started = - grd_session_vnc_remote_desktop_session_started; +@@ -1021,4 +1066,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) + + session_class->stop = grd_session_vnc_stop; session_class->on_stream_created = grd_session_vnc_on_stream_created; + + signals[PAUSED] = g_signal_new ("paused", @@ -1128,10 +1128,10 @@ index b51b0db2..f2757519 100644 + G_TYPE_NONE, 0); } -- -2.50.1 +2.51.0 -From 1e9e0df9861bb0fed61125181925ad8bfb813e7e Mon Sep 17 00:00:00 2001 +From aabc0245e247fbffe9ae6b8281cbf2bccc9ab882 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 @@ -1144,7 +1144,7 @@ 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 f2757519..80bd56e9 100644 +index 79de30d4..b48b9017 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, @@ -1199,10 +1199,10 @@ index 3c08f812..f230887e 100644 + GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); -- -2.50.1 +2.51.0 -From ce816ac0c8b6718958b0cc26ac7508084bf2f7f9 Mon Sep 17 00:00:00 2001 +From 2d43f0586ae24b202beda4d283b25fec3e722af7 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 @@ -1276,10 +1276,10 @@ index ec4758e0..ac6c35f6 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.50.1 +2.51.0 -From 7da830b9992060c7699ead61fcfdc8a81b79f6c2 Mon Sep 17 00:00:00 2001 +From 62e04d794eaf2c0acfc16af0b0968fead4bb4df1 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 @@ -1446,10 +1446,10 @@ index ac6c35f6..312b6b92 100644 } -- -2.50.1 +2.51.0 -From afe2e3960aeaff2c089349ce0b3f686dc11b8b96 Mon Sep 17 00:00:00 2001 +From 799e2b287bd055c46709d0063436b819894200e6 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 @@ -1468,7 +1468,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 80bd56e9..03442a3c 100644 +index b48b9017..87cc7d86 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1501,10 +1501,10 @@ index 80bd56e9..03442a3c 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.50.1 +2.51.0 -From 6c5bbaf18e6ea738f3109f10b1369b74cd2ab2d9 Mon Sep 17 00:00:00 2001 +From b74286bdb8876d27d279c725357d73a23a3316b4 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 @@ -1536,5 +1536,6 @@ index 9dd33442..98c73451 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.50.1 +2.51.0 + diff --git a/sources b/sources index 659c033..0a014c5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-49.0.tar.xz) = 3959407ef18dd44bdb7dcf26d939f071fcb1167dd6dc55c6121bf69a523b6c291d8ebdf94f5bd27bbbb061252a2227f8529aeba0c9f48dc3550565ac914f39ca +SHA512 (gnome-remote-desktop-49.1.tar.xz) = 81a2322fb8d77f8192943ca0e750caf2d2c179d580820c6c059bb857f7d4343c35c7581b184fd5c673f488cd8e976b0f053dbd67a5c9a19045ff9bcdfea55369 From d7212cb16d61b3ee7fc725764d70cccdf83ce12a Mon Sep 17 00:00:00 2001 From: Tom spot Callaway Date: Tue, 4 Nov 2025 15:35:31 -0500 Subject: [PATCH 101/102] rebuild for new fuse3 From 8f70eb6c59804209ef1643f9f8902f0807749d51 Mon Sep 17 00:00:00 2001 From: Adrian Vovk Date: Tue, 9 Dec 2025 19:54:47 -0500 Subject: [PATCH 102/102] Update to 49.2 --- gnome-remote-desktop.spec | 2 +- sources | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index ed8d375..5d15c82 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,7 +12,7 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 49.1 +Version: 49.2 Release: %autorelease Summary: GNOME Remote Desktop screen share service diff --git a/sources b/sources index 0a014c5..d817ea5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-49.1.tar.xz) = 81a2322fb8d77f8192943ca0e750caf2d2c179d580820c6c059bb857f7d4343c35c7581b184fd5c673f488cd8e976b0f053dbd67a5c9a19045ff9bcdfea55369 +SHA512 (gnome-remote-desktop-49.2.tar.xz) = b678ee125e1b5f6d58e85f57a332cf02ee6b5dee654469e66f496f9467e6512a701a3e37a9580562e0b064320380d2df4ca6b15e20bd35b1605b4bd9de73827c