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
|
Name: gvfs
|
||||||
Version: 1.36.2
|
Version: 1.36.2
|
||||||
Release: 10%{?dist}
|
Release: 11%{?dist}
|
||||||
Summary: Backends for the gio framework in GLib
|
Summary: Backends for the gio framework in GLib
|
||||||
|
|
||||||
License: GPLv3 and LGPLv2+ and BSD and MPLv2.0
|
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
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1569868
|
||||||
Patch10: smb-Improve-enumeration-performance.patch
|
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
|
||||||
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
||||||
BuildRequires: pkgconfig(dbus-glib-1)
|
BuildRequires: pkgconfig(dbus-glib-1)
|
||||||
@ -441,6 +444,9 @@ killall -USR1 gvfsd >&/dev/null || :
|
|||||||
%{_datadir}/installed-tests
|
%{_datadir}/installed-tests
|
||||||
|
|
||||||
%changelog
|
%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
|
* Wed Aug 05 2020 Ondrej Holy <oholy@redhat.com> - 1.36.2-10
|
||||||
- Fix libusb(x) requirements (rhbz#1866332)
|
- Fix libusb(x) requirements (rhbz#1866332)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user