From b2d876a16de9214270f248d7c445542120ae7800 Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Mon, 3 Aug 2020 01:46:00 -0400 Subject: [PATCH 1/5] Add autotools support for libsecret --- README | 1 + configure.ac | 22 ++++++++++++++++++++++ src/Makefile.am | 3 +++ 3 files changed, 26 insertions(+) diff --git a/README b/README index 118da697..32a8a5cc 100644 --- a/README +++ b/README @@ -15,6 +15,7 @@ To build, MATE Power Manager requires - Glib (2.36.0 or later) - GTK+3 (3.14.0 or later) + - libsecret (0.11 or later) - GNOME Keyring (3.0.0 or later) - DBus (0.70 or later) - libnotify (0.7.0 or later) diff --git a/configure.ac b/configure.ac index 1db39321..b4758dca 100644 --- a/configure.ac +++ b/configure.ac @@ -68,6 +68,7 @@ GLIB_REQUIRED=2.50.0 GIO_REQUIRED=2.50.0 GDK_REQUIRED=3.22.0 GTK_REQUIRED=3.22.0 +LIBSECRET_REQUIRED=0.11 GNOME_KEYRING_REQUIRED=3.0.0 DBUS_REQUIRED=1.0 DBUS_GLIB_REQUIRED=0.70 @@ -134,6 +135,22 @@ else fi AM_CONDITIONAL([HAVE_TESTS], [test $have_tests = yes]) +dnl --------------------------------------------------------------------------- +dnl - Build libsecret support +dnl --------------------------------------------------------------------------- +AC_ARG_WITH(libsecret, + [AS_HELP_STRING([--with-libsecret], + [Enable the use of libsecret])], + [], + [with_libsecret=no]) + +AM_CONDITIONAL([WITH_LIBSECRET],[test "$with_libsecret" = "yes"]) + +if test "$with_libsecret" = "yes"; then + PKG_CHECK_MODULES(LIBSECRET, libsecret-1 >= $LIBSECRET_REQUIRED) + AC_DEFINE([WITH_LIBSECRET],[1],[Define if LIBSECRET support is enabled]) +fi + dnl --------------------------------------------------------------------------- dnl - Build gnome-keyring support dnl --------------------------------------------------------------------------- @@ -150,6 +167,10 @@ if test "$with_keyring" = "yes"; then AC_DEFINE([WITH_KEYRING],[1],[Define if KEYRING support is enabled]) fi +if test "$with_libsecret" = "yes" -a "$with_keyring" = "yes"; then + AC_MSG_ERROR([Please select only 1, keyring or libsecret]) +fi + dnl --------------------------------------------------------------------------- dnl - Build applets dnl --------------------------------------------------------------------------- @@ -222,6 +243,7 @@ echo " compiler: ${CC} cflags: ${CFLAGS} cwarnings: ${WARN_CFLAGS} + libsecret support: ${with_libsecret} gnome-keyring support: ${with_keyring} Building extra applets: ${enable_applets} Self test support: ${have_tests} diff --git a/src/Makefile.am b/src/Makefile.am index 1a966e8f..47815c5f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -14,6 +14,7 @@ AM_CPPFLAGS = \ $(GLIB_CFLAGS) \ $(DBUS_CFLAGS) \ $(CAIRO_CFLAGS) \ + $(LIBSECRET_CFLAGS) \ $(KEYRING_CFLAGS) \ $(X11_CFLAGS) \ $(LIBNOTIFY_CFLAGS) \ @@ -197,6 +198,7 @@ mate_power_manager_LDADD = \ $(X11_LIBS) \ $(GSTREAMER_LIBS) \ $(CAIRO_LIBS) \ + $(LIBSECRET_LIBS) \ $(KEYRING_LIBS) \ $(DBUS_LIBS) \ $(X11_LIBS) \ @@ -259,6 +261,7 @@ mate_power_self_test_LDADD = \ $(GLIB_LIBS) \ $(X11_LIBS) \ $(CAIRO_LIBS) \ + $(LIBSECRET_LIBS) \ $(KEYRING_LIBS) \ $(GSTREAMER_LIBS) \ $(UPOWER_LIBS) \ From 7dbbf59fc5dc64cf512932993616a06903d5f22b Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Mon, 3 Aug 2020 01:49:47 -0400 Subject: [PATCH 2/5] gpm-control.c: Add libsecret implementation to gpm_control_suspend() --- src/gpm-control.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/gpm-control.c b/src/gpm-control.c index 4834a050..e64bfb12 100644 --- a/src/gpm-control.c +++ b/src/gpm-control.c @@ -39,6 +39,9 @@ #include #include +#ifdef WITH_LIBSECRET +#include +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING #include #endif /* WITH_KEYRING */ @@ -210,6 +213,13 @@ gpm_control_suspend (GpmControl *control, GError **error) EggConsoleKit *console; GpmScreensaver *screensaver; guint32 throttle_cookie = 0; +#ifdef WITH_LIBSECRET + gboolean lock_libsecret; + GCancellable *libsecret_cancellable = NULL; + SecretService *secretservice_proxy = NULL; + gint num_secrets_locked; + GList *libsecret_collections = NULL; +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING gboolean lock_gnome_keyring; GnomeKeyringResult keyres; @@ -233,6 +243,35 @@ gpm_control_suspend (GpmControl *control, GError **error) } } +#ifdef WITH_LIBSECRET + /* we should perhaps lock keyrings when sleeping #375681 */ + lock_libsecret = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); + if (lock_libsecret) { + libsecret_cancellable = g_cancellable_new(); + secretservice_proxy = secret_service_get_sync(SECRET_SERVICE_LOAD_COLLECTIONS, + libsecret_cancellable, + error); + if (secretservice_proxy == NULL) { + g_warning ("failed to connect to secret service"); + } else { + libsecret_collections = secret_service_get_collections(secretservice_proxy); + if ( libsecret_collections == NULL) { + g_warning ("failed to get secret collections"); + } else { + num_secrets_locked = secret_service_lock_sync(secretservice_proxy, + libsecret_collections, + libsecret_cancellable, + NULL, + error); + if (num_secrets_locked <= 0) + g_warning ("could not lock keyring"); + g_list_free(libsecret_collections); + } + g_object_unref(secretservice_proxy); + } + g_object_unref(libsecret_cancellable); + } +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING /* we should perhaps lock keyrings when sleeping #375681 */ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); From 74acfabab04f10e95dc91fdc633a893a4564a820 Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Mon, 3 Aug 2020 01:55:43 -0400 Subject: [PATCH 3/5] gpm-control.c: Add libsecret implementation to gpm_control_hibernate() --- src/gpm-control.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/gpm-control.c b/src/gpm-control.c index e64bfb12..98bb6f4e 100644 --- a/src/gpm-control.c +++ b/src/gpm-control.c @@ -367,6 +367,13 @@ gpm_control_hibernate (GpmControl *control, GError **error) EggConsoleKit *console; GpmScreensaver *screensaver; guint32 throttle_cookie = 0; +#ifdef WITH_LIBSECRET + gboolean lock_libsecret; + GCancellable *libsecret_cancellable = NULL; + SecretService *secretservice_proxy = NULL; + gint num_secrets_locked; + GList *libsecret_collections = NULL; +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING gboolean lock_gnome_keyring; GnomeKeyringResult keyres; @@ -390,6 +397,35 @@ gpm_control_hibernate (GpmControl *control, GError **error) } } +#ifdef WITH_LIBSECRET + /* we should perhaps lock keyrings when sleeping #375681 */ + lock_libsecret = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); + if (lock_libsecret) { + libsecret_cancellable = g_cancellable_new(); + secretservice_proxy = secret_service_get_sync(SECRET_SERVICE_LOAD_COLLECTIONS, + libsecret_cancellable, + error); + if (secretservice_proxy == NULL) { + g_warning ("failed to connect to secret service"); + } else { + libsecret_collections = secret_service_get_collections(secretservice_proxy); + if ( libsecret_collections == NULL) { + g_warning ("failed to get secret collections"); + } else { + num_secrets_locked = secret_service_lock_sync(secretservice_proxy, + libsecret_collections, + libsecret_cancellable, + NULL, + error); + if (num_secrets_locked <= 0) + g_warning ("could not lock keyring"); + g_list_free(libsecret_collections); + } + g_object_unref(secretservice_proxy); + } + g_object_unref(libsecret_cancellable); + } +#endif /* WITH_LIBSECRET */ #ifdef WITH_KEYRING /* we should perhaps lock keyrings when sleeping #375681 */ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE); From a5b4e5b14510ea3aeb8824294876c152635503ae Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Mon, 3 Aug 2020 02:01:10 -0400 Subject: [PATCH 5/5] Switch default from libgnome-keyring to libsecret --- configure.ac | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index b4758dca..7fbc8206 100644 --- a/configure.ac +++ b/configure.ac @@ -139,10 +139,10 @@ dnl --------------------------------------------------------------------------- dnl - Build libsecret support dnl --------------------------------------------------------------------------- AC_ARG_WITH(libsecret, - [AS_HELP_STRING([--with-libsecret], - [Enable the use of libsecret])], + [AS_HELP_STRING([--without-libsecret], + [Disable the use of libsecret])], [], - [with_libsecret=no]) + [with_libsecret=yes]) AM_CONDITIONAL([WITH_LIBSECRET],[test "$with_libsecret" = "yes"]) @@ -155,10 +155,10 @@ dnl --------------------------------------------------------------------------- dnl - Build gnome-keyring support dnl --------------------------------------------------------------------------- AC_ARG_WITH(keyring, - [AS_HELP_STRING([--without-keyring], - [Disable the use of gnome-keyring])], + [AS_HELP_STRING([--with-keyring], + [Enable the use of gnome-keyring])], [], - [with_keyring=yes]) + [with_keyring=no]) AM_CONDITIONAL([WITH_KEYRING],[test "$with_keyring" = "yes"])