import evolution-data-server-3.28.5-20.el8
This commit is contained in:
parent
7ea9d4cfe2
commit
a2edcdb1c7
101
SOURCES/evolution-data-server-3.28.5-google-oauth2.patch
Normal file
101
SOURCES/evolution-data-server-3.28.5-google-oauth2.patch
Normal file
@ -0,0 +1,101 @@
|
||||
diff -up evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c.google-oauth2 evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c
|
||||
--- evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c.google-oauth2 2018-07-30 15:17:06.000000000 +0200
|
||||
+++ evolution-data-server-3.28.5/src/libedataserver/e-oauth2-service-google.c 2022-05-04 18:57:08.059385307 +0200
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "e-oauth2-service-google.h"
|
||||
|
||||
/* https://developers.google.com/identity/protocols/OAuth2InstalledApp */
|
||||
+/* https://developers.google.com/identity/protocols/oauth2/native-app */
|
||||
|
||||
/* Forward Declarations */
|
||||
static void e_oauth2_service_google_oauth2_service_init (EOAuth2ServiceInterface *iface);
|
||||
@@ -74,14 +75,60 @@ static const gchar *
|
||||
eos_google_get_authentication_uri (EOAuth2Service *service,
|
||||
ESource *source)
|
||||
{
|
||||
- return "https://accounts.google.com/o/oauth2/auth";
|
||||
+ return "https://accounts.google.com/o/oauth2/v2/auth";
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
eos_google_get_refresh_uri (EOAuth2Service *service,
|
||||
ESource *source)
|
||||
{
|
||||
- return "https://www.googleapis.com/oauth2/v3/token";
|
||||
+ return "https://oauth2.googleapis.com/token";
|
||||
+}
|
||||
+
|
||||
+static const gchar *
|
||||
+eos_google_get_redirect_uri (EOAuth2Service *service,
|
||||
+ ESource *source)
|
||||
+{
|
||||
+ G_LOCK_DEFINE_STATIC (redirect_uri);
|
||||
+ const gchar *key_name = "oauth2-google-redirect-uri";
|
||||
+ gchar *value;
|
||||
+
|
||||
+ G_LOCK (redirect_uri);
|
||||
+
|
||||
+ value = g_object_get_data (G_OBJECT (service), key_name);
|
||||
+ if (!value) {
|
||||
+ const gchar *client_id = eos_google_get_client_id (service, source);
|
||||
+
|
||||
+ if (client_id) {
|
||||
+ GPtrArray *array;
|
||||
+ gchar **strv;
|
||||
+ gchar *joinstr;
|
||||
+ guint ii;
|
||||
+
|
||||
+ strv = g_strsplit (client_id, ".", -1);
|
||||
+ array = g_ptr_array_new ();
|
||||
+
|
||||
+ for (ii = 0; strv[ii]; ii++) {
|
||||
+ g_ptr_array_insert (array, 0, strv[ii]);
|
||||
+ }
|
||||
+
|
||||
+ g_ptr_array_add (array, NULL);
|
||||
+
|
||||
+ joinstr = g_strjoinv (".", (gchar **) array->pdata);
|
||||
+ /* Use reverse-DNS of the client ID with the below path */
|
||||
+ value = g_strconcat (joinstr, ":/oauth2redirect", NULL);
|
||||
+
|
||||
+ g_ptr_array_free (array, TRUE);
|
||||
+ g_strfreev (strv);
|
||||
+ g_free (joinstr);
|
||||
+
|
||||
+ g_object_set_data_full (G_OBJECT (service), key_name, value, g_free);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ G_UNLOCK (redirect_uri);
|
||||
+
|
||||
+ return value;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -143,13 +190,13 @@ eos_google_extract_authorization_code (E
|
||||
|
||||
params = soup_form_decode (query);
|
||||
if (params) {
|
||||
- const gchar *response;
|
||||
+ const gchar *code;
|
||||
|
||||
- response = g_hash_table_lookup (params, "response");
|
||||
- if (response && g_ascii_strncasecmp (response, "code=", 5) == 0) {
|
||||
- *out_authorization_code = g_strdup (response + 5);
|
||||
+ code = g_hash_table_lookup (params, "code");
|
||||
+ if (code && *code) {
|
||||
+ *out_authorization_code = g_strdup (code);
|
||||
known = TRUE;
|
||||
- } else if (response && g_ascii_strncasecmp (response, "error", 5) == 0) {
|
||||
+ } else if (g_hash_table_lookup (params, "error")) {
|
||||
known = TRUE;
|
||||
}
|
||||
|
||||
@@ -177,6 +224,7 @@ e_oauth2_service_google_oauth2_service_i
|
||||
iface->get_client_secret = eos_google_get_client_secret;
|
||||
iface->get_authentication_uri = eos_google_get_authentication_uri;
|
||||
iface->get_refresh_uri = eos_google_get_refresh_uri;
|
||||
+ iface->get_redirect_uri = eos_google_get_redirect_uri;
|
||||
iface->prepare_authentication_uri_query = eos_google_prepare_authentication_uri_query;
|
||||
iface->extract_authorization_code = eos_google_extract_authorization_code;
|
||||
}
|
@ -32,7 +32,7 @@
|
||||
|
||||
Name: evolution-data-server
|
||||
Version: 3.28.5
|
||||
Release: 19%{?dist}
|
||||
Release: 20%{?dist}
|
||||
Group: System Environment/Libraries
|
||||
Summary: Backend data server for Evolution
|
||||
License: LGPLv2+
|
||||
@ -103,6 +103,9 @@ Patch16: evolution-data-server-3.28.5-nonstandard-uuencode-encoding.patch
|
||||
# RH bug #1938533
|
||||
Patch17: evolution-data-server-3.28.5-secret-monitor-warnings.patch
|
||||
|
||||
# RH bug #2081746
|
||||
Patch18: evolution-data-server-3.28.5-google-oauth2.patch
|
||||
|
||||
### Dependencies ###
|
||||
|
||||
Requires: dconf
|
||||
@ -239,6 +242,7 @@ the functionality of the installed %{name} package.
|
||||
%patch15 -p1 -b .calbackendfile-interval-tree-destroy
|
||||
%patch16 -p1 -b .nonstandard-uuencode-encoding
|
||||
%patch17 -p1 -b .secret-monitor-warnings
|
||||
%patch18 -p1 -b .google-oauth2
|
||||
|
||||
%build
|
||||
|
||||
@ -500,6 +504,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || :
|
||||
%{_datadir}/installed-tests
|
||||
|
||||
%changelog
|
||||
* Wed May 04 2022 Milan Crha <mcrha@redhat.com> - 3.28.5-20
|
||||
- Resolves: #2081746 (Backport patch for Google OAuth2 change)
|
||||
|
||||
* Mon Nov 22 2021 Milan Crha <mcrha@redhat.com> - 3.28.5-19
|
||||
- Resolves: #1938533 (secret-monitor: Turn runtime warnings into debug prints)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user