1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

support for the new auth stuff

more output on --version/-V
mention --manual on the help output text
This commit is contained in:
Daniel Stenberg 2003-06-26 11:33:29 +00:00
parent 6f02ddfce8
commit 3aced61465

View File

@ -91,8 +91,10 @@
#endif
/* The last #include file should be: */
#ifdef MALLOCDEBUG
/* this is low-level hard-hacking memory leak tracking shit */
#ifdef CURLDEBUG
/* This is low-level hard-hacking memory leak tracking and similar. Using
the library level code from this client-side is ugly, but we do this
anyway for convenience. */
#include "../lib/memdebug.h"
#endif
@ -327,7 +329,8 @@ static void helpf(const char *fmt, ...)
vfprintf(stderr, fmt, ap);
va_end(ap);
}
fprintf(stderr, "curl: try 'curl --help' for more information\n");
fprintf(stderr, "curl: try 'curl --help' or "
"'curl --manual' for more information\n");
}
/*
@ -351,7 +354,9 @@ static void help(void)
"Options: (H) means HTTP/HTTPS only, (F) means FTP only\n"
" -a/--append Append to target file when uploading (F)\n"
" -A/--user-agent <string> User-Agent to send to server (H)\n"
" --anyauth Tell curl to choose authentication method (H)\n"
" -b/--cookie <name=string/file> Cookie string or file to read cookies from (H)\n"
" --basic Enable HTTP Basic Authentication (H)\n"
" -B/--use-ascii Use ASCII/text transfer\n",
curl_version());
puts(" -c/--cookie-jar <file> Write all cookies to this file after operation (H)\n"
@ -462,9 +467,7 @@ struct Configurable {
char *cookiefile; /* read from this file */
bool cookiesession; /* new session? */
bool encoding; /* Accept-Encoding please */
bool ntlm; /* NTLM Authentication */
bool digest; /* Digest Authentication */
bool negotiate; /* Negotiate Authentication */
long authtype; /* auth bitmask */
bool use_resume;
bool resume_from_current;
bool disable_epsv;
@ -558,6 +561,9 @@ struct Configurable {
size_t lastrecvsize;
};
/* global variable to hold info about libcurl */
static curl_version_info_data *curlinfo;
static int parseconfig(const char *filename,
struct Configurable *config);
static char *my_get_line(FILE *fp);
@ -1059,6 +1065,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
{"5k", "digest", FALSE},
{"5l", "negotiate", FALSE},
{"5m", "ntlm", FALSE},
{"5n", "basic", FALSE},
{"5o", "anyauth", FALSE},
{"0", "http1.0", FALSE},
{"1", "tlsv1", FALSE},
{"2", "sslv2", FALSE},
@ -1284,15 +1292,23 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'k': /* --digest */
config->digest ^= TRUE;
config->authtype = CURLAUTH_DIGEST;
break;
case 'l': /* --negotiate */
config->negotiate ^= TRUE;
config->authtype = CURLAUTH_GSSNEGOTIATE;
break;
case 'm': /* --ntlm */
config->ntlm ^= TRUE;
config->authtype = CURLAUTH_NTLM;
break;
case 'n': /* --basic for completeness */
config->authtype = CURLAUTH_BASIC;
break;
case 'o': /* --anyauth, let libcurl pick it */
config->authtype = CURLAUTH_ANY;
break;
default: /* the URL! */
@ -1714,17 +1730,37 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'V':
{
curl_version_info_data *info;
const char **proto;
printf(CURL_ID "%s\n", curl_version());
info = curl_version_info(CURLVERSION_NOW);
if (info->protocols) {
printf("Supported protocols: ");
for (proto=info->protocols; *proto; ++proto) {
if (curlinfo->protocols) {
printf("Protocols: ");
for (proto=curlinfo->protocols; *proto; ++proto) {
printf("%s ", *proto);
}
printf("\n");
puts(""); /* newline */
}
if(curlinfo->features) {
unsigned int i;
struct feat {
const char *name;
int bitmask;
};
struct feat feats[] = {
{"IPv6", CURL_VERSION_IPV6},
{"krb4", CURL_VERSION_KERBEROS4},
{"SSL", CURL_VERSION_SSL},
{"libz", CURL_VERSION_LIBZ},
{"NTLM", CURL_VERSION_NTLM},
{"GSS-Negotiate", CURL_VERSION_GSSNEGOTIATE},
{"Debug", CURL_VERSION_DEBUG}
};
printf("Features: ");
for(i=0; i<sizeof(feats)/sizeof(feats[0]); i++) {
if(curlinfo->features & feats[i].bitmask)
printf("%s ", feats[i].name);
}
puts(""); /* newline */
}
}
return PARAM_HELP_REQUESTED;
@ -1844,7 +1880,7 @@ static int parseconfig(const char *filename,
filename = filebuffer;
}
free(home); /* we've used it, now free it */
curl_free(home); /* we've used it, now free it */
}
}
@ -2195,7 +2231,7 @@ void progressbarinit(struct ProgressData *bar,
colp = curl_getenv("COLUMNS");
if (colp != NULL) {
bar->width = atoi(colp);
free(colp);
curl_free(colp);
}
else
bar->width = 79;
@ -2370,11 +2406,8 @@ void free_config_fields(struct Configurable *config)
static void FindWin32CACert(struct Configurable *config,
const char *bundle_file)
{
curl_version_info_data *info;
info = curl_version_info(CURLVERSION_NOW);
/* only check for cert file if "we" support SSL */
if(info->features & CURL_VERSION_SSL) {
if(curlinfo->features & CURL_VERSION_SSL) {
DWORD buflen;
char *ptr = NULL;
char *retval = (char *) malloc(sizeof (TCHAR) * (MAX_PATH + 1));
@ -2426,15 +2459,18 @@ operate(struct Configurable *config, int argc, char *argv[])
int i;
char *env;
#ifdef MALLOCDEBUG
#ifdef CURLDEBUG
/* this sends all memory debug messages to a logfile named memdump */
env = curl_getenv("CURL_MEMDEBUG");
if(env) {
free(env);
curl_free(env);
curl_memdebug("memdump");
}
#endif
/* we get libcurl info right away */
curlinfo = curl_version_info(CURLVERSION_NOW);
errorbuffer[0]=0; /* prevent junk from being output */
main_init(); /* inits */
@ -2545,7 +2581,7 @@ operate(struct Configurable *config, int argc, char *argv[])
env = curl_getenv("CURL_CA_BUNDLE");
if(env) {
GetStr(&config->cacert, env);
free(env);
curl_free(env);
}
#if defined(WIN32) && !defined(__CYGWIN32__)
else
@ -3002,12 +3038,8 @@ operate(struct Configurable *config, int argc, char *argv[])
curl_easy_setopt(curl, CURLOPT_FTP_USE_EPRT, FALSE);
/* new in libcurl 7.10.6 (default is Basic) */
if(config->digest)
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
else if(config->negotiate)
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
else if(config->ntlm)
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
if(config->authtype)
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, config->authtype);
/* new in curl 7.9.7 */
if(config->trace_dump) {
@ -3143,13 +3175,12 @@ operate(struct Configurable *config, int argc, char *argv[])
return res;
}
int main(int argc, char *argv[])
{
int res;
struct Configurable config;
memset(&config, 0, sizeof(struct Configurable));
res = operate(&config, argc, argv);
free_config_fields(&config);