import evolution-data-server-3.40.4-3.el9_0.1
This commit is contained in:
		
							parent
							
								
									b8c9cded4b
								
							
						
					
					
						commit
						724467f4db
					
				
							
								
								
									
										116
									
								
								SOURCES/evolution-data-server-3.40.4-google-oauth2.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								SOURCES/evolution-data-server-3.40.4-google-oauth2.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | |||||||
|  | From 08ec37272bb945625daed7e6ae7ed2bd663cdabd Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Milan Crha <mcrha@redhat.com> | ||||||
|  | Date: Wed, 4 May 2022 15:30:49 +0200 | ||||||
|  | Subject: [PATCH] I#388 - Google OAuth out-of-band (oob) flow will be | ||||||
|  |  deprecated | ||||||
|  | 
 | ||||||
|  | Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/388 | ||||||
|  | ---
 | ||||||
|  |  src/libedataserver/e-oauth2-service-google.c | 62 +++++++++++++++++--- | ||||||
|  |  1 file changed, 55 insertions(+), 7 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c
 | ||||||
|  | index 4d262d32f..93af1cb0b 100644
 | ||||||
|  | --- a/src/libedataserver/e-oauth2-service-google.c
 | ||||||
|  | +++ b/src/libedataserver/e-oauth2-service-google.c
 | ||||||
|  | @@ -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); | ||||||
|  | @@ -122,14 +123,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 | ||||||
|  | @@ -191,13 +238,13 @@ eos_google_extract_authorization_code (EOAuth2Service *service,
 | ||||||
|  |   | ||||||
|  |  				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; | ||||||
|  |  					} | ||||||
|  |   | ||||||
|  | @@ -225,6 +272,7 @@ e_oauth2_service_google_oauth2_service_init (EOAuth2ServiceInterface *iface)
 | ||||||
|  |  	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; | ||||||
|  |  } | ||||||
|  | -- 
 | ||||||
|  | 2.35.1 | ||||||
|  | 
 | ||||||
| @ -54,7 +54,7 @@ | |||||||
| 
 | 
 | ||||||
| Name: evolution-data-server | Name: evolution-data-server | ||||||
| Version: 3.40.4 | Version: 3.40.4 | ||||||
| Release: 3%{?dist} | Release: 3%{?dist}.1 | ||||||
| Summary: Backend data server for Evolution | Summary: Backend data server for Evolution | ||||||
| License: LGPLv2+ | License: LGPLv2+ | ||||||
| URL: https://wiki.gnome.org/Apps/Evolution | URL: https://wiki.gnome.org/Apps/Evolution | ||||||
| @ -62,6 +62,7 @@ Source: http://download.gnome.org/sources/%{name}/3.40/%{name}-%{version}.tar.xz | |||||||
| 
 | 
 | ||||||
| Patch01: evolution-data-server-3.40.4-icalcompiter.patch | Patch01: evolution-data-server-3.40.4-icalcompiter.patch | ||||||
| Patch02: evolution-data-server-3.40.4-secret-monitor-warnings.patch | Patch02: evolution-data-server-3.40.4-secret-monitor-warnings.patch | ||||||
|  | Patch03: evolution-data-server-3.40.4-google-oauth2.patch | ||||||
| 
 | 
 | ||||||
| Provides: evolution-webcal = %{version} | Provides: evolution-webcal = %{version} | ||||||
| Obsoletes: evolution-webcal < 2.24.0 | Obsoletes: evolution-webcal < 2.24.0 | ||||||
| @ -478,6 +479,9 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \; | |||||||
| %{_datadir}/installed-tests | %{_datadir}/installed-tests | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu May 05 2022 Milan Crha <mcrha@redhat.com> - 3.40.4-3.1 | ||||||
|  | - Resolves: #2081793 (Backport patch for Google OAuth2 change) | ||||||
|  | 
 | ||||||
| * Mon Nov 22 2021 Milan Crha <mcrha@redhat.com> - 3.40.4-3 | * Mon Nov 22 2021 Milan Crha <mcrha@redhat.com> - 3.40.4-3 | ||||||
| - Resolves: #2025480 (secret-monitor: Turn runtime warnings into debug prints) | - Resolves: #2025480 (secret-monitor: Turn runtime warnings into debug prints) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user