diff options
author | Eduardo Chappa <chappa@washington.edu> | 2020-06-12 20:33:58 -0600 |
---|---|---|
committer | Eduardo Chappa <chappa@washington.edu> | 2020-06-12 20:33:58 -0600 |
commit | 5417727912422ac3d58f3cc3fd78c75b2a060fe3 (patch) | |
tree | f796246293e3d67f06c4b618141f87dac62e41e9 /imap/src/c-client | |
parent | 6c120b9e3730f997af56fbbe19229915b6380b2d (diff) | |
download | alpine-5417727912422ac3d58f3cc3fd78c75b2a060fe3.tar.xz |
* Additional addition of doucmentation for XOAUTH2, some fixes in the documentation,
fixes in the configuration screen, and documentation on what is needed in each
structure defining each service.
Diffstat (limited to 'imap/src/c-client')
-rw-r--r-- | imap/src/c-client/mail.h | 23 | ||||
-rw-r--r-- | imap/src/c-client/oauth2_aux.c | 6 |
2 files changed, 20 insertions, 9 deletions
diff --git a/imap/src/c-client/mail.h b/imap/src/c-client/mail.h index 174fb9e3..f74d889d 100644 --- a/imap/src/c-client/mail.h +++ b/imap/src/c-client/mail.h @@ -1927,15 +1927,23 @@ int PFLUSH (void); #define OAUTH2_TOT_EQUIV (OAUTH2_MAX_EQUIV + 2) #define OAUTH2_PARAM_NUMBER (7) -typedef enum {OA2_Id = 0, OA2_Secret, OA2_Code, OA2_RefreshToken, - OA2_Scope, OA2_Redirect, - OA2_GrantTypeforAccessToken, OA2_GrantTypefromRefreshToken, - OA2_Response, OA2_State, OA2_Prompt, OA2_DeviceCode, OA2_End} OA2_type; - -typedef enum {OA2_GetAccessCode = 0, +typedef enum {OA2_Id = 0, + OA2_Secret, + OA2_Code, + OA2_RefreshToken, + OA2_Scope, + OA2_Redirect, + OA2_GrantTypeforAccessToken, + OA2_GrantTypefromRefreshToken, + OA2_Response, + OA2_State, + OA2_DeviceCode, + OA2_End} OA2_type; + +typedef enum {OA2_GetAccessCode = 0, /* define this to get access code */ + OA2_GetDeviceCode, /* define this if server uses device */ OA2_GetAccessTokenFromAccessCode, OA2_GetAccessTokenFromRefreshToken, - OA2_GetDeviceCode, OA2_GetEnd} OA2_function; typedef struct OA2_param_s { @@ -1968,6 +1976,7 @@ typedef struct oauth2_s { char *access_token; unsigned long expiration; unsigned int first_time:1; /* this is the first time we get credentials for this account */ + unsigned int require_secret:1; /* this server requires a client-secret */ } OAUTH2_S; typedef struct deviceproc_s { diff --git a/imap/src/c-client/oauth2_aux.c b/imap/src/c-client/oauth2_aux.c index 9ff14174..a23f7c28 100644 --- a/imap/src/c-client/oauth2_aux.c +++ b/imap/src/c-client/oauth2_aux.c @@ -90,7 +90,8 @@ mm_login_oauth2_c_client_method (NETMBX *mb, char *user, char *method, char *s = NULL; JSON_S *json = NULL; - if(oauth2->param[OA2_Id].value == NULL || oauth2->param[OA2_Secret].value == NULL){ + if(oauth2->param[OA2_Id].value == NULL + || (oauth2->require_secret && oauth2->param[OA2_Secret].value == NULL)){ oauth2clientinfo_t ogci = (oauth2clientinfo_t) mail_parameters (NIL, GET_OA2CLIENTINFO, NIL); @@ -98,7 +99,8 @@ mm_login_oauth2_c_client_method (NETMBX *mb, char *user, char *method, &oauth2->param[OA2_Secret].value); } - if (oauth2->param[OA2_Id].value == NULL || oauth2->param[OA2_Secret].value == NULL) + if(oauth2->param[OA2_Id].value == NULL + || (oauth2->require_secret && oauth2->param[OA2_Secret].value == NULL)) return; /* Do we have a method to execute? */ |