import gvfs-1.36.2-11.el8
This commit is contained in:
parent
af41eac897
commit
59053b667e
164
SOURCES/goa-Add-support-for-certificate-prompts.patch
Normal file
164
SOURCES/goa-Add-support-for-certificate-prompts.patch
Normal file
@ -0,0 +1,164 @@
|
||||
From bbc95d6716ac491489f059c68a6dd258e38aee79 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Holy <oholy@redhat.com>
|
||||
Date: Mon, 25 Nov 2019 16:53:31 +0100
|
||||
Subject: [PATCH] goa: Add support for certificate prompts
|
||||
|
||||
Since commit f5ee590e, it is not possible to access Nextcloud/ownCloud
|
||||
shares with self-signed (or invalid) certificates. This is because
|
||||
the mount operation is handled by GOA volume monitor and the prompt
|
||||
to accept certificate is not shown. Let's update the volume monitor
|
||||
to handle just passwords and show the prompt to the client.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/gvfs/issues/251
|
||||
---
|
||||
monitor/goa/goavolume.c | 98 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 96 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/monitor/goa/goavolume.c b/monitor/goa/goavolume.c
|
||||
index c077dd94..5e9097c6 100644
|
||||
--- a/monitor/goa/goavolume.c
|
||||
+++ b/monitor/goa/goavolume.c
|
||||
@@ -64,6 +64,7 @@ G_DEFINE_TYPE_EXTENDED (GVfsGoaVolume, g_vfs_goa_volume, G_TYPE_OBJECT, 0,
|
||||
typedef struct
|
||||
{
|
||||
GMountOperation *mount_operation;
|
||||
+ GMountOperation *mount_operation_orig;
|
||||
gchar *passwd;
|
||||
} MountOp;
|
||||
|
||||
@@ -72,6 +73,13 @@ mount_op_free (MountOp *data)
|
||||
{
|
||||
g_clear_object (&data->mount_operation);
|
||||
g_free (data->passwd);
|
||||
+
|
||||
+ if (data->mount_operation_orig != NULL)
|
||||
+ {
|
||||
+ g_signal_handlers_disconnect_by_data (data->mount_operation_orig, data);
|
||||
+ g_object_unref (data->mount_operation_orig);
|
||||
+ }
|
||||
+
|
||||
g_slice_free (MountOp, data);
|
||||
}
|
||||
|
||||
@@ -97,6 +105,88 @@ account_attention_needed_cb (GObject *_object, GParamSpec *pspec, gpointer user_
|
||||
|
||||
/* ---------------------------------------------------------------------------------------------------- */
|
||||
|
||||
+GType g_vfs_goa_mount_operation_get_type (void) G_GNUC_CONST;
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ GMountOperation parent_instance;
|
||||
+} GVfsGoaMountOperation;
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ GMountOperationClass parent_class;
|
||||
+} GVfsGoaMountOperationClass;
|
||||
+
|
||||
+static GMountOperation *
|
||||
+g_vfs_goa_mount_operation_new (void)
|
||||
+{
|
||||
+ return G_MOUNT_OPERATION (g_object_new (g_vfs_goa_mount_operation_get_type (), NULL));
|
||||
+}
|
||||
+
|
||||
+G_DEFINE_TYPE (GVfsGoaMountOperation, g_vfs_goa_mount_operation, G_TYPE_MOUNT_OPERATION)
|
||||
+
|
||||
+static void
|
||||
+g_vfs_goa_mount_operation_init (GVfsGoaMountOperation *mount_operation)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+g_vfs_goa_mount_operation_ask_question (GMountOperation *op,
|
||||
+ const char *message,
|
||||
+ const char *choices[])
|
||||
+{
|
||||
+ /* This is needed to prevent G_MOUNT_OPERATION_UNHANDLED reply in idle. */
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+g_vfs_goa_mount_operation_class_init (GVfsGoaMountOperationClass *klass)
|
||||
+{
|
||||
+ GMountOperationClass *mount_op_class;
|
||||
+
|
||||
+ mount_op_class = G_MOUNT_OPERATION_CLASS (klass);
|
||||
+ mount_op_class->ask_question = g_vfs_goa_mount_operation_ask_question;
|
||||
+}
|
||||
+
|
||||
+/* ---------------------------------------------------------------------------------------------------- */
|
||||
+
|
||||
+static void
|
||||
+ask_question_reply_cb (GMountOperation *op,
|
||||
+ GMountOperationResult result,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ MountOp *data = g_task_get_task_data (user_data);
|
||||
+
|
||||
+ g_mount_operation_set_choice (data->mount_operation,
|
||||
+ g_mount_operation_get_choice (op));
|
||||
+ g_mount_operation_reply (data->mount_operation, result);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+mount_operation_ask_question_cb (GMountOperation *op,
|
||||
+ gchar *message,
|
||||
+ GStrv choices,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ MountOp *data = g_task_get_task_data (user_data);
|
||||
+
|
||||
+ if (data->mount_operation_orig != NULL)
|
||||
+ {
|
||||
+ g_signal_connect (data->mount_operation_orig,
|
||||
+ "reply",
|
||||
+ G_CALLBACK (ask_question_reply_cb),
|
||||
+ user_data);
|
||||
+ g_signal_emit_by_name (data->mount_operation_orig,
|
||||
+ "ask-question",
|
||||
+ message,
|
||||
+ choices);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ g_mount_operation_reply (data->mount_operation,
|
||||
+ G_MOUNT_OPERATION_UNHANDLED);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void
|
||||
mount_operation_ask_password_cb (GMountOperation *op,
|
||||
gchar *message,
|
||||
@@ -412,7 +502,7 @@ g_vfs_goa_volume_get_uuid (GVolume *_self)
|
||||
static void
|
||||
g_vfs_goa_volume_mount (GVolume *_self,
|
||||
GMountMountFlags flags,
|
||||
- GMountOperation *mount_operation,
|
||||
+ GMountOperation *mount_operation_orig,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
@@ -423,6 +513,9 @@ g_vfs_goa_volume_mount (GVolume *_self,
|
||||
GoaAccount *account;
|
||||
|
||||
data = g_slice_new0 (MountOp);
|
||||
+ if (mount_operation_orig != NULL)
|
||||
+ data->mount_operation_orig = g_object_ref (mount_operation_orig);
|
||||
+
|
||||
task = g_task_new (self, cancellable, callback, user_data);
|
||||
g_task_set_source_tag (task, g_vfs_goa_volume_mount);
|
||||
g_task_set_task_data (task, data, (GDestroyNotify) mount_op_free);
|
||||
@@ -431,8 +524,9 @@ g_vfs_goa_volume_mount (GVolume *_self,
|
||||
* monitor because it is set up to emit MountOpAskPassword on
|
||||
* ask-password.
|
||||
*/
|
||||
- data->mount_operation = g_mount_operation_new ();
|
||||
+ data->mount_operation = g_vfs_goa_mount_operation_new ();
|
||||
g_signal_connect (data->mount_operation, "ask-password", G_CALLBACK (mount_operation_ask_password_cb), task);
|
||||
+ g_signal_connect (data->mount_operation, "ask-question", G_CALLBACK (mount_operation_ask_question_cb), task);
|
||||
|
||||
account = goa_object_peek_account (self->object);
|
||||
goa_account_call_ensure_credentials (account, cancellable, ensure_credentials_cb, task);
|
||||
--
|
||||
2.28.0
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
Name: gvfs
|
||||
Version: 1.36.2
|
||||
Release: 10%{?dist}
|
||||
Release: 11%{?dist}
|
||||
Summary: Backends for the gio framework in GLib
|
||||
|
||||
License: GPLv3 and LGPLv2+ and BSD and MPLv2.0
|
||||
@ -63,6 +63,9 @@ Patch9: udisks2-Fix-crashes-caused-by-missing-source-tag.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1569868
|
||||
Patch10: smb-Improve-enumeration-performance.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1889411
|
||||
Patch11: goa-Add-support-for-certificate-prompts.patch
|
||||
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
||||
BuildRequires: pkgconfig(dbus-glib-1)
|
||||
@ -441,6 +444,9 @@ killall -USR1 gvfsd >&/dev/null || :
|
||||
%{_datadir}/installed-tests
|
||||
|
||||
%changelog
|
||||
* Tue Nov 03 2020 Ondrej Holy <oholy@redhat.com> - 1.36.2-11
|
||||
- Add support for certificates prompts for GOA mounts (rhbz#1889411)
|
||||
|
||||
* Wed Aug 05 2020 Ondrej Holy <oholy@redhat.com> - 1.36.2-10
|
||||
- Fix libusb(x) requirements (rhbz#1866332)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user