From: Kyle L. Huff Date: Sun, 25 Aug 2013 17:18:59 +0000 (-0400) Subject: curl: added basic SASL XOAUTH2 support X-Git-Tag: upstream/7.37.1~1412 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e7dcc454c67a2fa9069b6393b7591a3d949049b4;p=platform%2Fupstream%2Fcurl.git curl: added basic SASL XOAUTH2 support Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the --bearer option. Example usage: curl --url "imaps://imap.gmail.com:993/INBOX/;UID=1" --ssl-reqd --bearer ya29.AHES6Z...OMfsHYI --user username@example.com --- diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index da11f4a..1c55c29 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -96,6 +96,8 @@ void free_config_fields(struct Configurable *config) Curl_safefree(config->krblevel); Curl_safefree(config->trace_dump); + Curl_safefree(config->xoauth2_bearer); + config->trace_stream = NULL; /* closed elsewhere when appropriate */ Curl_safefree(config->writeout); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 144552e..a12bdcd 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -208,6 +208,7 @@ struct Configurable { #ifdef CURLDEBUG bool test_event_based; #endif + char *xoauth2_bearer; /* XOAUTH2 bearer token */ }; /* struct Configurable */ void free_config_fields(struct Configurable *config); diff --git a/src/tool_getparam.c b/src/tool_getparam.c index d9deb3b..813cc70 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -75,6 +75,7 @@ static const struct LongShort aliases[]= { {"*", "url", TRUE}, {"*a", "random-file", TRUE}, {"*b", "egd-file", TRUE}, + {"*B", "bearer", TRUE}, {"*c", "connect-timeout", TRUE}, {"*d", "ciphers", TRUE}, {"*e", "disable-epsv", FALSE}, @@ -498,6 +499,9 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ case 'b': /* egd-file */ GetStr(&config->egd_file, nextarg); break; + case 'B': /* XOAUTH2 Bearer */ + GetStr(&config->xoauth2_bearer, nextarg); + break; case 'c': /* connect-timeout */ err = str2udouble(&config->connecttimeout, nextarg); if(err) @@ -1632,9 +1636,11 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ /* user:password */ GetStr(&config->userpwd, nextarg); cleanarg(nextarg); - err = checkpasswd("host", &config->userpwd); - if(err) - return err; + if(!config->xoauth2_bearer) { + err = checkpasswd("host", &config->userpwd); + if(err) + return err; + } break; case 'U': /* Proxy user:password */ diff --git a/src/tool_operate.c b/src/tool_operate.c index 60d09ff..a37e0c8 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -977,6 +977,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) else if(!config->use_metalink) my_setopt(curl, CURLOPT_HEADER, config->include_headers?1L:0L); + if(config->xoauth2_bearer) + my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->xoauth2_bearer); + #if !defined(CURL_DISABLE_PROXY) { /* TODO: Make this a run-time check instead of compile-time one. */