fix>>>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,28 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_HUGEHELP_H
|
||||
#define HEADER_CURL_TOOL_HUGEHELP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
void hugehelp(void);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_HUGEHELP_H */
|
||||
@@ -1,102 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include "strcase.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_libinfo.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
/* global variable definitions, for libcurl run-time info */
|
||||
|
||||
curl_version_info_data *curlinfo = NULL;
|
||||
long built_in_protos = 0;
|
||||
|
||||
/*
|
||||
* libcurl_info_init: retrieves run-time information about libcurl,
|
||||
* setting a global pointer 'curlinfo' to libcurl's run-time info
|
||||
* struct, and a global bit pattern 'built_in_protos' composed of
|
||||
* CURLPROTO_* bits indicating which protocols are actually built
|
||||
* into library being used.
|
||||
*/
|
||||
|
||||
CURLcode get_libcurl_info(void)
|
||||
{
|
||||
static struct proto_name_pattern {
|
||||
const char *proto_name;
|
||||
long proto_pattern;
|
||||
} const possibly_built_in[] = {
|
||||
{ "dict", CURLPROTO_DICT },
|
||||
{ "file", CURLPROTO_FILE },
|
||||
{ "ftp", CURLPROTO_FTP },
|
||||
{ "ftps", CURLPROTO_FTPS },
|
||||
{ "gopher", CURLPROTO_GOPHER },
|
||||
{ "http", CURLPROTO_HTTP },
|
||||
{ "https", CURLPROTO_HTTPS },
|
||||
{ "imap", CURLPROTO_IMAP },
|
||||
{ "imaps", CURLPROTO_IMAPS },
|
||||
{ "ldap", CURLPROTO_LDAP },
|
||||
{ "ldaps", CURLPROTO_LDAPS },
|
||||
{ "pop3", CURLPROTO_POP3 },
|
||||
{ "pop3s", CURLPROTO_POP3S },
|
||||
{ "rtmp", CURLPROTO_RTMP },
|
||||
{ "rtsp", CURLPROTO_RTSP },
|
||||
{ "scp", CURLPROTO_SCP },
|
||||
{ "sftp", CURLPROTO_SFTP },
|
||||
{ "smb", CURLPROTO_SMB },
|
||||
{ "smbs", CURLPROTO_SMBS },
|
||||
{ "smtp", CURLPROTO_SMTP },
|
||||
{ "smtps", CURLPROTO_SMTPS },
|
||||
{ "telnet", CURLPROTO_TELNET },
|
||||
{ "tftp", CURLPROTO_TFTP },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
struct proto_name_pattern const *p;
|
||||
const char *const *proto;
|
||||
|
||||
/* Pointer to libcurl's run-time version information */
|
||||
curlinfo = curl_version_info(CURLVERSION_NOW);
|
||||
if(!curlinfo)
|
||||
return CURLE_FAILED_INIT;
|
||||
|
||||
/* Build CURLPROTO_* bit pattern with libcurl's built-in protocols */
|
||||
built_in_protos = 0;
|
||||
if(curlinfo->protocols) {
|
||||
for(proto = curlinfo->protocols; *proto; proto++) {
|
||||
for(p = possibly_built_in; p->proto_name; p++) {
|
||||
if(curl_strequal(*proto, p->proto_name)) {
|
||||
built_in_protos |= p->proto_pattern;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_LIBINFO_H
|
||||
#define HEADER_CURL_TOOL_LIBINFO_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
/* global variable declarations, for libcurl run-time info */
|
||||
|
||||
extern curl_version_info_data *curlinfo;
|
||||
extern long built_in_protos;
|
||||
|
||||
CURLcode get_libcurl_info(void);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_LIBINFO_H */
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#ifdef USE_NSS
|
||||
#include <nspr.h>
|
||||
#include <plarenas.h>
|
||||
#endif
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_convert.h"
|
||||
#include "tool_msgs.h"
|
||||
#include "tool_operate.h"
|
||||
#include "tool_panykey.h"
|
||||
#include "tool_vms.h"
|
||||
#include "tool_main.h"
|
||||
#include "tool_libinfo.h"
|
||||
|
||||
/*
|
||||
* 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 "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#ifdef __VMS
|
||||
/*
|
||||
* vms_show is a global variable, used in main() as parameter for
|
||||
* function vms_special_exit() to allow proper curl tool exiting.
|
||||
* Its value may be set in other tool_*.c source files thanks to
|
||||
* forward declaration present in tool_vms.h
|
||||
*/
|
||||
int vms_show = 0;
|
||||
#endif
|
||||
|
||||
/* if we build a static library for unit tests, there is no main() function */
|
||||
#ifndef UNITTESTS
|
||||
|
||||
/*
|
||||
* Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
|
||||
* open before starting to run. Otherwise, the first three network
|
||||
* sockets opened by curl could be used for input sources, downloaded data
|
||||
* or error logs as they will effectively be stdin, stdout and/or stderr.
|
||||
*/
|
||||
static void main_checkfds(void)
|
||||
{
|
||||
#ifdef HAVE_PIPE
|
||||
int fd[2] = { STDIN_FILENO, STDIN_FILENO };
|
||||
while(fd[0] == STDIN_FILENO ||
|
||||
fd[0] == STDOUT_FILENO ||
|
||||
fd[0] == STDERR_FILENO ||
|
||||
fd[1] == STDIN_FILENO ||
|
||||
fd[1] == STDOUT_FILENO ||
|
||||
fd[1] == STDERR_FILENO)
|
||||
if(pipe(fd) < 0)
|
||||
return; /* Out of handles. This isn't really a big problem now, but
|
||||
will be when we try to create a socket later. */
|
||||
close(fd[0]);
|
||||
close(fd[1]);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CURLDEBUG
|
||||
static void memory_tracking_init(void)
|
||||
{
|
||||
char *env;
|
||||
/* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
|
||||
env = curlx_getenv("CURL_MEMDEBUG");
|
||||
if(env) {
|
||||
/* use the value as file name */
|
||||
char fname[CURL_MT_LOGFNAME_BUFSIZE];
|
||||
if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE)
|
||||
env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
|
||||
strcpy(fname, env);
|
||||
curl_free(env);
|
||||
curl_memdebug(fname);
|
||||
/* this weird stuff here is to make curl_free() get called
|
||||
before curl_memdebug() as otherwise memory tracking will
|
||||
log a free() without an alloc! */
|
||||
}
|
||||
/* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
|
||||
env = curlx_getenv("CURL_MEMLIMIT");
|
||||
if(env) {
|
||||
char *endptr;
|
||||
long num = strtol(env, &endptr, 10);
|
||||
if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
|
||||
curl_memlimit(num);
|
||||
curl_free(env);
|
||||
}
|
||||
}
|
||||
#else
|
||||
# define memory_tracking_init() Curl_nop_stmt
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is the main global constructor for the app. Call this before
|
||||
* _any_ libcurl usage. If this fails, *NO* libcurl functions may be
|
||||
* used, or havoc may be the result.
|
||||
*/
|
||||
static CURLcode main_init(struct GlobalConfig *config)
|
||||
{
|
||||
CURLcode result = CURLE_OK;
|
||||
|
||||
#if defined(__DJGPP__) || defined(__GO32__)
|
||||
/* stop stat() wasting time */
|
||||
_djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
|
||||
#endif
|
||||
|
||||
/* Initialise the global config */
|
||||
config->showerror = -1; /* Will show errors */
|
||||
config->errors = stderr; /* Default errors to stderr */
|
||||
|
||||
/* Allocate the initial operate config */
|
||||
config->first = config->last = malloc(sizeof(struct OperationConfig));
|
||||
if(config->first) {
|
||||
/* Perform the libcurl initialization */
|
||||
result = curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
if(!result) {
|
||||
/* Get information about libcurl */
|
||||
result = get_libcurl_info();
|
||||
|
||||
if(!result) {
|
||||
/* Get a curl handle to use for all forthcoming curl transfers */
|
||||
config->easy = curl_easy_init();
|
||||
if(config->easy) {
|
||||
/* Initialise the config */
|
||||
config_init(config->first);
|
||||
config->first->easy = config->easy;
|
||||
config->first->global = config;
|
||||
}
|
||||
else {
|
||||
helpf(stderr, "error initializing curl easy handle\n");
|
||||
result = CURLE_FAILED_INIT;
|
||||
free(config->first);
|
||||
}
|
||||
}
|
||||
else {
|
||||
helpf(stderr, "error retrieving curl library information\n");
|
||||
free(config->first);
|
||||
}
|
||||
}
|
||||
else {
|
||||
helpf(stderr, "error initializing curl library\n");
|
||||
free(config->first);
|
||||
}
|
||||
}
|
||||
else {
|
||||
helpf(stderr, "error initializing curl\n");
|
||||
result = CURLE_FAILED_INIT;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void free_config_fields(struct GlobalConfig *config)
|
||||
{
|
||||
Curl_safefree(config->trace_dump);
|
||||
|
||||
if(config->errors_fopened && config->errors)
|
||||
fclose(config->errors);
|
||||
config->errors = NULL;
|
||||
|
||||
if(config->trace_fopened && config->trace_stream)
|
||||
fclose(config->trace_stream);
|
||||
config->trace_stream = NULL;
|
||||
|
||||
Curl_safefree(config->libcurl);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is the main global destructor for the app. Call this after
|
||||
* _all_ libcurl usage is done.
|
||||
*/
|
||||
static void main_free(struct GlobalConfig *config)
|
||||
{
|
||||
/* Cleanup the easy handle */
|
||||
curl_easy_cleanup(config->easy);
|
||||
config->easy = NULL;
|
||||
|
||||
/* Main cleanup */
|
||||
curl_global_cleanup();
|
||||
convert_cleanup();
|
||||
metalink_cleanup();
|
||||
#ifdef USE_NSS
|
||||
if(PR_Initialized()) {
|
||||
/* prevent valgrind from reporting still reachable mem from NSRP arenas */
|
||||
PL_ArenaFinish();
|
||||
/* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
|
||||
PR_Cleanup();
|
||||
}
|
||||
#endif
|
||||
free_config_fields(config);
|
||||
|
||||
/* Free the config structures */
|
||||
config_free(config->last);
|
||||
config->first = NULL;
|
||||
config->last = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
** curl tool main function.
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
CURLcode result = CURLE_OK;
|
||||
struct GlobalConfig global;
|
||||
memset(&global, 0, sizeof(global));
|
||||
|
||||
main_checkfds();
|
||||
|
||||
#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
|
||||
(void)signal(SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
|
||||
/* Initialize memory tracking */
|
||||
memory_tracking_init();
|
||||
|
||||
/* Initialize the curl library - do not call any libcurl functions before
|
||||
this point */
|
||||
result = main_init(&global);
|
||||
if(!result) {
|
||||
/* Start our curl operation */
|
||||
result = operate(&global, argc, argv);
|
||||
|
||||
#ifdef __SYMBIAN32__
|
||||
if(global.showerror)
|
||||
tool_pressanykey();
|
||||
#endif
|
||||
|
||||
/* Perform the main cleanup */
|
||||
main_free(&global);
|
||||
}
|
||||
|
||||
#ifdef __NOVELL_LIBC__
|
||||
if(getenv("_IN_NETWARE_BASH_") == NULL)
|
||||
tool_pressanykey();
|
||||
#endif
|
||||
|
||||
#ifdef __VMS
|
||||
vms_special_exit(result, vms_show);
|
||||
#else
|
||||
return (int)result;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* ndef UNITTESTS */
|
||||
@@ -1,44 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_MAIN_H
|
||||
#define HEADER_CURL_TOOL_MAIN_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#define DEFAULT_MAXREDIRS 50L
|
||||
|
||||
#define RETRY_SLEEP_DEFAULT 1000L /* ms */
|
||||
#define RETRY_SLEEP_MAX 600000L /* ms == 10 minutes */
|
||||
|
||||
#ifndef STDIN_FILENO
|
||||
# define STDIN_FILENO fileno(stdin)
|
||||
#endif
|
||||
|
||||
#ifndef STDOUT_FILENO
|
||||
# define STDOUT_FILENO fileno(stdout)
|
||||
#endif
|
||||
|
||||
#ifndef STDERR_FILENO
|
||||
# define STDERR_FILENO fileno(stderr)
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_MAIN_H */
|
||||
|
||||
@@ -1,976 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef USE_METALINK
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_FCNTL_H
|
||||
# include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
# include <openssl/md5.h>
|
||||
# include <openssl/sha.h>
|
||||
#elif defined(USE_GNUTLS_NETTLE)
|
||||
# include <nettle/md5.h>
|
||||
# include <nettle/sha.h>
|
||||
# define MD5_CTX struct md5_ctx
|
||||
# define SHA_CTX struct sha1_ctx
|
||||
# define SHA256_CTX struct sha256_ctx
|
||||
#elif defined(USE_GNUTLS)
|
||||
# include <gcrypt.h>
|
||||
# define MD5_CTX gcry_md_hd_t
|
||||
# define SHA_CTX gcry_md_hd_t
|
||||
# define SHA256_CTX gcry_md_hd_t
|
||||
#elif defined(USE_NSS)
|
||||
# include <nss.h>
|
||||
# include <pk11pub.h>
|
||||
# define MD5_CTX void *
|
||||
# define SHA_CTX void *
|
||||
# define SHA256_CTX void *
|
||||
static NSSInitContext *nss_context;
|
||||
#elif defined(USE_POLARSSL)
|
||||
# include <polarssl/md5.h>
|
||||
# include <polarssl/sha1.h>
|
||||
# include <polarssl/sha256.h>
|
||||
# define MD5_CTX md5_context
|
||||
# define SHA_CTX sha1_context
|
||||
# define SHA256_CTX sha256_context
|
||||
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
|
||||
(__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
|
||||
(defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
|
||||
(__IPHONE_OS_VERSION_MAX_ALLOWED >= 20000))
|
||||
/* For Apple operating systems: CommonCrypto has the functions we need.
|
||||
The library's headers are even backward-compatible with OpenSSL's
|
||||
headers as long as we define COMMON_DIGEST_FOR_OPENSSL first.
|
||||
|
||||
These functions are available on Tiger and later, as well as iOS 2.0
|
||||
and later. If you're building for an older cat, well, sorry. */
|
||||
# define COMMON_DIGEST_FOR_OPENSSL
|
||||
# include <CommonCrypto/CommonDigest.h>
|
||||
#elif defined(_WIN32)
|
||||
/* For Windows: If no other crypto library is provided, we fallback
|
||||
to the hash functions provided within the Microsoft Windows CryptoAPI */
|
||||
# include <wincrypt.h>
|
||||
/* Custom structure in order to store the required provider and hash handle */
|
||||
struct win32_crypto_hash {
|
||||
HCRYPTPROV hCryptProv;
|
||||
HCRYPTHASH hHash;
|
||||
};
|
||||
/* Custom Microsoft AES Cryptographic Provider defines required for MinGW */
|
||||
# ifndef ALG_SID_SHA_256
|
||||
# define ALG_SID_SHA_256 12
|
||||
# endif
|
||||
# ifndef CALG_SHA_256
|
||||
# define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
|
||||
# endif
|
||||
# define MD5_CTX struct win32_crypto_hash
|
||||
# define SHA_CTX struct win32_crypto_hash
|
||||
# define SHA256_CTX struct win32_crypto_hash
|
||||
#else
|
||||
# error "Can't compile METALINK support without a crypto library."
|
||||
#endif
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_getparam.h"
|
||||
#include "tool_paramhlp.h"
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_metalink.h"
|
||||
#include "tool_msgs.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
/* Copied from tool_getparam.c */
|
||||
#define GetStr(str,val) do { \
|
||||
if(*(str)) { \
|
||||
free(*(str)); \
|
||||
*(str) = NULL; \
|
||||
} \
|
||||
if((val)) \
|
||||
*(str) = strdup((val)); \
|
||||
if(!(val)) \
|
||||
return PARAM_NO_MEM; \
|
||||
} WHILE_FALSE
|
||||
|
||||
#ifdef USE_GNUTLS_NETTLE
|
||||
|
||||
static int MD5_Init(MD5_CTX *ctx)
|
||||
{
|
||||
md5_init(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void MD5_Update(MD5_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
md5_update(ctx, inputLen, input);
|
||||
}
|
||||
|
||||
static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
|
||||
{
|
||||
md5_digest(ctx, 16, digest);
|
||||
}
|
||||
|
||||
static int SHA1_Init(SHA_CTX *ctx)
|
||||
{
|
||||
sha1_init(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA1_Update(SHA_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
sha1_update(ctx, inputLen, input);
|
||||
}
|
||||
|
||||
static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
|
||||
{
|
||||
sha1_digest(ctx, 20, digest);
|
||||
}
|
||||
|
||||
static int SHA256_Init(SHA256_CTX *ctx)
|
||||
{
|
||||
sha256_init(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA256_Update(SHA256_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
sha256_update(ctx, inputLen, input);
|
||||
}
|
||||
|
||||
static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
|
||||
{
|
||||
sha256_digest(ctx, 32, digest);
|
||||
}
|
||||
|
||||
#elif defined(USE_GNUTLS)
|
||||
|
||||
static int MD5_Init(MD5_CTX *ctx)
|
||||
{
|
||||
gcry_md_open(ctx, GCRY_MD_MD5, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void MD5_Update(MD5_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
gcry_md_write(*ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
|
||||
{
|
||||
memcpy(digest, gcry_md_read(*ctx, 0), 16);
|
||||
gcry_md_close(*ctx);
|
||||
}
|
||||
|
||||
static int SHA1_Init(SHA_CTX *ctx)
|
||||
{
|
||||
gcry_md_open(ctx, GCRY_MD_SHA1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA1_Update(SHA_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
gcry_md_write(*ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
|
||||
{
|
||||
memcpy(digest, gcry_md_read(*ctx, 0), 20);
|
||||
gcry_md_close(*ctx);
|
||||
}
|
||||
|
||||
static int SHA256_Init(SHA256_CTX *ctx)
|
||||
{
|
||||
gcry_md_open(ctx, GCRY_MD_SHA256, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA256_Update(SHA256_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
gcry_md_write(*ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
|
||||
{
|
||||
memcpy(digest, gcry_md_read(*ctx, 0), 32);
|
||||
gcry_md_close(*ctx);
|
||||
}
|
||||
|
||||
#elif defined(USE_NSS)
|
||||
|
||||
static int nss_hash_init(void **pctx, SECOidTag hash_alg)
|
||||
{
|
||||
PK11Context *ctx;
|
||||
|
||||
/* we have to initialize NSS if not initialized alraedy */
|
||||
if(!NSS_IsInitialized() && !nss_context) {
|
||||
static NSSInitParameters params;
|
||||
params.length = sizeof params;
|
||||
nss_context = NSS_InitContext("", "", "", "", ¶ms, NSS_INIT_READONLY
|
||||
| NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN
|
||||
| NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
|
||||
}
|
||||
|
||||
ctx = PK11_CreateDigestContext(hash_alg);
|
||||
if(!ctx)
|
||||
return /* failure */ 0;
|
||||
|
||||
if(PK11_DigestBegin(ctx) != SECSuccess) {
|
||||
PK11_DestroyContext(ctx, PR_TRUE);
|
||||
return /* failure */ 0;
|
||||
}
|
||||
|
||||
*pctx = ctx;
|
||||
return /* success */ 1;
|
||||
}
|
||||
|
||||
static void nss_hash_final(void **pctx, unsigned char *out, unsigned int len)
|
||||
{
|
||||
PK11Context *ctx = *pctx;
|
||||
unsigned int outlen;
|
||||
PK11_DigestFinal(ctx, out, &outlen, len);
|
||||
PK11_DestroyContext(ctx, PR_TRUE);
|
||||
}
|
||||
|
||||
static int MD5_Init(MD5_CTX *pctx)
|
||||
{
|
||||
return nss_hash_init(pctx, SEC_OID_MD5);
|
||||
}
|
||||
|
||||
static void MD5_Update(MD5_CTX *pctx,
|
||||
const unsigned char *input,
|
||||
unsigned int input_len)
|
||||
{
|
||||
PK11_DigestOp(*pctx, input, input_len);
|
||||
}
|
||||
|
||||
static void MD5_Final(unsigned char digest[16], MD5_CTX *pctx)
|
||||
{
|
||||
nss_hash_final(pctx, digest, 16);
|
||||
}
|
||||
|
||||
static int SHA1_Init(SHA_CTX *pctx)
|
||||
{
|
||||
return nss_hash_init(pctx, SEC_OID_SHA1);
|
||||
}
|
||||
|
||||
static void SHA1_Update(SHA_CTX *pctx,
|
||||
const unsigned char *input,
|
||||
unsigned int input_len)
|
||||
{
|
||||
PK11_DigestOp(*pctx, input, input_len);
|
||||
}
|
||||
|
||||
static void SHA1_Final(unsigned char digest[20], SHA_CTX *pctx)
|
||||
{
|
||||
nss_hash_final(pctx, digest, 20);
|
||||
}
|
||||
|
||||
static int SHA256_Init(SHA256_CTX *pctx)
|
||||
{
|
||||
return nss_hash_init(pctx, SEC_OID_SHA256);
|
||||
}
|
||||
|
||||
static void SHA256_Update(SHA256_CTX *pctx,
|
||||
const unsigned char *input,
|
||||
unsigned int input_len)
|
||||
{
|
||||
PK11_DigestOp(*pctx, input, input_len);
|
||||
}
|
||||
|
||||
static void SHA256_Final(unsigned char digest[32], SHA256_CTX *pctx)
|
||||
{
|
||||
nss_hash_final(pctx, digest, 32);
|
||||
}
|
||||
|
||||
#elif defined(USE_POLARSSL)
|
||||
|
||||
static int MD5_Init(MD5_CTX *ctx)
|
||||
{
|
||||
md5_starts(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void MD5_Update(MD5_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
md5_update(ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
|
||||
{
|
||||
md5_finish(ctx, digest);
|
||||
}
|
||||
|
||||
static int SHA1_Init(SHA_CTX *ctx)
|
||||
{
|
||||
sha1_starts(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA1_Update(SHA_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
sha1_update(ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
|
||||
{
|
||||
sha1_finish(ctx, digest);
|
||||
}
|
||||
|
||||
static int SHA256_Init(SHA256_CTX *ctx)
|
||||
{
|
||||
sha256_starts(ctx, 0); /* 0 = sha256 */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA256_Update(SHA256_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
sha256_update(ctx, input, inputLen);
|
||||
}
|
||||
|
||||
static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
|
||||
{
|
||||
sha256_finish(ctx, digest);
|
||||
}
|
||||
|
||||
#elif defined(_WIN32) && !defined(USE_OPENSSL)
|
||||
|
||||
static void win32_crypto_final(struct win32_crypto_hash *ctx,
|
||||
unsigned char *digest,
|
||||
unsigned int digestLen)
|
||||
{
|
||||
unsigned long length;
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
|
||||
if(length == digestLen)
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
|
||||
if(ctx->hHash)
|
||||
CryptDestroyHash(ctx->hHash);
|
||||
if(ctx->hCryptProv)
|
||||
CryptReleaseContext(ctx->hCryptProv, 0);
|
||||
}
|
||||
|
||||
static int MD5_Init(MD5_CTX *ctx)
|
||||
{
|
||||
if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
|
||||
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
|
||||
CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void MD5_Update(MD5_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
|
||||
}
|
||||
|
||||
static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
|
||||
{
|
||||
win32_crypto_final(ctx, digest, 16);
|
||||
}
|
||||
|
||||
static int SHA1_Init(SHA_CTX *ctx)
|
||||
{
|
||||
if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
|
||||
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
|
||||
CryptCreateHash(ctx->hCryptProv, CALG_SHA1, 0, 0, &ctx->hHash);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA1_Update(SHA_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
|
||||
}
|
||||
|
||||
static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
|
||||
{
|
||||
win32_crypto_final(ctx, digest, 20);
|
||||
}
|
||||
|
||||
static int SHA256_Init(SHA256_CTX *ctx)
|
||||
{
|
||||
if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL,
|
||||
PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) {
|
||||
CryptCreateHash(ctx->hCryptProv, CALG_SHA_256, 0, 0, &ctx->hHash);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHA256_Update(SHA256_CTX *ctx,
|
||||
const unsigned char *input,
|
||||
unsigned int inputLen)
|
||||
{
|
||||
CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
|
||||
}
|
||||
|
||||
static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
|
||||
{
|
||||
win32_crypto_final(ctx, digest, 32);
|
||||
}
|
||||
|
||||
#endif /* CRYPTO LIBS */
|
||||
|
||||
const digest_params MD5_DIGEST_PARAMS[] = {
|
||||
{
|
||||
(Curl_digest_init_func) MD5_Init,
|
||||
(Curl_digest_update_func) MD5_Update,
|
||||
(Curl_digest_final_func) MD5_Final,
|
||||
sizeof(MD5_CTX),
|
||||
16
|
||||
}
|
||||
};
|
||||
|
||||
const digest_params SHA1_DIGEST_PARAMS[] = {
|
||||
{
|
||||
(Curl_digest_init_func) SHA1_Init,
|
||||
(Curl_digest_update_func) SHA1_Update,
|
||||
(Curl_digest_final_func) SHA1_Final,
|
||||
sizeof(SHA_CTX),
|
||||
20
|
||||
}
|
||||
};
|
||||
|
||||
const digest_params SHA256_DIGEST_PARAMS[] = {
|
||||
{
|
||||
(Curl_digest_init_func) SHA256_Init,
|
||||
(Curl_digest_update_func) SHA256_Update,
|
||||
(Curl_digest_final_func) SHA256_Final,
|
||||
sizeof(SHA256_CTX),
|
||||
32
|
||||
}
|
||||
};
|
||||
|
||||
static const metalink_digest_def SHA256_DIGEST_DEF[] = {
|
||||
{"sha-256", SHA256_DIGEST_PARAMS}
|
||||
};
|
||||
|
||||
static const metalink_digest_def SHA1_DIGEST_DEF[] = {
|
||||
{"sha-1", SHA1_DIGEST_PARAMS}
|
||||
};
|
||||
|
||||
static const metalink_digest_def MD5_DIGEST_DEF[] = {
|
||||
{"md5", MD5_DIGEST_PARAMS}
|
||||
};
|
||||
|
||||
/*
|
||||
* The alias of supported hash functions in the order by preference
|
||||
* (basically stronger hash comes first). We included "sha-256" and
|
||||
* "sha256". The former is the name defined in the IANA registry named
|
||||
* "Hash Function Textual Names". The latter is widely (and
|
||||
* historically) used in Metalink version 3.
|
||||
*/
|
||||
static const metalink_digest_alias digest_aliases[] = {
|
||||
{"sha-256", SHA256_DIGEST_DEF},
|
||||
{"sha256", SHA256_DIGEST_DEF},
|
||||
{"sha-1", SHA1_DIGEST_DEF},
|
||||
{"sha1", SHA1_DIGEST_DEF},
|
||||
{"md5", MD5_DIGEST_DEF},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
digest_context *Curl_digest_init(const digest_params *dparams)
|
||||
{
|
||||
digest_context *ctxt;
|
||||
|
||||
/* Create digest context */
|
||||
ctxt = malloc(sizeof *ctxt);
|
||||
|
||||
if(!ctxt)
|
||||
return ctxt;
|
||||
|
||||
ctxt->digest_hashctx = malloc(dparams->digest_ctxtsize);
|
||||
|
||||
if(!ctxt->digest_hashctx) {
|
||||
free(ctxt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ctxt->digest_hash = dparams;
|
||||
|
||||
if(dparams->digest_init(ctxt->digest_hashctx) != 1) {
|
||||
free(ctxt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return ctxt;
|
||||
}
|
||||
|
||||
int Curl_digest_update(digest_context *context,
|
||||
const unsigned char *data,
|
||||
unsigned int len)
|
||||
{
|
||||
(*context->digest_hash->digest_update)(context->digest_hashctx, data, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Curl_digest_final(digest_context *context, unsigned char *result)
|
||||
{
|
||||
(*context->digest_hash->digest_final)(result, context->digest_hashctx);
|
||||
|
||||
free(context->digest_hashctx);
|
||||
free(context);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned char hex_to_uint(const char *s)
|
||||
{
|
||||
char buf[3];
|
||||
unsigned long val;
|
||||
buf[0] = s[0];
|
||||
buf[1] = s[1];
|
||||
buf[2] = 0;
|
||||
val = strtoul(buf, NULL, 16);
|
||||
return (unsigned char)(val&0xff);
|
||||
}
|
||||
|
||||
/*
|
||||
* Check checksum of file denoted by filename. The expected hash value
|
||||
* is given in hex_hash which is hex-encoded string.
|
||||
*
|
||||
* This function returns 1 if it succeeds or one of the following
|
||||
* integers:
|
||||
*
|
||||
* 0:
|
||||
* Checksum didn't match.
|
||||
* -1:
|
||||
* Could not open file; or could not read data from file.
|
||||
* -2:
|
||||
* Hash algorithm not available.
|
||||
*/
|
||||
static int check_hash(const char *filename,
|
||||
const metalink_digest_def *digest_def,
|
||||
const unsigned char *digest, FILE *error)
|
||||
{
|
||||
unsigned char *result;
|
||||
digest_context *dctx;
|
||||
int check_ok, flags, fd;
|
||||
|
||||
flags = O_RDONLY;
|
||||
#ifdef O_BINARY
|
||||
/* O_BINARY is required in order to avoid binary EOF in text mode */
|
||||
flags |= O_BINARY;
|
||||
#endif
|
||||
|
||||
fd = open(filename, flags);
|
||||
if(fd == -1) {
|
||||
fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
|
||||
digest_def->hash_name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
dctx = Curl_digest_init(digest_def->dparams);
|
||||
if(!dctx) {
|
||||
fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
|
||||
digest_def->hash_name, "failed to initialize hash algorithm");
|
||||
close(fd);
|
||||
return -2;
|
||||
}
|
||||
|
||||
result = malloc(digest_def->dparams->digest_resultlen);
|
||||
if(!result) {
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
while(1) {
|
||||
unsigned char buf[4096];
|
||||
ssize_t len = read(fd, buf, sizeof(buf));
|
||||
if(len == 0) {
|
||||
break;
|
||||
}
|
||||
else if(len == -1) {
|
||||
fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
|
||||
digest_def->hash_name, strerror(errno));
|
||||
Curl_digest_final(dctx, result);
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
Curl_digest_update(dctx, buf, (unsigned int)len);
|
||||
}
|
||||
Curl_digest_final(dctx, result);
|
||||
check_ok = memcmp(result, digest,
|
||||
digest_def->dparams->digest_resultlen) == 0;
|
||||
/* sha*sum style verdict output */
|
||||
if(check_ok)
|
||||
fprintf(error, "Metalink: validating (%s) [%s] OK\n", filename,
|
||||
digest_def->hash_name);
|
||||
else
|
||||
fprintf(error, "Metalink: validating (%s) [%s] FAILED (digest mismatch)\n",
|
||||
filename, digest_def->hash_name);
|
||||
|
||||
free(result);
|
||||
close(fd);
|
||||
return check_ok;
|
||||
}
|
||||
|
||||
int metalink_check_hash(struct GlobalConfig *config,
|
||||
metalinkfile *mlfile,
|
||||
const char *filename)
|
||||
{
|
||||
int rv;
|
||||
fprintf(config->errors, "Metalink: validating (%s)...\n", filename);
|
||||
if(mlfile->checksum == NULL) {
|
||||
fprintf(config->errors,
|
||||
"Metalink: validating (%s) FAILED (digest missing)\n", filename);
|
||||
return -2;
|
||||
}
|
||||
rv = check_hash(filename, mlfile->checksum->digest_def,
|
||||
mlfile->checksum->digest, config->errors);
|
||||
return rv;
|
||||
}
|
||||
|
||||
static metalink_checksum *new_metalink_checksum_from_hex_digest
|
||||
(const metalink_digest_def *digest_def, const char *hex_digest)
|
||||
{
|
||||
metalink_checksum *chksum;
|
||||
unsigned char *digest;
|
||||
size_t i;
|
||||
size_t len = strlen(hex_digest);
|
||||
digest = malloc(len/2);
|
||||
if(!digest)
|
||||
return 0;
|
||||
|
||||
for(i = 0; i < len; i += 2) {
|
||||
digest[i/2] = hex_to_uint(hex_digest+i);
|
||||
}
|
||||
chksum = malloc(sizeof(metalink_checksum));
|
||||
if(chksum) {
|
||||
chksum->digest_def = digest_def;
|
||||
chksum->digest = digest;
|
||||
}
|
||||
return chksum;
|
||||
}
|
||||
|
||||
static metalink_resource *new_metalink_resource(const char *url)
|
||||
{
|
||||
metalink_resource *res;
|
||||
res = malloc(sizeof(metalink_resource));
|
||||
if(res) {
|
||||
res->next = NULL;
|
||||
res->url = strdup(url);
|
||||
if(!res->url) {
|
||||
free(res);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Returns nonzero if hex_digest is properly formatted; that is each
|
||||
letter is in [0-9A-Za-z] and the length of the string equals to the
|
||||
result length of digest * 2. */
|
||||
static int check_hex_digest(const char *hex_digest,
|
||||
const metalink_digest_def *digest_def)
|
||||
{
|
||||
size_t i;
|
||||
for(i = 0; hex_digest[i]; ++i) {
|
||||
char c = hex_digest[i];
|
||||
if(!(('0' <= c && c <= '9') || ('a' <= c && c <= 'z') ||
|
||||
('A' <= c && c <= 'Z'))) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return digest_def->dparams->digest_resultlen * 2 == i;
|
||||
}
|
||||
|
||||
static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
|
||||
{
|
||||
metalinkfile *f;
|
||||
f = (metalinkfile*)malloc(sizeof(metalinkfile));
|
||||
if(!f)
|
||||
return NULL;
|
||||
|
||||
f->next = NULL;
|
||||
f->filename = strdup(fileinfo->name);
|
||||
if(!f->filename) {
|
||||
free(f);
|
||||
return NULL;
|
||||
}
|
||||
f->checksum = NULL;
|
||||
f->resource = NULL;
|
||||
if(fileinfo->checksums) {
|
||||
const metalink_digest_alias *digest_alias;
|
||||
for(digest_alias = digest_aliases; digest_alias->alias_name;
|
||||
++digest_alias) {
|
||||
metalink_checksum_t **p;
|
||||
for(p = fileinfo->checksums; *p; ++p) {
|
||||
if(curl_strequal(digest_alias->alias_name, (*p)->type) &&
|
||||
check_hex_digest((*p)->hash, digest_alias->digest_def)) {
|
||||
f->checksum =
|
||||
new_metalink_checksum_from_hex_digest(digest_alias->digest_def,
|
||||
(*p)->hash);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(f->checksum) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(fileinfo->resources) {
|
||||
metalink_resource_t **p;
|
||||
metalink_resource root, *tail;
|
||||
root.next = NULL;
|
||||
tail = &root;
|
||||
for(p = fileinfo->resources; *p; ++p) {
|
||||
metalink_resource *res;
|
||||
/* Filter by type if it is non-NULL. In Metalink v3, type
|
||||
includes the type of the resource. In curl, we are only
|
||||
interested in HTTP, HTTPS and FTP. In addition to them,
|
||||
Metalink v3 file may contain bittorrent type URL, which
|
||||
points to the BitTorrent metainfo file. We ignore it here.
|
||||
In Metalink v4, type was deprecated and all
|
||||
fileinfo->resources point to the target file. BitTorrent
|
||||
metainfo file URL may be appeared in fileinfo->metaurls.
|
||||
*/
|
||||
if((*p)->type == NULL ||
|
||||
curl_strequal((*p)->type, "http") ||
|
||||
curl_strequal((*p)->type, "https") ||
|
||||
curl_strequal((*p)->type, "ftp") ||
|
||||
curl_strequal((*p)->type, "ftps")) {
|
||||
res = new_metalink_resource((*p)->url);
|
||||
tail->next = res;
|
||||
tail = res;
|
||||
}
|
||||
}
|
||||
f->resource = root.next;
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
|
||||
const char *metalink_url)
|
||||
{
|
||||
metalink_error_t r;
|
||||
metalink_t* metalink;
|
||||
metalink_file_t **files;
|
||||
bool warnings = FALSE;
|
||||
|
||||
/* metlaink_parse_final deletes outs->metalink_parser */
|
||||
r = metalink_parse_final(outs->metalink_parser, NULL, 0, &metalink);
|
||||
outs->metalink_parser = NULL;
|
||||
if(r != 0) {
|
||||
return -1;
|
||||
}
|
||||
if(metalink->files == NULL) {
|
||||
fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
|
||||
"(missing or invalid file name)\n",
|
||||
metalink_url);
|
||||
metalink_delete(metalink);
|
||||
return -1;
|
||||
}
|
||||
for(files = metalink->files; *files; ++files) {
|
||||
struct getout *url;
|
||||
/* Skip an entry which has no resource. */
|
||||
if(!(*files)->resources) {
|
||||
fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
|
||||
"(missing or invalid resource)\n",
|
||||
metalink_url, (*files)->name);
|
||||
continue;
|
||||
}
|
||||
if(config->url_get ||
|
||||
((config->url_get = config->url_list) != NULL)) {
|
||||
/* there's a node here, if it already is filled-in continue to
|
||||
find an "empty" node */
|
||||
while(config->url_get && (config->url_get->flags & GETOUT_URL))
|
||||
config->url_get = config->url_get->next;
|
||||
}
|
||||
|
||||
/* now there might or might not be an available node to fill in! */
|
||||
|
||||
if(config->url_get)
|
||||
/* existing node */
|
||||
url = config->url_get;
|
||||
else
|
||||
/* there was no free node, create one! */
|
||||
url = new_getout(config);
|
||||
|
||||
if(url) {
|
||||
metalinkfile *mlfile = new_metalinkfile(*files);
|
||||
if(!mlfile)
|
||||
break;
|
||||
|
||||
if(!mlfile->checksum) {
|
||||
warnings = TRUE;
|
||||
fprintf(config->global->errors,
|
||||
"Metalink: parsing (%s) WARNING (digest missing)\n",
|
||||
metalink_url);
|
||||
}
|
||||
/* Set name as url */
|
||||
GetStr(&url->url, mlfile->filename);
|
||||
|
||||
/* set flag metalink here */
|
||||
url->flags |= GETOUT_URL | GETOUT_METALINK;
|
||||
|
||||
if(config->metalinkfile_list) {
|
||||
config->metalinkfile_last->next = mlfile;
|
||||
config->metalinkfile_last = mlfile;
|
||||
}
|
||||
else {
|
||||
config->metalinkfile_list = config->metalinkfile_last = mlfile;
|
||||
}
|
||||
}
|
||||
}
|
||||
metalink_delete(metalink);
|
||||
return (warnings) ? -2 : 0;
|
||||
}
|
||||
|
||||
size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
|
||||
void *userdata)
|
||||
{
|
||||
struct OutStruct *outs = userdata;
|
||||
struct OperationConfig *config = outs->config;
|
||||
int rv;
|
||||
|
||||
/*
|
||||
* Once that libcurl has called back tool_write_cb() the returned value
|
||||
* is checked against the amount that was intended to be written, if
|
||||
* it does not match then it fails with CURLE_WRITE_ERROR. So at this
|
||||
* point returning a value different from sz*nmemb indicates failure.
|
||||
*/
|
||||
const size_t failure = (sz * nmemb) ? 0 : 1;
|
||||
|
||||
if(!config)
|
||||
return failure;
|
||||
|
||||
rv = metalink_parse_update(outs->metalink_parser, buffer, sz *nmemb);
|
||||
if(rv == 0)
|
||||
return sz * nmemb;
|
||||
else {
|
||||
fprintf(config->global->errors, "Metalink: parsing FAILED\n");
|
||||
return failure;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns nonzero if content_type includes mediatype.
|
||||
*/
|
||||
static int check_content_type(const char *content_type, const char *media_type)
|
||||
{
|
||||
const char *ptr = content_type;
|
||||
size_t media_type_len = strlen(media_type);
|
||||
for(; *ptr && (*ptr == ' ' || *ptr == '\t'); ++ptr);
|
||||
if(!*ptr) {
|
||||
return 0;
|
||||
}
|
||||
return curl_strnequal(ptr, media_type, media_type_len) &&
|
||||
(*(ptr+media_type_len) == '\0' || *(ptr+media_type_len) == ' ' ||
|
||||
*(ptr+media_type_len) == '\t' || *(ptr+media_type_len) == ';');
|
||||
}
|
||||
|
||||
int check_metalink_content_type(const char *content_type)
|
||||
{
|
||||
return check_content_type(content_type, "application/metalink+xml");
|
||||
}
|
||||
|
||||
int count_next_metalink_resource(metalinkfile *mlfile)
|
||||
{
|
||||
int count = 0;
|
||||
metalink_resource *res;
|
||||
for(res = mlfile->resource; res; res = res->next, ++count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static void delete_metalink_checksum(metalink_checksum *chksum)
|
||||
{
|
||||
if(chksum == NULL) {
|
||||
return;
|
||||
}
|
||||
Curl_safefree(chksum->digest);
|
||||
Curl_safefree(chksum);
|
||||
}
|
||||
|
||||
static void delete_metalink_resource(metalink_resource *res)
|
||||
{
|
||||
if(res == NULL) {
|
||||
return;
|
||||
}
|
||||
Curl_safefree(res->url);
|
||||
Curl_safefree(res);
|
||||
}
|
||||
|
||||
static void delete_metalinkfile(metalinkfile *mlfile)
|
||||
{
|
||||
metalink_resource *res;
|
||||
if(mlfile == NULL) {
|
||||
return;
|
||||
}
|
||||
Curl_safefree(mlfile->filename);
|
||||
delete_metalink_checksum(mlfile->checksum);
|
||||
for(res = mlfile->resource; res;) {
|
||||
metalink_resource *next;
|
||||
next = res->next;
|
||||
delete_metalink_resource(res);
|
||||
res = next;
|
||||
}
|
||||
Curl_safefree(mlfile);
|
||||
}
|
||||
|
||||
void clean_metalink(struct OperationConfig *config)
|
||||
{
|
||||
while(config->metalinkfile_list) {
|
||||
metalinkfile *mlfile = config->metalinkfile_list;
|
||||
config->metalinkfile_list = config->metalinkfile_list->next;
|
||||
delete_metalinkfile(mlfile);
|
||||
}
|
||||
config->metalinkfile_last = 0;
|
||||
}
|
||||
|
||||
void metalink_cleanup(void)
|
||||
{
|
||||
#ifdef USE_NSS
|
||||
if(nss_context) {
|
||||
NSS_ShutdownContext(nss_context);
|
||||
nss_context = NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* USE_METALINK */
|
||||
@@ -1,167 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_METALINK_H
|
||||
#define HEADER_CURL_TOOL_METALINK_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
struct GlobalConfig;
|
||||
struct OperationConfig;
|
||||
|
||||
/* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */
|
||||
typedef int (* Curl_digest_init_func)(void *context);
|
||||
|
||||
typedef void (* Curl_digest_update_func)(void *context,
|
||||
const unsigned char *data,
|
||||
unsigned int len);
|
||||
typedef void (* Curl_digest_final_func)(unsigned char *result, void *context);
|
||||
|
||||
typedef struct {
|
||||
Curl_digest_init_func digest_init; /* Initialize context procedure */
|
||||
Curl_digest_update_func digest_update; /* Update context with data */
|
||||
Curl_digest_final_func digest_final; /* Get final result procedure */
|
||||
unsigned int digest_ctxtsize; /* Context structure size */
|
||||
unsigned int digest_resultlen; /* Result length (bytes) */
|
||||
} digest_params;
|
||||
|
||||
typedef struct {
|
||||
const digest_params *digest_hash; /* Hash function definition */
|
||||
void *digest_hashctx; /* Hash function context */
|
||||
} digest_context;
|
||||
|
||||
digest_context * Curl_digest_init(const digest_params *dparams);
|
||||
int Curl_digest_update(digest_context *context,
|
||||
const unsigned char *data,
|
||||
unsigned int len);
|
||||
int Curl_digest_final(digest_context *context, unsigned char *result);
|
||||
|
||||
typedef struct {
|
||||
const char *hash_name;
|
||||
const digest_params *dparams;
|
||||
} metalink_digest_def;
|
||||
|
||||
typedef struct {
|
||||
const char *alias_name;
|
||||
const metalink_digest_def *digest_def;
|
||||
} metalink_digest_alias;
|
||||
|
||||
typedef struct metalink_checksum {
|
||||
const metalink_digest_def *digest_def;
|
||||
/* raw digest value, not ascii hex digest */
|
||||
unsigned char *digest;
|
||||
} metalink_checksum;
|
||||
|
||||
typedef struct metalink_resource {
|
||||
struct metalink_resource *next;
|
||||
char *url;
|
||||
} metalink_resource;
|
||||
|
||||
typedef struct metalinkfile {
|
||||
struct metalinkfile *next;
|
||||
char *filename;
|
||||
metalink_checksum *checksum;
|
||||
metalink_resource *resource;
|
||||
} metalinkfile;
|
||||
|
||||
#ifdef USE_METALINK
|
||||
|
||||
/*
|
||||
* curl requires libmetalink 0.1.0 or newer
|
||||
*/
|
||||
#define CURL_REQ_LIBMETALINK_MAJOR 0
|
||||
#define CURL_REQ_LIBMETALINK_MINOR 1
|
||||
#define CURL_REQ_LIBMETALINK_PATCH 0
|
||||
|
||||
#define CURL_REQ_LIBMETALINK_VERS ((CURL_REQ_LIBMETALINK_MAJOR * 10000) + \
|
||||
(CURL_REQ_LIBMETALINK_MINOR * 100) + \
|
||||
CURL_REQ_LIBMETALINK_PATCH)
|
||||
|
||||
extern const digest_params MD5_DIGEST_PARAMS[1];
|
||||
extern const digest_params SHA1_DIGEST_PARAMS[1];
|
||||
extern const digest_params SHA256_DIGEST_PARAMS[1];
|
||||
|
||||
#include <metalink/metalink.h>
|
||||
|
||||
/*
|
||||
* Counts the resource in the metalinkfile.
|
||||
*/
|
||||
int count_next_metalink_resource(metalinkfile *mlfile);
|
||||
void clean_metalink(struct OperationConfig *config);
|
||||
|
||||
/*
|
||||
* Performs final parse operation and extracts information from
|
||||
* Metalink and creates metalinkfile structs.
|
||||
*
|
||||
* This function returns 0 if it succeeds without warnings, or one of
|
||||
* the following negative error codes:
|
||||
*
|
||||
* -1: Parsing failed; or no file is found
|
||||
* -2: Parsing succeeded with some warnings.
|
||||
*/
|
||||
int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
|
||||
const char *metalink_url);
|
||||
|
||||
/*
|
||||
* Callback function for CURLOPT_WRITEFUNCTION
|
||||
*/
|
||||
size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
|
||||
void *userdata);
|
||||
|
||||
/*
|
||||
* Returns nonzero if content_type includes "application/metalink+xml"
|
||||
* media-type. The check is done in case-insensitive manner.
|
||||
*/
|
||||
int check_metalink_content_type(const char *content_type);
|
||||
|
||||
/*
|
||||
* Check checksum of file denoted by filename.
|
||||
*
|
||||
* This function returns 1 if the checksum matches or one of the
|
||||
* following integers:
|
||||
*
|
||||
* 0:
|
||||
* Checksum didn't match.
|
||||
* -1:
|
||||
* Could not open file; or could not read data from file.
|
||||
* -2:
|
||||
* No checksum in Metalink supported, hash algorithm not available, or
|
||||
* Metalink does not contain checksum.
|
||||
*/
|
||||
int metalink_check_hash(struct GlobalConfig *config,
|
||||
metalinkfile *mlfile,
|
||||
const char *filename);
|
||||
|
||||
/*
|
||||
* Release resources allocated at global scope.
|
||||
*/
|
||||
void metalink_cleanup(void);
|
||||
|
||||
#else /* USE_METALINK */
|
||||
|
||||
#define count_next_metalink_resource(x) 0
|
||||
#define clean_metalink(x) (void)x
|
||||
|
||||
/* metalink_cleanup() takes no arguments */
|
||||
#define metalink_cleanup() Curl_nop_stmt
|
||||
|
||||
#endif /* USE_METALINK */
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_METALINK_H */
|
||||
@@ -1,127 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include "tool_mfiles.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
static void AppendNode(struct multi_files **first,
|
||||
struct multi_files **last,
|
||||
struct multi_files *new)
|
||||
{
|
||||
DEBUGASSERT(((*first) && (*last)) || ((!*first) && (!*last)));
|
||||
|
||||
if(*last)
|
||||
(*last)->next = new;
|
||||
else
|
||||
*first = new;
|
||||
*last = new;
|
||||
}
|
||||
|
||||
/*
|
||||
* AddMultiFiles: Add a new list node possibly followed with a type_name.
|
||||
*
|
||||
* multi_first argument is the address of a pointer to the first element
|
||||
* of the multi_files linked list. A NULL pointer indicates empty list.
|
||||
*
|
||||
* multi_last argument is the address of a pointer to the last element
|
||||
* of the multi_files linked list. A NULL pointer indicates empty list.
|
||||
*
|
||||
* Pointers stored in multi_first and multi_last are modified while
|
||||
* function is executed. An out of memory condition free's the whole
|
||||
* list and returns with pointers stored in multi_first and multi_last
|
||||
* set to NULL and a NULL function result.
|
||||
*
|
||||
* Function returns same pointer as stored at multi_last.
|
||||
*/
|
||||
|
||||
struct multi_files *AddMultiFiles(const char *file_name,
|
||||
const char *type_name,
|
||||
const char *show_filename,
|
||||
struct multi_files **multi_first,
|
||||
struct multi_files **multi_last)
|
||||
{
|
||||
struct multi_files *multi;
|
||||
struct multi_files *multi_type;
|
||||
struct multi_files *multi_name;
|
||||
|
||||
multi = calloc(1, sizeof(struct multi_files));
|
||||
if(multi) {
|
||||
multi->form.option = CURLFORM_FILE;
|
||||
multi->form.value = file_name;
|
||||
AppendNode(multi_first, multi_last, multi);
|
||||
}
|
||||
else {
|
||||
FreeMultiInfo(multi_first, multi_last);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(type_name) {
|
||||
multi_type = calloc(1, sizeof(struct multi_files));
|
||||
if(multi_type) {
|
||||
multi_type->form.option = CURLFORM_CONTENTTYPE;
|
||||
multi_type->form.value = type_name;
|
||||
AppendNode(multi_first, multi_last, multi_type);
|
||||
}
|
||||
else {
|
||||
FreeMultiInfo(multi_first, multi_last);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if(show_filename) {
|
||||
multi_name = calloc(1, sizeof(struct multi_files));
|
||||
if(multi_name) {
|
||||
multi_name->form.option = CURLFORM_FILENAME;
|
||||
multi_name->form.value = show_filename;
|
||||
AppendNode(multi_first, multi_last, multi_name);
|
||||
}
|
||||
else {
|
||||
FreeMultiInfo(multi_first, multi_last);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return *multi_last;
|
||||
}
|
||||
|
||||
/*
|
||||
* FreeMultiInfo: Free the items of the list.
|
||||
*/
|
||||
|
||||
void FreeMultiInfo(struct multi_files **multi_first,
|
||||
struct multi_files **multi_last)
|
||||
{
|
||||
struct multi_files *next;
|
||||
struct multi_files *item = *multi_first;
|
||||
|
||||
while(item) {
|
||||
next = item->next;
|
||||
Curl_safefree(item);
|
||||
item = next;
|
||||
}
|
||||
*multi_first = NULL;
|
||||
if(multi_last)
|
||||
*multi_last = NULL;
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_MFILES_H
|
||||
#define HEADER_CURL_TOOL_MFILES_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
/*
|
||||
* Structure for storing the information needed to build
|
||||
* a multiple files section.
|
||||
*/
|
||||
|
||||
struct multi_files {
|
||||
struct curl_forms form;
|
||||
struct multi_files *next;
|
||||
};
|
||||
|
||||
struct multi_files *AddMultiFiles(const char *file_name,
|
||||
const char *type_name,
|
||||
const char *show_filename,
|
||||
struct multi_files **multi_first,
|
||||
struct multi_files **multi_last);
|
||||
|
||||
void FreeMultiInfo(struct multi_files **multi_first,
|
||||
struct multi_files **multi_last);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_MFILES_H */
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_msgs.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#define WARN_PREFIX "Warning: "
|
||||
#define NOTE_PREFIX "Note: "
|
||||
|
||||
static void voutf(struct GlobalConfig *config,
|
||||
const char *prefix,
|
||||
const char *fmt,
|
||||
va_list ap)
|
||||
{
|
||||
size_t width = (79 - (int)strlen(prefix));
|
||||
if(!config->mute) {
|
||||
size_t len;
|
||||
char *ptr;
|
||||
char print_buffer[256];
|
||||
|
||||
len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap);
|
||||
|
||||
ptr = print_buffer;
|
||||
while(len > 0) {
|
||||
fputs(prefix, config->errors);
|
||||
|
||||
if(len > width) {
|
||||
size_t cut = width-1;
|
||||
|
||||
while(!ISSPACE(ptr[cut]) && cut) {
|
||||
cut--;
|
||||
}
|
||||
if(0 == cut)
|
||||
/* not a single cutting position was found, just cut it at the
|
||||
max text width then! */
|
||||
cut = width-1;
|
||||
|
||||
(void)fwrite(ptr, cut + 1, 1, config->errors);
|
||||
fputs("\n", config->errors);
|
||||
ptr += cut+1; /* skip the space too */
|
||||
len -= cut;
|
||||
}
|
||||
else {
|
||||
fputs(ptr, config->errors);
|
||||
len = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Emit 'note' formatted message on configured 'errors' stream, if verbose was
|
||||
* selected.
|
||||
*/
|
||||
void notef(struct GlobalConfig *config, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
if(config->tracetype)
|
||||
voutf(config, NOTE_PREFIX, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*
|
||||
* Emit warning formatted message on configured 'errors' stream unless
|
||||
* mute (--silent) was selected.
|
||||
*/
|
||||
|
||||
void warnf(struct GlobalConfig *config, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
voutf(config, WARN_PREFIX, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
/*
|
||||
* Emit help formatted message on given stream.
|
||||
*/
|
||||
|
||||
void helpf(FILE *errors, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
if(fmt) {
|
||||
va_start(ap, fmt);
|
||||
fputs("curl: ", errors); /* prefix it */
|
||||
vfprintf(errors, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
fprintf(errors, "curl: try 'curl --help' "
|
||||
#ifdef USE_MANUAL
|
||||
"or 'curl --manual' "
|
||||
#endif
|
||||
"for more information\n");
|
||||
}
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_MSGS_H
|
||||
#define HEADER_CURL_TOOL_MSGS_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
void warnf(struct GlobalConfig *config, const char *fmt, ...);
|
||||
void notef(struct GlobalConfig *config, const char *fmt, ...);
|
||||
|
||||
void helpf(FILE *errors, const char *fmt, ...);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_MSGS_H */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,29 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_OPERATE_H
|
||||
#define HEADER_CURL_TOOL_OPERATE_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_OPERATE_H */
|
||||
|
||||
@@ -1,190 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include "strcase.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_convert.h"
|
||||
#include "tool_doswin.h"
|
||||
#include "tool_operhlp.h"
|
||||
#include "tool_metalink.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
void clean_getout(struct OperationConfig *config)
|
||||
{
|
||||
struct getout *next;
|
||||
struct getout *node = config->url_list;
|
||||
|
||||
while(node) {
|
||||
next = node->next;
|
||||
Curl_safefree(node->url);
|
||||
Curl_safefree(node->outfile);
|
||||
Curl_safefree(node->infile);
|
||||
Curl_safefree(node);
|
||||
node = next;
|
||||
}
|
||||
config->url_list = NULL;
|
||||
}
|
||||
|
||||
bool output_expected(const char *url, const char *uploadfile)
|
||||
{
|
||||
if(!uploadfile)
|
||||
return TRUE; /* download */
|
||||
if(checkprefix("http://", url) || checkprefix("https://", url))
|
||||
return TRUE; /* HTTP(S) upload */
|
||||
|
||||
return FALSE; /* non-HTTP upload, probably no output should be expected */
|
||||
}
|
||||
|
||||
bool stdin_upload(const char *uploadfile)
|
||||
{
|
||||
return (!strcmp(uploadfile, "-") ||
|
||||
!strcmp(uploadfile, ".")) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds the file name to the URL if it doesn't already have one.
|
||||
* url will be freed before return if the returned pointer is different
|
||||
*/
|
||||
char *add_file_name_to_url(CURL *curl, char *url, const char *filename)
|
||||
{
|
||||
/* If no file name part is given in the URL, we add this file name */
|
||||
char *ptr = strstr(url, "://");
|
||||
if(ptr)
|
||||
ptr += 3;
|
||||
else
|
||||
ptr = url;
|
||||
ptr = strrchr(ptr, '/');
|
||||
if(!ptr || !strlen(++ptr)) {
|
||||
/* The URL has no file name part, add the local file name. In order
|
||||
to be able to do so, we have to create a new URL in another
|
||||
buffer.*/
|
||||
|
||||
/* We only want the part of the local path that is on the right
|
||||
side of the rightmost slash and backslash. */
|
||||
const char *filep = strrchr(filename, '/');
|
||||
char *file2 = strrchr(filep?filep:filename, '\\');
|
||||
char *encfile;
|
||||
|
||||
if(file2)
|
||||
filep = file2 + 1;
|
||||
else if(filep)
|
||||
filep++;
|
||||
else
|
||||
filep = filename;
|
||||
|
||||
/* URL encode the file name */
|
||||
encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
|
||||
if(encfile) {
|
||||
char *urlbuffer;
|
||||
if(ptr)
|
||||
/* there is a trailing slash on the URL */
|
||||
urlbuffer = aprintf("%s%s", url, encfile);
|
||||
else
|
||||
/* there is no trailing slash on the URL */
|
||||
urlbuffer = aprintf("%s/%s", url, encfile);
|
||||
|
||||
curl_free(encfile);
|
||||
Curl_safefree(url);
|
||||
|
||||
if(!urlbuffer)
|
||||
return NULL;
|
||||
|
||||
url = urlbuffer; /* use our new URL instead! */
|
||||
}
|
||||
else
|
||||
Curl_safefree(url);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
/* Extracts the name portion of the URL.
|
||||
* Returns a pointer to a heap-allocated string or NULL if
|
||||
* no name part, at location indicated by first argument.
|
||||
*/
|
||||
CURLcode get_url_file_name(char **filename, const char *url)
|
||||
{
|
||||
const char *pc, *pc2;
|
||||
|
||||
*filename = NULL;
|
||||
|
||||
/* Find and get the remote file name */
|
||||
pc = strstr(url, "://");
|
||||
if(pc)
|
||||
pc += 3;
|
||||
else
|
||||
pc = url;
|
||||
|
||||
pc2 = strrchr(pc, '\\');
|
||||
pc = strrchr(pc, '/');
|
||||
if(pc2 && (!pc || pc < pc2))
|
||||
pc = pc2;
|
||||
|
||||
if(pc)
|
||||
/* duplicate the string beyond the slash */
|
||||
pc++;
|
||||
else
|
||||
/* no slash => empty string */
|
||||
pc = "";
|
||||
|
||||
*filename = strdup(pc);
|
||||
if(!*filename)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
#if defined(MSDOS) || defined(WIN32)
|
||||
{
|
||||
char *sanitized;
|
||||
SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
|
||||
Curl_safefree(*filename);
|
||||
if(sc)
|
||||
return CURLE_URL_MALFORMAT;
|
||||
*filename = sanitized;
|
||||
}
|
||||
#endif /* MSDOS || WIN32 */
|
||||
|
||||
/* in case we built debug enabled, we allow an environment variable
|
||||
* named CURL_TESTDIR to prefix the given file name to put it into a
|
||||
* specific directory
|
||||
*/
|
||||
#ifdef DEBUGBUILD
|
||||
{
|
||||
char *tdir = curlx_getenv("CURL_TESTDIR");
|
||||
if(tdir) {
|
||||
char buffer[512]; /* suitably large */
|
||||
snprintf(buffer, sizeof(buffer), "%s/%s", tdir, *filename);
|
||||
Curl_safefree(*filename);
|
||||
*filename = strdup(buffer); /* clone the buffer */
|
||||
curl_free(tdir);
|
||||
if(!*filename)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_OPERHLP_H
|
||||
#define HEADER_CURL_TOOL_OPERHLP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
struct OperationConfig;
|
||||
|
||||
void clean_getout(struct OperationConfig *config);
|
||||
|
||||
bool output_expected(const char *url, const char *uploadfile);
|
||||
|
||||
bool stdin_upload(const char *uploadfile);
|
||||
|
||||
char *add_file_name_to_url(CURL *curl, char *url, const char *filename);
|
||||
|
||||
CURLcode get_url_file_name(char **filename, const char *url);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_OPERHLP_H */
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#if defined(__SYMBIAN32__) || defined(NETWARE)
|
||||
|
||||
#ifdef NETWARE
|
||||
# ifdef __NOVELL_LIBC__
|
||||
# include <screen.h>
|
||||
# else
|
||||
# include <nwconio.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include "tool_panykey.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
void tool_pressanykey(void)
|
||||
{
|
||||
#if defined(__SYMBIAN32__)
|
||||
getchar();
|
||||
#elif defined(NETWARE)
|
||||
pressanykey();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* __SYMBIAN32__ || NETWARE */
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_PANYKEY_H
|
||||
#define HEADER_CURL_TOOL_PANYKEY_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#if defined(__SYMBIAN32__) || defined(NETWARE)
|
||||
|
||||
void tool_pressanykey(void);
|
||||
|
||||
#else
|
||||
|
||||
#define tool_pressanykey() Curl_nop_stmt
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_PANYKEY_H */
|
||||
|
||||
@@ -1,552 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include "strcase.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_getparam.h"
|
||||
#include "tool_getpass.h"
|
||||
#include "tool_homedir.h"
|
||||
#include "tool_msgs.h"
|
||||
#include "tool_paramhlp.h"
|
||||
#include "tool_version.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
struct getout *new_getout(struct OperationConfig *config)
|
||||
{
|
||||
struct getout *node = calloc(1, sizeof(struct getout));
|
||||
struct getout *last = config->url_last;
|
||||
if(node) {
|
||||
/* append this new node last in the list */
|
||||
if(last)
|
||||
last->next = node;
|
||||
else
|
||||
config->url_list = node; /* first node */
|
||||
|
||||
/* move the last pointer */
|
||||
config->url_last = node;
|
||||
|
||||
node->flags = config->default_node_flags;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
ParameterError file2string(char **bufp, FILE *file)
|
||||
{
|
||||
char buffer[256];
|
||||
char *ptr;
|
||||
char *string = NULL;
|
||||
size_t stringlen = 0;
|
||||
size_t buflen;
|
||||
|
||||
if(file) {
|
||||
while(fgets(buffer, sizeof(buffer), file)) {
|
||||
ptr = strchr(buffer, '\r');
|
||||
if(ptr)
|
||||
*ptr = '\0';
|
||||
ptr = strchr(buffer, '\n');
|
||||
if(ptr)
|
||||
*ptr = '\0';
|
||||
buflen = strlen(buffer);
|
||||
ptr = realloc(string, stringlen+buflen+1);
|
||||
if(!ptr) {
|
||||
Curl_safefree(string);
|
||||
return PARAM_NO_MEM;
|
||||
}
|
||||
string = ptr;
|
||||
strcpy(string+stringlen, buffer);
|
||||
stringlen += buflen;
|
||||
}
|
||||
}
|
||||
*bufp = string;
|
||||
return PARAM_OK;
|
||||
}
|
||||
|
||||
ParameterError file2memory(char **bufp, size_t *size, FILE *file)
|
||||
{
|
||||
char *newbuf;
|
||||
char *buffer = NULL;
|
||||
size_t alloc = 512;
|
||||
size_t nused = 0;
|
||||
size_t nread;
|
||||
|
||||
if(file) {
|
||||
do {
|
||||
if(!buffer || (alloc == nused)) {
|
||||
/* size_t overflow detection for huge files */
|
||||
if(alloc+1 > ((size_t)-1)/2) {
|
||||
Curl_safefree(buffer);
|
||||
return PARAM_NO_MEM;
|
||||
}
|
||||
alloc *= 2;
|
||||
/* allocate an extra char, reserved space, for null termination */
|
||||
newbuf = realloc(buffer, alloc+1);
|
||||
if(!newbuf) {
|
||||
Curl_safefree(buffer);
|
||||
return PARAM_NO_MEM;
|
||||
}
|
||||
buffer = newbuf;
|
||||
}
|
||||
nread = fread(buffer+nused, 1, alloc-nused, file);
|
||||
nused += nread;
|
||||
} while(nread);
|
||||
/* null terminate the buffer in case it's used as a string later */
|
||||
buffer[nused] = '\0';
|
||||
/* free trailing slack space, if possible */
|
||||
if(alloc != nused) {
|
||||
newbuf = realloc(buffer, nused+1);
|
||||
if(!newbuf) {
|
||||
Curl_safefree(buffer);
|
||||
return PARAM_NO_MEM;
|
||||
}
|
||||
buffer = newbuf;
|
||||
}
|
||||
/* discard buffer if nothing was read */
|
||||
if(!nused) {
|
||||
Curl_safefree(buffer); /* no string */
|
||||
}
|
||||
}
|
||||
*size = nused;
|
||||
*bufp = buffer;
|
||||
return PARAM_OK;
|
||||
}
|
||||
|
||||
void cleanarg(char *str)
|
||||
{
|
||||
#ifdef HAVE_WRITABLE_ARGV
|
||||
/* now that GetStr has copied the contents of nextarg, wipe the next
|
||||
* argument out so that the username:password isn't displayed in the
|
||||
* system process list */
|
||||
if(str) {
|
||||
size_t len = strlen(str);
|
||||
memset(str, ' ', len);
|
||||
}
|
||||
#else
|
||||
(void)str;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the string and write the long in the given address. Return PARAM_OK
|
||||
* on success, otherwise a parameter specific error enum.
|
||||
*
|
||||
* Since this function gets called with the 'nextarg' pointer from within the
|
||||
* getparameter a lot, we must check it for NULL before accessing the str
|
||||
* data.
|
||||
*/
|
||||
|
||||
ParameterError str2num(long *val, const char *str)
|
||||
{
|
||||
if(str) {
|
||||
char *endptr;
|
||||
long num = strtol(str, &endptr, 10);
|
||||
if((endptr != str) && (endptr == str + strlen(str))) {
|
||||
*val = num;
|
||||
return PARAM_OK; /* Ok */
|
||||
}
|
||||
}
|
||||
return PARAM_BAD_NUMERIC; /* badness */
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the string and write the long in the given address. Return PARAM_OK
|
||||
* on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
|
||||
*
|
||||
* Since this function gets called with the 'nextarg' pointer from within the
|
||||
* getparameter a lot, we must check it for NULL before accessing the str
|
||||
* data.
|
||||
*/
|
||||
|
||||
ParameterError str2unum(long *val, const char *str)
|
||||
{
|
||||
ParameterError result = str2num(val, str);
|
||||
if(result != PARAM_OK)
|
||||
return result;
|
||||
if(*val < 0)
|
||||
return PARAM_NEGATIVE_NUMERIC;
|
||||
|
||||
return PARAM_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the string and write the double in the given address. Return PARAM_OK
|
||||
* on success, otherwise a parameter specific error enum.
|
||||
*
|
||||
* Since this function gets called with the 'nextarg' pointer from within the
|
||||
* getparameter a lot, we must check it for NULL before accessing the str
|
||||
* data.
|
||||
*/
|
||||
|
||||
ParameterError str2double(double *val, const char *str)
|
||||
{
|
||||
if(str) {
|
||||
char *endptr;
|
||||
double num = strtod(str, &endptr);
|
||||
if((endptr != str) && (endptr == str + strlen(str))) {
|
||||
*val = num;
|
||||
return PARAM_OK; /* Ok */
|
||||
}
|
||||
}
|
||||
return PARAM_BAD_NUMERIC; /* badness */
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the string and write the double in the given address. Return PARAM_OK
|
||||
* on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
|
||||
*
|
||||
* Since this function gets called with the 'nextarg' pointer from within the
|
||||
* getparameter a lot, we must check it for NULL before accessing the str
|
||||
* data.
|
||||
*/
|
||||
|
||||
ParameterError str2udouble(double *val, const char *str)
|
||||
{
|
||||
ParameterError result = str2double(val, str);
|
||||
if(result != PARAM_OK)
|
||||
return result;
|
||||
if(*val < 0)
|
||||
return PARAM_NEGATIVE_NUMERIC;
|
||||
|
||||
return PARAM_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the string and modify the long in the given address. Return
|
||||
* non-zero on failure, zero on success.
|
||||
*
|
||||
* The string is a list of protocols
|
||||
*
|
||||
* Since this function gets called with the 'nextarg' pointer from within the
|
||||
* getparameter a lot, we must check it for NULL before accessing the str
|
||||
* data.
|
||||
*/
|
||||
|
||||
long proto2num(struct OperationConfig *config, long *val, const char *str)
|
||||
{
|
||||
char *buffer;
|
||||
const char *sep = ",";
|
||||
char *token;
|
||||
|
||||
static struct sprotos {
|
||||
const char *name;
|
||||
long bit;
|
||||
} const protos[] = {
|
||||
{ "all", CURLPROTO_ALL },
|
||||
{ "http", CURLPROTO_HTTP },
|
||||
{ "https", CURLPROTO_HTTPS },
|
||||
{ "ftp", CURLPROTO_FTP },
|
||||
{ "ftps", CURLPROTO_FTPS },
|
||||
{ "scp", CURLPROTO_SCP },
|
||||
{ "sftp", CURLPROTO_SFTP },
|
||||
{ "telnet", CURLPROTO_TELNET },
|
||||
{ "ldap", CURLPROTO_LDAP },
|
||||
{ "ldaps", CURLPROTO_LDAPS },
|
||||
{ "dict", CURLPROTO_DICT },
|
||||
{ "file", CURLPROTO_FILE },
|
||||
{ "tftp", CURLPROTO_TFTP },
|
||||
{ "imap", CURLPROTO_IMAP },
|
||||
{ "imaps", CURLPROTO_IMAPS },
|
||||
{ "pop3", CURLPROTO_POP3 },
|
||||
{ "pop3s", CURLPROTO_POP3S },
|
||||
{ "smtp", CURLPROTO_SMTP },
|
||||
{ "smtps", CURLPROTO_SMTPS },
|
||||
{ "rtsp", CURLPROTO_RTSP },
|
||||
{ "gopher", CURLPROTO_GOPHER },
|
||||
{ "smb", CURLPROTO_SMB },
|
||||
{ "smbs", CURLPROTO_SMBS },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
if(!str)
|
||||
return 1;
|
||||
|
||||
buffer = strdup(str); /* because strtok corrupts it */
|
||||
if(!buffer)
|
||||
return 1;
|
||||
|
||||
/* Allow strtok() here since this isn't used threaded */
|
||||
/* !checksrc! disable BANNEDFUNC 2 */
|
||||
for(token = strtok(buffer, sep);
|
||||
token;
|
||||
token = strtok(NULL, sep)) {
|
||||
enum e_action { allow, deny, set } action = allow;
|
||||
|
||||
struct sprotos const *pp;
|
||||
|
||||
/* Process token modifiers */
|
||||
while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
|
||||
switch (*token++) {
|
||||
case '=':
|
||||
action = set;
|
||||
break;
|
||||
case '-':
|
||||
action = deny;
|
||||
break;
|
||||
case '+':
|
||||
action = allow;
|
||||
break;
|
||||
default: /* Includes case of terminating NULL */
|
||||
Curl_safefree(buffer);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
for(pp=protos; pp->name; pp++) {
|
||||
if(curl_strequal(token, pp->name)) {
|
||||
switch(action) {
|
||||
case deny:
|
||||
*val &= ~(pp->bit);
|
||||
break;
|
||||
case allow:
|
||||
*val |= pp->bit;
|
||||
break;
|
||||
case set:
|
||||
*val = pp->bit;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!(pp->name)) { /* unknown protocol */
|
||||
/* If they have specified only this protocol, we say treat it as
|
||||
if no protocols are allowed */
|
||||
if(action == set)
|
||||
*val = 0;
|
||||
warnf(config->global, "unrecognized protocol '%s'\n", token);
|
||||
}
|
||||
}
|
||||
Curl_safefree(buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given string is a protocol supported by libcurl
|
||||
*
|
||||
* @param str the protocol name
|
||||
* @return PARAM_OK protocol supported
|
||||
* @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL protocol not supported
|
||||
* @return PARAM_REQUIRES_PARAMETER missing parameter
|
||||
*/
|
||||
int check_protocol(const char *str)
|
||||
{
|
||||
const char * const *pp;
|
||||
const curl_version_info_data *curlinfo = curl_version_info(CURLVERSION_NOW);
|
||||
if(!str)
|
||||
return PARAM_REQUIRES_PARAMETER;
|
||||
for(pp = curlinfo->protocols; *pp; pp++) {
|
||||
if(curl_strequal(*pp, str))
|
||||
return PARAM_OK;
|
||||
}
|
||||
return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the given string looking for an offset (which may be a
|
||||
* larger-than-integer value). The offset CANNOT be negative!
|
||||
*
|
||||
* @param val the offset to populate
|
||||
* @param str the buffer containing the offset
|
||||
* @return PARAM_OK if successful, a parameter specific error enum if failure.
|
||||
*/
|
||||
ParameterError str2offset(curl_off_t *val, const char *str)
|
||||
{
|
||||
char *endptr;
|
||||
if(str[0] == '-')
|
||||
/* offsets aren't negative, this indicates weird input */
|
||||
return PARAM_NEGATIVE_NUMERIC;
|
||||
|
||||
#if(CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
|
||||
*val = curlx_strtoofft(str, &endptr, 0);
|
||||
if((*val == CURL_OFF_T_MAX || *val == CURL_OFF_T_MIN) && (ERRNO == ERANGE))
|
||||
return PARAM_BAD_NUMERIC;
|
||||
#else
|
||||
*val = strtol(str, &endptr, 0);
|
||||
if((*val == LONG_MIN || *val == LONG_MAX) && ERRNO == ERANGE)
|
||||
return PARAM_BAD_NUMERIC;
|
||||
#endif
|
||||
if((endptr != str) && (endptr == str + strlen(str)))
|
||||
return PARAM_OK;
|
||||
|
||||
return PARAM_BAD_NUMERIC;
|
||||
}
|
||||
|
||||
static CURLcode checkpasswd(const char *kind, /* for what purpose */
|
||||
const size_t i, /* operation index */
|
||||
const bool last, /* TRUE if last operation */
|
||||
char **userpwd) /* pointer to allocated string */
|
||||
{
|
||||
char *psep;
|
||||
char *osep;
|
||||
|
||||
if(!*userpwd)
|
||||
return CURLE_OK;
|
||||
|
||||
/* Attempt to find the password separator */
|
||||
psep = strchr(*userpwd, ':');
|
||||
|
||||
/* Attempt to find the options separator */
|
||||
osep = strchr(*userpwd, ';');
|
||||
|
||||
if(!psep && **userpwd != ';') {
|
||||
/* no password present, prompt for one */
|
||||
char passwd[256] = "";
|
||||
char prompt[256];
|
||||
size_t passwdlen;
|
||||
size_t userlen = strlen(*userpwd);
|
||||
char *passptr;
|
||||
|
||||
if(osep)
|
||||
*osep = '\0';
|
||||
|
||||
/* build a nice-looking prompt */
|
||||
if(!i && last)
|
||||
curlx_msnprintf(prompt, sizeof(prompt),
|
||||
"Enter %s password for user '%s':",
|
||||
kind, *userpwd);
|
||||
else
|
||||
curlx_msnprintf(prompt, sizeof(prompt),
|
||||
"Enter %s password for user '%s' on URL #%"
|
||||
CURL_FORMAT_CURL_OFF_TU ":",
|
||||
kind, *userpwd, (curl_off_t) (i + 1));
|
||||
|
||||
/* get password */
|
||||
getpass_r(prompt, passwd, sizeof(passwd));
|
||||
passwdlen = strlen(passwd);
|
||||
|
||||
if(osep)
|
||||
*osep = ';';
|
||||
|
||||
/* extend the allocated memory area to fit the password too */
|
||||
passptr = realloc(*userpwd,
|
||||
passwdlen + 1 + /* an extra for the colon */
|
||||
userlen + 1); /* an extra for the zero */
|
||||
if(!passptr)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
/* append the password separated with a colon */
|
||||
passptr[userlen] = ':';
|
||||
memcpy(&passptr[userlen+1], passwd, passwdlen+1);
|
||||
*userpwd = passptr;
|
||||
}
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
ParameterError add2list(struct curl_slist **list, const char *ptr)
|
||||
{
|
||||
struct curl_slist *newlist = curl_slist_append(*list, ptr);
|
||||
if(newlist)
|
||||
*list = newlist;
|
||||
else
|
||||
return PARAM_NO_MEM;
|
||||
|
||||
return PARAM_OK;
|
||||
}
|
||||
|
||||
int ftpfilemethod(struct OperationConfig *config, const char *str)
|
||||
{
|
||||
if(curl_strequal("singlecwd", str))
|
||||
return CURLFTPMETHOD_SINGLECWD;
|
||||
if(curl_strequal("nocwd", str))
|
||||
return CURLFTPMETHOD_NOCWD;
|
||||
if(curl_strequal("multicwd", str))
|
||||
return CURLFTPMETHOD_MULTICWD;
|
||||
|
||||
warnf(config->global, "unrecognized ftp file method '%s', using default\n",
|
||||
str);
|
||||
|
||||
return CURLFTPMETHOD_MULTICWD;
|
||||
}
|
||||
|
||||
int ftpcccmethod(struct OperationConfig *config, const char *str)
|
||||
{
|
||||
if(curl_strequal("passive", str))
|
||||
return CURLFTPSSL_CCC_PASSIVE;
|
||||
if(curl_strequal("active", str))
|
||||
return CURLFTPSSL_CCC_ACTIVE;
|
||||
|
||||
warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
|
||||
str);
|
||||
|
||||
return CURLFTPSSL_CCC_PASSIVE;
|
||||
}
|
||||
|
||||
long delegation(struct OperationConfig *config, char *str)
|
||||
{
|
||||
if(curl_strequal("none", str))
|
||||
return CURLGSSAPI_DELEGATION_NONE;
|
||||
if(curl_strequal("policy", str))
|
||||
return CURLGSSAPI_DELEGATION_POLICY_FLAG;
|
||||
if(curl_strequal("always", str))
|
||||
return CURLGSSAPI_DELEGATION_FLAG;
|
||||
|
||||
warnf(config->global, "unrecognized delegation method '%s', using none\n",
|
||||
str);
|
||||
|
||||
return CURLGSSAPI_DELEGATION_NONE;
|
||||
}
|
||||
|
||||
/*
|
||||
* my_useragent: returns allocated string with default user agent
|
||||
*/
|
||||
static char *my_useragent(void)
|
||||
{
|
||||
return strdup(CURL_NAME "/" CURL_VERSION);
|
||||
}
|
||||
|
||||
CURLcode get_args(struct OperationConfig *config, const size_t i)
|
||||
{
|
||||
CURLcode result = CURLE_OK;
|
||||
bool last = (config->next ? FALSE : TRUE);
|
||||
|
||||
/* Check we have a password for the given host user */
|
||||
if(config->userpwd && !config->oauth_bearer) {
|
||||
result = checkpasswd("host", i, last, &config->userpwd);
|
||||
if(result)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Check we have a password for the given proxy user */
|
||||
if(config->proxyuserpwd) {
|
||||
result = checkpasswd("proxy", i, last, &config->proxyuserpwd);
|
||||
if(result)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Check we have a user agent */
|
||||
if(!config->useragent) {
|
||||
config->useragent = my_useragent();
|
||||
if(!config->useragent) {
|
||||
helpf(config->global->errors, "out of memory\n");
|
||||
result = CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_PARAMHLP_H
|
||||
#define HEADER_CURL_TOOL_PARAMHLP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
struct getout *new_getout(struct OperationConfig *config);
|
||||
|
||||
ParameterError file2string(char **bufp, FILE *file);
|
||||
|
||||
ParameterError file2memory(char **bufp, size_t *size, FILE *file);
|
||||
|
||||
void cleanarg(char *str);
|
||||
|
||||
ParameterError str2num(long *val, const char *str);
|
||||
ParameterError str2unum(long *val, const char *str);
|
||||
ParameterError str2double(double *val, const char *str);
|
||||
ParameterError str2udouble(double *val, const char *str);
|
||||
|
||||
long proto2num(struct OperationConfig *config, long *val, const char *str);
|
||||
|
||||
int check_protocol(const char *str);
|
||||
|
||||
ParameterError str2offset(curl_off_t *val, const char *str);
|
||||
|
||||
CURLcode get_args(struct OperationConfig *config, const size_t i);
|
||||
|
||||
ParameterError add2list(struct curl_slist **list, const char *ptr);
|
||||
|
||||
int ftpfilemethod(struct OperationConfig *config, const char *str);
|
||||
|
||||
int ftpcccmethod(struct OperationConfig *config, const char *str);
|
||||
|
||||
long delegation(struct OperationConfig *config, char *str);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_PARAMHLP_H */
|
||||
@@ -1,361 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_getparam.h"
|
||||
#include "tool_helpers.h"
|
||||
#include "tool_homedir.h"
|
||||
#include "tool_msgs.h"
|
||||
#include "tool_parsecfg.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#define CURLRC DOT_CHAR "curlrc"
|
||||
|
||||
/* only acknowledge colon or equals as separators if the option was not
|
||||
specified with an initial dash! */
|
||||
#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':')))
|
||||
|
||||
static const char *unslashquote(const char *line, char *param);
|
||||
static char *my_get_line(FILE *fp);
|
||||
|
||||
/* return 0 on everything-is-fine, and non-zero otherwise */
|
||||
int parseconfig(const char *filename, struct GlobalConfig *global)
|
||||
{
|
||||
int res;
|
||||
FILE *file;
|
||||
char filebuffer[512];
|
||||
bool usedarg;
|
||||
char *home;
|
||||
int rc = 0;
|
||||
struct OperationConfig *operation = global->first;
|
||||
|
||||
if(!filename || !*filename) {
|
||||
/* NULL or no file name attempts to load .curlrc from the homedir! */
|
||||
|
||||
#ifndef __AMIGA__
|
||||
filename = CURLRC; /* sensible default */
|
||||
home = homedir(); /* portable homedir finder */
|
||||
if(home) {
|
||||
if(strlen(home) < (sizeof(filebuffer) - strlen(CURLRC))) {
|
||||
snprintf(filebuffer, sizeof(filebuffer),
|
||||
"%s%s%s", home, DIR_CHAR, CURLRC);
|
||||
|
||||
#ifdef WIN32
|
||||
/* Check if the file exists - if not, try CURLRC in the same
|
||||
* directory as our executable
|
||||
*/
|
||||
file = fopen(filebuffer, FOPEN_READTEXT);
|
||||
if(file != NULL) {
|
||||
fclose(file);
|
||||
filename = filebuffer;
|
||||
}
|
||||
else {
|
||||
/* Get the filename of our executable. GetModuleFileName is
|
||||
* already declared via inclusions done in setup header file.
|
||||
* We assume that we are using the ASCII version here.
|
||||
*/
|
||||
int n = GetModuleFileName(0, filebuffer, sizeof(filebuffer));
|
||||
if(n > 0 && n < (int)sizeof(filebuffer)) {
|
||||
/* We got a valid filename - get the directory part */
|
||||
char *lastdirchar = strrchr(filebuffer, '\\');
|
||||
if(lastdirchar) {
|
||||
size_t remaining;
|
||||
*lastdirchar = 0;
|
||||
/* If we have enough space, build the RC filename */
|
||||
remaining = sizeof(filebuffer) - strlen(filebuffer);
|
||||
if(strlen(CURLRC) < remaining - 1) {
|
||||
snprintf(lastdirchar, remaining,
|
||||
"%s%s", DIR_CHAR, CURLRC);
|
||||
/* Don't bother checking if it exists - we do
|
||||
* that later
|
||||
*/
|
||||
filename = filebuffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else /* WIN32 */
|
||||
filename = filebuffer;
|
||||
#endif /* WIN32 */
|
||||
}
|
||||
Curl_safefree(home); /* we've used it, now free it */
|
||||
}
|
||||
|
||||
# else /* __AMIGA__ */
|
||||
/* On AmigaOS all the config files are into env:
|
||||
*/
|
||||
filename = "ENV:" CURLRC;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
if(strcmp(filename, "-"))
|
||||
file = fopen(filename, FOPEN_READTEXT);
|
||||
else
|
||||
file = stdin;
|
||||
|
||||
if(file) {
|
||||
char *line;
|
||||
char *aline;
|
||||
char *option;
|
||||
char *param;
|
||||
int lineno = 0;
|
||||
bool alloced_param;
|
||||
bool dashed_option;
|
||||
|
||||
while(NULL != (aline = my_get_line(file))) {
|
||||
lineno++;
|
||||
line = aline;
|
||||
alloced_param=FALSE;
|
||||
|
||||
/* line with # in the first non-blank column is a comment! */
|
||||
while(*line && ISSPACE(*line))
|
||||
line++;
|
||||
|
||||
switch(*line) {
|
||||
case '#':
|
||||
case '/':
|
||||
case '\r':
|
||||
case '\n':
|
||||
case '*':
|
||||
case '\0':
|
||||
Curl_safefree(aline);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* the option keywords starts here */
|
||||
option = line;
|
||||
|
||||
/* the option starts with a dash? */
|
||||
dashed_option = option[0]=='-'?TRUE:FALSE;
|
||||
|
||||
while(*line && !ISSPACE(*line) && !ISSEP(*line, dashed_option))
|
||||
line++;
|
||||
/* ... and has ended here */
|
||||
|
||||
if(*line)
|
||||
*line++ = '\0'; /* zero terminate, we have a local copy of the data */
|
||||
|
||||
#ifdef DEBUG_CONFIG
|
||||
fprintf(stderr, "GOT: %s\n", option);
|
||||
#endif
|
||||
|
||||
/* pass spaces and separator(s) */
|
||||
while(*line && (ISSPACE(*line) || ISSEP(*line, dashed_option)))
|
||||
line++;
|
||||
|
||||
/* the parameter starts here (unless quoted) */
|
||||
if(*line == '\"') {
|
||||
/* quoted parameter, do the quote dance */
|
||||
line++;
|
||||
param = malloc(strlen(line) + 1); /* parameter */
|
||||
if(!param) {
|
||||
/* out of memory */
|
||||
Curl_safefree(aline);
|
||||
rc = 1;
|
||||
break;
|
||||
}
|
||||
alloced_param = TRUE;
|
||||
(void)unslashquote(line, param);
|
||||
}
|
||||
else {
|
||||
param = line; /* parameter starts here */
|
||||
while(*line && !ISSPACE(*line))
|
||||
line++;
|
||||
|
||||
if(*line) {
|
||||
*line = '\0'; /* zero terminate */
|
||||
|
||||
/* to detect mistakes better, see if there's data following */
|
||||
line++;
|
||||
/* pass all spaces */
|
||||
while(*line && ISSPACE(*line))
|
||||
line++;
|
||||
|
||||
switch(*line) {
|
||||
case '\0':
|
||||
case '\r':
|
||||
case '\n':
|
||||
case '#': /* comment */
|
||||
break;
|
||||
default:
|
||||
warnf(operation->global, "%s:%d: warning: '%s' uses unquoted "
|
||||
"white space in the line that may cause side-effects!\n",
|
||||
filename, lineno, option);
|
||||
}
|
||||
}
|
||||
if(!*param)
|
||||
/* do this so getparameter can check for required parameters.
|
||||
Otherwise it always thinks there's a parameter. */
|
||||
param = NULL;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_CONFIG
|
||||
fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
|
||||
#endif
|
||||
res = getparameter(option, param, &usedarg, global, operation);
|
||||
|
||||
if(param && *param && !usedarg)
|
||||
/* we passed in a parameter that wasn't used! */
|
||||
res = PARAM_GOT_EXTRA_PARAMETER;
|
||||
|
||||
if(res == PARAM_NEXT_OPERATION) {
|
||||
if(operation->url_list && operation->url_list->url) {
|
||||
/* Allocate the next config */
|
||||
operation->next = malloc(sizeof(struct OperationConfig));
|
||||
if(operation->next) {
|
||||
/* Initialise the newly created config */
|
||||
config_init(operation->next);
|
||||
|
||||
/* Copy the easy handle */
|
||||
operation->next->easy = global->easy;
|
||||
|
||||
/* Set the global config pointer */
|
||||
operation->next->global = global;
|
||||
|
||||
/* Update the last operation pointer */
|
||||
global->last = operation->next;
|
||||
|
||||
/* Move onto the new config */
|
||||
operation->next->prev = operation;
|
||||
operation = operation->next;
|
||||
}
|
||||
else
|
||||
res = PARAM_NO_MEM;
|
||||
}
|
||||
}
|
||||
|
||||
if(res != PARAM_OK && res != PARAM_NEXT_OPERATION) {
|
||||
/* the help request isn't really an error */
|
||||
if(!strcmp(filename, "-")) {
|
||||
filename = (char *)"<stdin>";
|
||||
}
|
||||
if(res != PARAM_HELP_REQUESTED &&
|
||||
res != PARAM_MANUAL_REQUESTED &&
|
||||
res != PARAM_VERSION_INFO_REQUESTED &&
|
||||
res != PARAM_ENGINES_REQUESTED) {
|
||||
const char *reason = param2text(res);
|
||||
warnf(operation->global, "%s:%d: warning: '%s' %s\n",
|
||||
filename, lineno, option, reason);
|
||||
}
|
||||
}
|
||||
|
||||
if(alloced_param)
|
||||
Curl_safefree(param);
|
||||
|
||||
Curl_safefree(aline);
|
||||
}
|
||||
if(file != stdin)
|
||||
fclose(file);
|
||||
}
|
||||
else
|
||||
rc = 1; /* couldn't open the file */
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copies the string from line to the buffer at param, unquoting
|
||||
* backslash-quoted characters and NUL-terminating the output string.
|
||||
* Stops at the first non-backslash-quoted double quote character or the
|
||||
* end of the input string. param must be at least as long as the input
|
||||
* string. Returns the pointer after the last handled input character.
|
||||
*/
|
||||
static const char *unslashquote(const char *line, char *param)
|
||||
{
|
||||
while(*line && (*line != '\"')) {
|
||||
if(*line == '\\') {
|
||||
char out;
|
||||
line++;
|
||||
|
||||
/* default is to output the letter after the backslash */
|
||||
switch(out = *line) {
|
||||
case '\0':
|
||||
continue; /* this'll break out of the loop */
|
||||
case 't':
|
||||
out = '\t';
|
||||
break;
|
||||
case 'n':
|
||||
out = '\n';
|
||||
break;
|
||||
case 'r':
|
||||
out = '\r';
|
||||
break;
|
||||
case 'v':
|
||||
out = '\v';
|
||||
break;
|
||||
}
|
||||
*param++ = out;
|
||||
line++;
|
||||
}
|
||||
else
|
||||
*param++ = *line++;
|
||||
}
|
||||
*param = '\0'; /* always zero terminate */
|
||||
return line;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reads a line from the given file, ensuring is NUL terminated.
|
||||
* The pointer must be freed by the caller.
|
||||
* NULL is returned on an out of memory condition.
|
||||
*/
|
||||
static char *my_get_line(FILE *fp)
|
||||
{
|
||||
char buf[4096];
|
||||
char *nl = NULL;
|
||||
char *line = NULL;
|
||||
|
||||
do {
|
||||
if(NULL == fgets(buf, sizeof(buf), fp))
|
||||
break;
|
||||
if(!line) {
|
||||
line = strdup(buf);
|
||||
if(!line)
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
char *ptr;
|
||||
size_t linelen = strlen(line);
|
||||
ptr = realloc(line, linelen + strlen(buf) + 1);
|
||||
if(!ptr) {
|
||||
Curl_safefree(line);
|
||||
return NULL;
|
||||
}
|
||||
line = ptr;
|
||||
strcpy(&line[linelen], buf);
|
||||
}
|
||||
nl = strchr(line, '\n');
|
||||
} while(!nl);
|
||||
|
||||
if(nl)
|
||||
*nl = '\0';
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_PARSECFG_H
|
||||
#define HEADER_CURL_TOOL_PARSECFG_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
int parseconfig(const char *filename, struct GlobalConfig *config);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_PARSECFG_H */
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_SDECLS_H
|
||||
#define HEADER_CURL_TOOL_SDECLS_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
#ifdef USE_METALINK
|
||||
# include <metalink/metalink.h>
|
||||
#endif /* USE_METALINK */
|
||||
|
||||
/*
|
||||
* OutStruct variables keep track of information relative to curl's
|
||||
* output writing, which may take place to a standard stream or a file.
|
||||
*
|
||||
* 'filename' member is either a pointer to a file name string or NULL
|
||||
* when dealing with a standard stream.
|
||||
*
|
||||
* 'alloc_filename' member is TRUE when string pointed by 'filename' has been
|
||||
* dynamically allocated and 'belongs' to this OutStruct, otherwise FALSE.
|
||||
*
|
||||
* 'is_cd_filename' member is TRUE when string pointed by 'filename' has been
|
||||
* set using a server-specified Content-Disposition filename, otherwise FALSE.
|
||||
*
|
||||
* 's_isreg' member is TRUE when output goes to a regular file, this also
|
||||
* implies that output is 'seekable' and 'appendable' and also that member
|
||||
* 'filename' points to file name's string. For any standard stream member
|
||||
* 's_isreg' will be FALSE.
|
||||
*
|
||||
* 'fopened' member is TRUE when output goes to a regular file and it
|
||||
* has been fopen'ed, requiring it to be closed later on. In any other
|
||||
* case this is FALSE.
|
||||
*
|
||||
* 'stream' member is a pointer to a stream controlling object as returned
|
||||
* from a 'fopen' call or a standard stream.
|
||||
*
|
||||
* 'config' member is a pointer to associated 'OperationConfig' struct.
|
||||
*
|
||||
* 'bytes' member represents amount written so far.
|
||||
*
|
||||
* 'init' member holds original file size or offset at which truncation is
|
||||
* taking place. Always zero unless appending to a non-empty regular file.
|
||||
*
|
||||
* 'metalink_parser' member is a pointer to Metalink XML parser
|
||||
* context.
|
||||
*/
|
||||
|
||||
struct OutStruct {
|
||||
char *filename;
|
||||
bool alloc_filename;
|
||||
bool is_cd_filename;
|
||||
bool s_isreg;
|
||||
bool fopened;
|
||||
FILE *stream;
|
||||
struct OperationConfig *config;
|
||||
curl_off_t bytes;
|
||||
curl_off_t init;
|
||||
#ifdef USE_METALINK
|
||||
metalink_parser_context_t *metalink_parser;
|
||||
#endif /* USE_METALINK */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* InStruct variables keep track of information relative to curl's
|
||||
* input reading, which may take place from stdin or from some file.
|
||||
*
|
||||
* 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
|
||||
* or a file descriptor as returned from an 'open' call for some file.
|
||||
*
|
||||
* 'config' member is a pointer to associated 'OperationConfig' struct.
|
||||
*/
|
||||
|
||||
struct InStruct {
|
||||
int fd;
|
||||
struct OperationConfig *config;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* A linked list of these 'getout' nodes contain URL's to fetch,
|
||||
* as well as information relative to where URL contents should
|
||||
* be stored or which file should be uploaded.
|
||||
*/
|
||||
|
||||
struct getout {
|
||||
struct getout *next; /* next one */
|
||||
char *url; /* the URL we deal with */
|
||||
char *outfile; /* where to store the output */
|
||||
char *infile; /* file to upload, if GETOUT_UPLOAD is set */
|
||||
int flags; /* options - composed of GETOUT_* bits */
|
||||
};
|
||||
|
||||
#define GETOUT_OUTFILE (1<<0) /* set when outfile is deemed done */
|
||||
#define GETOUT_URL (1<<1) /* set when URL is deemed done */
|
||||
#define GETOUT_USEREMOTE (1<<2) /* use remote file name locally */
|
||||
#define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */
|
||||
#define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */
|
||||
#define GETOUT_METALINK (1<<5) /* set when Metalink download */
|
||||
|
||||
/*
|
||||
* 'trace' enumeration represents curl's output look'n feel possibilities.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
TRACE_NONE, /* no trace/verbose output at all */
|
||||
TRACE_BIN, /* tcpdump inspired look */
|
||||
TRACE_ASCII, /* like *BIN but without the hex output */
|
||||
TRACE_PLAIN /* -v/--verbose type */
|
||||
} trace;
|
||||
|
||||
|
||||
/*
|
||||
* 'HttpReq' enumeration represents HTTP request types.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
HTTPREQ_UNSPEC, /* first in list */
|
||||
HTTPREQ_GET,
|
||||
HTTPREQ_HEAD,
|
||||
HTTPREQ_FORMPOST,
|
||||
HTTPREQ_SIMPLEPOST
|
||||
} HttpReq;
|
||||
|
||||
|
||||
/*
|
||||
* Complete struct declarations which have OperationConfig struct members,
|
||||
* just in case this header is directly included in some source file.
|
||||
*/
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_SDECLS_H */
|
||||
|
||||
@@ -1,588 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifndef CURL_DISABLE_LIBCURL_OPTION
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_easysrc.h"
|
||||
#include "tool_setopt.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
/* Lookup tables for converting setopt values back to symbols */
|
||||
/* For enums, values may be in any order. */
|
||||
/* For bit masks, put combinations first, then single bits, */
|
||||
/* and finally any "NONE" value. */
|
||||
|
||||
#define NV(e) {#e, e}
|
||||
#define NV1(e, v) {#e, (v)}
|
||||
#define NVEND {NULL, 0} /* sentinel to mark end of list */
|
||||
|
||||
const NameValue setopt_nv_CURLPROXY[] = {
|
||||
NV(CURLPROXY_HTTP),
|
||||
NV(CURLPROXY_HTTP_1_0),
|
||||
NV(CURLPROXY_HTTPS),
|
||||
NV(CURLPROXY_SOCKS4),
|
||||
NV(CURLPROXY_SOCKS5),
|
||||
NV(CURLPROXY_SOCKS4A),
|
||||
NV(CURLPROXY_SOCKS5_HOSTNAME),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURL_SOCKS_PROXY[] = {
|
||||
NV(CURLPROXY_SOCKS4),
|
||||
NV(CURLPROXY_SOCKS5),
|
||||
NV(CURLPROXY_SOCKS4A),
|
||||
NV(CURLPROXY_SOCKS5_HOSTNAME),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValueUnsigned setopt_nv_CURLAUTH[] = {
|
||||
NV(CURLAUTH_ANY), /* combination */
|
||||
NV(CURLAUTH_ANYSAFE), /* combination */
|
||||
NV(CURLAUTH_BASIC),
|
||||
NV(CURLAUTH_DIGEST),
|
||||
NV(CURLAUTH_GSSNEGOTIATE),
|
||||
NV(CURLAUTH_NTLM),
|
||||
NV(CURLAUTH_DIGEST_IE),
|
||||
NV(CURLAUTH_NTLM_WB),
|
||||
NV(CURLAUTH_ONLY),
|
||||
NV(CURLAUTH_NONE),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURL_HTTP_VERSION[] = {
|
||||
NV(CURL_HTTP_VERSION_NONE),
|
||||
NV(CURL_HTTP_VERSION_1_0),
|
||||
NV(CURL_HTTP_VERSION_1_1),
|
||||
NV(CURL_HTTP_VERSION_2_0),
|
||||
NV(CURL_HTTP_VERSION_2TLS),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURL_SSLVERSION[] = {
|
||||
NV(CURL_SSLVERSION_DEFAULT),
|
||||
NV(CURL_SSLVERSION_TLSv1),
|
||||
NV(CURL_SSLVERSION_SSLv2),
|
||||
NV(CURL_SSLVERSION_SSLv3),
|
||||
NV(CURL_SSLVERSION_TLSv1_0),
|
||||
NV(CURL_SSLVERSION_TLSv1_1),
|
||||
NV(CURL_SSLVERSION_TLSv1_2),
|
||||
NV(CURL_SSLVERSION_TLSv1_3),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURL_TIMECOND[] = {
|
||||
NV(CURL_TIMECOND_IFMODSINCE),
|
||||
NV(CURL_TIMECOND_IFUNMODSINCE),
|
||||
NV(CURL_TIMECOND_LASTMOD),
|
||||
NV(CURL_TIMECOND_NONE),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURLFTPSSL_CCC[] = {
|
||||
NV(CURLFTPSSL_CCC_NONE),
|
||||
NV(CURLFTPSSL_CCC_PASSIVE),
|
||||
NV(CURLFTPSSL_CCC_ACTIVE),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURLUSESSL[] = {
|
||||
NV(CURLUSESSL_NONE),
|
||||
NV(CURLUSESSL_TRY),
|
||||
NV(CURLUSESSL_CONTROL),
|
||||
NV(CURLUSESSL_ALL),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
|
||||
NV(CURLSSLOPT_ALLOW_BEAST),
|
||||
NV(CURLSSLOPT_NO_REVOKE),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
const NameValue setopt_nv_CURL_NETRC[] = {
|
||||
NV(CURL_NETRC_IGNORED),
|
||||
NV(CURL_NETRC_OPTIONAL),
|
||||
NV(CURL_NETRC_REQUIRED),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
/* These mappings essentially triplicated - see
|
||||
* tool_libinfo.c and tool_paramhlp.c */
|
||||
const NameValue setopt_nv_CURLPROTO[] = {
|
||||
NV(CURLPROTO_ALL), /* combination */
|
||||
NV(CURLPROTO_DICT),
|
||||
NV(CURLPROTO_FILE),
|
||||
NV(CURLPROTO_FTP),
|
||||
NV(CURLPROTO_FTPS),
|
||||
NV(CURLPROTO_GOPHER),
|
||||
NV(CURLPROTO_HTTP),
|
||||
NV(CURLPROTO_HTTPS),
|
||||
NV(CURLPROTO_IMAP),
|
||||
NV(CURLPROTO_IMAPS),
|
||||
NV(CURLPROTO_LDAP),
|
||||
NV(CURLPROTO_LDAPS),
|
||||
NV(CURLPROTO_POP3),
|
||||
NV(CURLPROTO_POP3S),
|
||||
NV(CURLPROTO_RTSP),
|
||||
NV(CURLPROTO_SCP),
|
||||
NV(CURLPROTO_SFTP),
|
||||
NV(CURLPROTO_SMB),
|
||||
NV(CURLPROTO_SMBS),
|
||||
NV(CURLPROTO_SMTP),
|
||||
NV(CURLPROTO_SMTPS),
|
||||
NV(CURLPROTO_TELNET),
|
||||
NV(CURLPROTO_TFTP),
|
||||
NVEND,
|
||||
};
|
||||
|
||||
/* These options have non-zero default values. */
|
||||
static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
|
||||
NV1(CURLOPT_SSL_VERIFYPEER, 1),
|
||||
NV1(CURLOPT_SSL_VERIFYHOST, 1),
|
||||
NV1(CURLOPT_SSL_ENABLE_NPN, 1),
|
||||
NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
|
||||
NV1(CURLOPT_TCP_NODELAY, 1),
|
||||
NV1(CURLOPT_PROXY_SSL_VERIFYPEER, 1),
|
||||
NV1(CURLOPT_PROXY_SSL_VERIFYHOST, 1),
|
||||
NVEND
|
||||
};
|
||||
|
||||
/* Format and add code; jump to nomem on malloc error */
|
||||
#define ADD(args) do { \
|
||||
ret = easysrc_add args; \
|
||||
if(ret) \
|
||||
goto nomem; \
|
||||
} WHILE_FALSE
|
||||
#define ADDF(args) do { \
|
||||
ret = easysrc_addf args; \
|
||||
if(ret) \
|
||||
goto nomem; \
|
||||
} WHILE_FALSE
|
||||
|
||||
#define DECL0(s) ADD((&easysrc_decl, s))
|
||||
#define DECL1(f,a) ADDF((&easysrc_decl, f,a))
|
||||
|
||||
#define DATA0(s) ADD((&easysrc_data, s))
|
||||
#define DATA1(f,a) ADDF((&easysrc_data, f,a))
|
||||
#define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b))
|
||||
#define DATA3(f,a,b,c) ADDF((&easysrc_data, f,a,b,c))
|
||||
|
||||
#define CODE0(s) ADD((&easysrc_code, s))
|
||||
#define CODE1(f,a) ADDF((&easysrc_code, f,a))
|
||||
#define CODE2(f,a,b) ADDF((&easysrc_code, f,a,b))
|
||||
#define CODE3(f,a,b,c) ADDF((&easysrc_code, f,a,b,c))
|
||||
|
||||
#define CLEAN0(s) ADD((&easysrc_clean, s))
|
||||
#define CLEAN1(f,a) ADDF((&easysrc_clean, f,a))
|
||||
|
||||
#define REM0(s) ADD((&easysrc_toohard, s))
|
||||
#define REM1(f,a) ADDF((&easysrc_toohard, f,a))
|
||||
#define REM2(f,a,b) ADDF((&easysrc_toohard, f,a,b))
|
||||
|
||||
/* Escape string to C string syntax. Return NULL if out of memory.
|
||||
* Is this correct for those wacky EBCDIC guys? */
|
||||
static char *c_escape(const char *str)
|
||||
{
|
||||
size_t len = 0;
|
||||
const char *s;
|
||||
unsigned char c;
|
||||
char *escaped, *e;
|
||||
/* Allocate space based on worst-case */
|
||||
len = strlen(str);
|
||||
escaped = malloc(4 * len + 1);
|
||||
if(!escaped)
|
||||
return NULL;
|
||||
|
||||
e = escaped;
|
||||
for(s=str; (c=*s) != '\0'; s++) {
|
||||
if(c=='\n') {
|
||||
strcpy(e, "\\n");
|
||||
e += 2;
|
||||
}
|
||||
else if(c=='\r') {
|
||||
strcpy(e, "\\r");
|
||||
e += 2;
|
||||
}
|
||||
else if(c=='\t') {
|
||||
strcpy(e, "\\t");
|
||||
e += 2;
|
||||
}
|
||||
else if(c=='\\') {
|
||||
strcpy(e, "\\\\");
|
||||
e += 2;
|
||||
}
|
||||
else if(c=='"') {
|
||||
strcpy(e, "\\\"");
|
||||
e += 2;
|
||||
}
|
||||
else if(! isprint(c)) {
|
||||
snprintf(e, 5, "\\%03o", (unsigned)c);
|
||||
e += 4;
|
||||
}
|
||||
else
|
||||
*e++ = c;
|
||||
}
|
||||
*e = '\0';
|
||||
return escaped;
|
||||
}
|
||||
|
||||
/* setopt wrapper for enum types */
|
||||
CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValue *nvlist, long lval)
|
||||
{
|
||||
CURLcode ret = CURLE_OK;
|
||||
bool skip = FALSE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, lval);
|
||||
if(!lval)
|
||||
skip = TRUE;
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
/* we only use this for real if --libcurl was used */
|
||||
const NameValue *nv = NULL;
|
||||
for(nv=nvlist; nv->name; nv++) {
|
||||
if(nv->value == lval) break; /* found it */
|
||||
}
|
||||
if(! nv->name) {
|
||||
/* If no definition was found, output an explicit value.
|
||||
* This could happen if new values are defined and used
|
||||
* but the NameValue list is not updated. */
|
||||
CODE2("curl_easy_setopt(hnd, %s, %ldL);", name, lval);
|
||||
}
|
||||
else {
|
||||
CODE2("curl_easy_setopt(hnd, %s, (long)%s);", name, nv->name);
|
||||
}
|
||||
}
|
||||
|
||||
nomem:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* setopt wrapper for flags */
|
||||
CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValue *nvlist, long lval)
|
||||
{
|
||||
CURLcode ret = CURLE_OK;
|
||||
bool skip = FALSE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, lval);
|
||||
if(!lval)
|
||||
skip = TRUE;
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
/* we only use this for real if --libcurl was used */
|
||||
char preamble[80]; /* should accommodate any symbol name */
|
||||
long rest = lval; /* bits not handled yet */
|
||||
const NameValue *nv = NULL;
|
||||
snprintf(preamble, sizeof(preamble),
|
||||
"curl_easy_setopt(hnd, %s, ", name);
|
||||
for(nv=nvlist; nv->name; nv++) {
|
||||
if((nv->value & ~ rest) == 0) {
|
||||
/* all value flags contained in rest */
|
||||
rest &= ~ nv->value; /* remove bits handled here */
|
||||
CODE3("%s(long)%s%s",
|
||||
preamble, nv->name, rest ? " |" : ");");
|
||||
if(!rest)
|
||||
break; /* handled them all */
|
||||
/* replace with all spaces for continuation line */
|
||||
snprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
|
||||
}
|
||||
}
|
||||
/* If any bits have no definition, output an explicit value.
|
||||
* This could happen if new bits are defined and used
|
||||
* but the NameValue list is not updated. */
|
||||
if(rest)
|
||||
CODE2("%s%ldL);", preamble, rest);
|
||||
}
|
||||
|
||||
nomem:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* setopt wrapper for bitmasks */
|
||||
CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValueUnsigned *nvlist,
|
||||
long lval)
|
||||
{
|
||||
CURLcode ret = CURLE_OK;
|
||||
bool skip = FALSE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, lval);
|
||||
if(!lval)
|
||||
skip = TRUE;
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
/* we only use this for real if --libcurl was used */
|
||||
char preamble[80];
|
||||
unsigned long rest = (unsigned long)lval;
|
||||
const NameValueUnsigned *nv = NULL;
|
||||
snprintf(preamble, sizeof(preamble),
|
||||
"curl_easy_setopt(hnd, %s, ", name);
|
||||
for(nv=nvlist; nv->name; nv++) {
|
||||
if((nv->value & ~ rest) == 0) {
|
||||
/* all value flags contained in rest */
|
||||
rest &= ~ nv->value; /* remove bits handled here */
|
||||
CODE3("%s(long)%s%s",
|
||||
preamble, nv->name, rest ? " |" : ");");
|
||||
if(!rest)
|
||||
break; /* handled them all */
|
||||
/* replace with all spaces for continuation line */
|
||||
snprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
|
||||
}
|
||||
}
|
||||
/* If any bits have no definition, output an explicit value.
|
||||
* This could happen if new bits are defined and used
|
||||
* but the NameValue list is not updated. */
|
||||
if(rest)
|
||||
CODE2("%s%luUL);", preamble, rest);
|
||||
}
|
||||
|
||||
nomem:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* setopt wrapper for CURLOPT_HTTPPOST */
|
||||
CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
struct curl_httppost *post)
|
||||
{
|
||||
CURLcode ret = CURLE_OK;
|
||||
char *escaped = NULL;
|
||||
bool skip = FALSE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, post);
|
||||
if(!post)
|
||||
skip = TRUE;
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
struct curl_httppost *pp, *p;
|
||||
int i;
|
||||
/* May use several httppost lists, if multiple POST actions */
|
||||
i = ++ easysrc_form_count;
|
||||
DECL1("struct curl_httppost *post%d;", i);
|
||||
DATA1("post%d = NULL;", i);
|
||||
CLEAN1("curl_formfree(post%d);", i);
|
||||
CLEAN1("post%d = NULL;", i);
|
||||
if(i == 1)
|
||||
DECL0("struct curl_httppost *postend;");
|
||||
DATA0("postend = NULL;");
|
||||
for(p=post; p; p=p->next) {
|
||||
DATA1("curl_formadd(&post%d, &postend,", i);
|
||||
DATA1(" CURLFORM_COPYNAME, \"%s\",", p->name);
|
||||
for(pp=p; pp; pp=pp->more) {
|
||||
/* May be several files uploaded for one name;
|
||||
* these are linked through the 'more' pointer */
|
||||
Curl_safefree(escaped);
|
||||
escaped = c_escape(pp->contents);
|
||||
if(!escaped) {
|
||||
ret = CURLE_OUT_OF_MEMORY;
|
||||
goto nomem;
|
||||
}
|
||||
if(pp->flags & CURL_HTTPPOST_FILENAME) {
|
||||
/* file upload as for -F @filename */
|
||||
DATA1(" CURLFORM_FILE, \"%s\",", escaped);
|
||||
}
|
||||
else if(pp->flags & CURL_HTTPPOST_READFILE) {
|
||||
/* content from file as for -F <filename */
|
||||
DATA1(" CURLFORM_FILECONTENT, \"%s\",", escaped);
|
||||
}
|
||||
else
|
||||
DATA1(" CURLFORM_COPYCONTENTS, \"%s\",", escaped);
|
||||
if(pp->showfilename) {
|
||||
Curl_safefree(escaped);
|
||||
escaped = c_escape(pp->showfilename);
|
||||
if(!escaped) {
|
||||
ret = CURLE_OUT_OF_MEMORY;
|
||||
goto nomem;
|
||||
}
|
||||
DATA1(" CURLFORM_FILENAME, \"%s\",", escaped);
|
||||
}
|
||||
if(pp->contenttype) {
|
||||
Curl_safefree(escaped);
|
||||
escaped = c_escape(pp->contenttype);
|
||||
if(!escaped) {
|
||||
ret = CURLE_OUT_OF_MEMORY;
|
||||
goto nomem;
|
||||
}
|
||||
DATA1(" CURLFORM_CONTENTTYPE, \"%s\",", escaped);
|
||||
}
|
||||
}
|
||||
DATA0(" CURLFORM_END);");
|
||||
}
|
||||
CODE2("curl_easy_setopt(hnd, %s, post%d);", name, i);
|
||||
}
|
||||
|
||||
nomem:
|
||||
Curl_safefree(escaped);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* setopt wrapper for curl_slist options */
|
||||
CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
struct curl_slist *list)
|
||||
{
|
||||
CURLcode ret = CURLE_OK;
|
||||
char *escaped = NULL;
|
||||
bool skip = FALSE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, list);
|
||||
if(!list)
|
||||
skip = TRUE;
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
struct curl_slist *s;
|
||||
int i;
|
||||
/* May need several slist variables, so invent name */
|
||||
i = ++ easysrc_slist_count;
|
||||
DECL1("struct curl_slist *slist%d;", i);
|
||||
DATA1("slist%d = NULL;", i);
|
||||
CLEAN1("curl_slist_free_all(slist%d);", i);
|
||||
CLEAN1("slist%d = NULL;", i);
|
||||
for(s=list; s; s=s->next) {
|
||||
Curl_safefree(escaped);
|
||||
escaped = c_escape(s->data);
|
||||
if(!escaped) {
|
||||
ret = CURLE_OUT_OF_MEMORY;
|
||||
goto nomem;
|
||||
}
|
||||
DATA3("slist%d = curl_slist_append(slist%d, \"%s\");", i, i, escaped);
|
||||
}
|
||||
CODE2("curl_easy_setopt(hnd, %s, slist%d);", name, i);
|
||||
}
|
||||
|
||||
nomem:
|
||||
Curl_safefree(escaped);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* generic setopt wrapper for all other options.
|
||||
* Some type information is encoded in the tag value. */
|
||||
CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag, ...)
|
||||
{
|
||||
va_list arg;
|
||||
char buf[256];
|
||||
const char *value = NULL;
|
||||
bool remark = FALSE;
|
||||
bool skip = FALSE;
|
||||
bool escape = FALSE;
|
||||
char *escaped = NULL;
|
||||
CURLcode ret = CURLE_OK;
|
||||
|
||||
va_start(arg, tag);
|
||||
|
||||
if(tag < CURLOPTTYPE_OBJECTPOINT) {
|
||||
/* Value is expected to be a long */
|
||||
long lval = va_arg(arg, long);
|
||||
long defval = 0L;
|
||||
const NameValue *nv = NULL;
|
||||
for(nv=setopt_nv_CURLNONZERODEFAULTS; nv->name; nv++) {
|
||||
if(!strcmp(name, nv->name)) {
|
||||
defval = nv->value;
|
||||
break; /* found it */
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "%ldL", lval);
|
||||
value = buf;
|
||||
ret = curl_easy_setopt(curl, tag, lval);
|
||||
if(lval == defval)
|
||||
skip = TRUE;
|
||||
}
|
||||
else if(tag < CURLOPTTYPE_OFF_T) {
|
||||
/* Value is some sort of object pointer */
|
||||
void *pval = va_arg(arg, void *);
|
||||
|
||||
/* function pointers are never printable */
|
||||
if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
|
||||
if(pval) {
|
||||
value = "functionpointer";
|
||||
remark = TRUE;
|
||||
}
|
||||
else
|
||||
skip = TRUE;
|
||||
}
|
||||
|
||||
else if(pval && str) {
|
||||
value = (char *)pval;
|
||||
escape = TRUE;
|
||||
}
|
||||
else if(pval) {
|
||||
value = "objectpointer";
|
||||
remark = TRUE;
|
||||
}
|
||||
else
|
||||
skip = TRUE;
|
||||
|
||||
ret = curl_easy_setopt(curl, tag, pval);
|
||||
|
||||
}
|
||||
else {
|
||||
/* Value is expected to be curl_off_t */
|
||||
curl_off_t oval = va_arg(arg, curl_off_t);
|
||||
snprintf(buf, sizeof(buf),
|
||||
"(curl_off_t)%" CURL_FORMAT_CURL_OFF_T, oval);
|
||||
value = buf;
|
||||
ret = curl_easy_setopt(curl, tag, oval);
|
||||
|
||||
if(!oval)
|
||||
skip = TRUE;
|
||||
}
|
||||
|
||||
va_end(arg);
|
||||
|
||||
if(config->libcurl && !skip && !ret) {
|
||||
/* we only use this for real if --libcurl was used */
|
||||
|
||||
if(remark)
|
||||
REM2("%s set to a %s", name, value);
|
||||
else {
|
||||
if(escape) {
|
||||
escaped = c_escape(value);
|
||||
if(!escaped) {
|
||||
ret = CURLE_OUT_OF_MEMORY;
|
||||
goto nomem;
|
||||
}
|
||||
CODE2("curl_easy_setopt(hnd, %s, \"%s\");", name, escaped);
|
||||
}
|
||||
else
|
||||
CODE2("curl_easy_setopt(hnd, %s, %s);", name, value);
|
||||
}
|
||||
}
|
||||
|
||||
nomem:
|
||||
Curl_safefree(escaped);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* CURL_DISABLE_LIBCURL_OPTION */
|
||||
@@ -1,153 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_SETOPT_H
|
||||
#define HEADER_CURL_TOOL_SETOPT_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
/*
|
||||
* Macros used in operate()
|
||||
*/
|
||||
|
||||
#define SETOPT_CHECK(v) do { \
|
||||
result = (v); \
|
||||
if(result) \
|
||||
goto show_error; \
|
||||
} WHILE_FALSE
|
||||
|
||||
#ifndef CURL_DISABLE_LIBCURL_OPTION
|
||||
|
||||
/* Associate symbolic names with option values */
|
||||
typedef struct {
|
||||
const char *name;
|
||||
long value;
|
||||
} NameValue;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
unsigned long value;
|
||||
} NameValueUnsigned;
|
||||
|
||||
extern const NameValue setopt_nv_CURLPROXY[];
|
||||
extern const NameValue setopt_nv_CURL_SOCKS_PROXY[];
|
||||
extern const NameValue setopt_nv_CURL_HTTP_VERSION[];
|
||||
extern const NameValue setopt_nv_CURL_SSLVERSION[];
|
||||
extern const NameValue setopt_nv_CURL_TIMECOND[];
|
||||
extern const NameValue setopt_nv_CURLFTPSSL_CCC[];
|
||||
extern const NameValue setopt_nv_CURLUSESSL[];
|
||||
extern const NameValueUnsigned setopt_nv_CURLSSLOPT[];
|
||||
extern const NameValue setopt_nv_CURL_NETRC[];
|
||||
extern const NameValue setopt_nv_CURLPROTO[];
|
||||
extern const NameValueUnsigned setopt_nv_CURLAUTH[];
|
||||
|
||||
/* Map options to NameValue sets */
|
||||
#define setopt_nv_CURLOPT_HTTP_VERSION setopt_nv_CURL_HTTP_VERSION
|
||||
#define setopt_nv_CURLOPT_HTTPAUTH setopt_nv_CURLAUTH
|
||||
#define setopt_nv_CURLOPT_SSLVERSION setopt_nv_CURL_SSLVERSION
|
||||
#define setopt_nv_CURLOPT_PROXY_SSLVERSION setopt_nv_CURL_SSLVERSION
|
||||
#define setopt_nv_CURLOPT_TIMECONDITION setopt_nv_CURL_TIMECOND
|
||||
#define setopt_nv_CURLOPT_FTP_SSL_CCC setopt_nv_CURLFTPSSL_CCC
|
||||
#define setopt_nv_CURLOPT_USE_SSL setopt_nv_CURLUSESSL
|
||||
#define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT
|
||||
#define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC
|
||||
#define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
|
||||
#define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
|
||||
#define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY
|
||||
#define setopt_nv_CURLOPT_SOCKS_PROXYTYPE setopt_nv_CURL_SOCKS_PROXY
|
||||
#define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH
|
||||
|
||||
/* Intercept setopt calls for --libcurl */
|
||||
|
||||
CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValue *nv, long lval);
|
||||
CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValue *nv, long lval);
|
||||
CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
const NameValueUnsigned *nv, long lval);
|
||||
CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
struct curl_httppost *httppost);
|
||||
CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag,
|
||||
struct curl_slist *list);
|
||||
CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
|
||||
const char *name, CURLoption tag, ...);
|
||||
|
||||
#define my_setopt(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt(x, FALSE, global, #y, y, z))
|
||||
|
||||
#define my_setopt_str(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt(x, TRUE, global, #y, y, z))
|
||||
|
||||
#define my_setopt_enum(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt_enum(x, global, #y, y, setopt_nv_ ## y, z))
|
||||
|
||||
#define my_setopt_flags(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt_flags(x, global, #y, y, setopt_nv_ ## y, z))
|
||||
|
||||
#define my_setopt_bitmask(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt_bitmask(x, global, #y, y, setopt_nv_ ## y, z))
|
||||
|
||||
#define my_setopt_httppost(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt_httppost(x, global, #y, y, z))
|
||||
|
||||
#define my_setopt_slist(x,y,z) \
|
||||
SETOPT_CHECK(tool_setopt_slist(x, global, #y, y, z))
|
||||
|
||||
#define res_setopt(x,y,z) tool_setopt(x, FALSE, global, #y, y, z)
|
||||
|
||||
#define res_setopt_str(x,y,z) tool_setopt(x, TRUE, global, #y, y, z)
|
||||
|
||||
#else /* CURL_DISABLE_LIBCURL_OPTION */
|
||||
|
||||
/* No --libcurl, so pass options directly to library */
|
||||
|
||||
#define my_setopt(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_str(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_enum(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_flags(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_bitmask(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_httppost(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define my_setopt_slist(x,y,z) \
|
||||
SETOPT_CHECK(curl_easy_setopt(x, y, z))
|
||||
|
||||
#define res_setopt(x,y,z) curl_easy_setopt(x,y,z)
|
||||
|
||||
#define res_setopt_str(x,y,z) curl_easy_setopt(x,y,z)
|
||||
|
||||
#endif /* CURL_DISABLE_LIBCURL_OPTION */
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_SETOPT_H */
|
||||
@@ -1,74 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_SETUP_H
|
||||
#define HEADER_CURL_TOOL_SETUP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
#define CURL_NO_OLDIES
|
||||
|
||||
/*
|
||||
* curl_setup.h may define preprocessor macros such as _FILE_OFFSET_BITS and
|
||||
* _LARGE_FILES in order to support files larger than 2 GB. On platforms
|
||||
* where this happens it is mandatory that these macros are defined before
|
||||
* any system header file is included, otherwise file handling function
|
||||
* prototypes will be misdeclared and curl tool may not build properly;
|
||||
* therefore we must include curl_setup.h before curl.h when building curl.
|
||||
*/
|
||||
|
||||
#include "curl_setup.h" /* from the lib directory */
|
||||
|
||||
/*
|
||||
* curl tool certainly uses libcurl's external interface.
|
||||
*/
|
||||
|
||||
#include <curl/curl.h> /* external interface */
|
||||
|
||||
/*
|
||||
* Platform specific stuff.
|
||||
*/
|
||||
|
||||
#if defined(macintosh) && defined(__MRC__)
|
||||
# define main(x,y) curl_main(x,y)
|
||||
#endif
|
||||
|
||||
#ifdef TPF
|
||||
# undef select
|
||||
/* change which select is used for the curl command line tool */
|
||||
# define select(a,b,c,d,e) tpf_select_bsd(a,b,c,d,e)
|
||||
/* and turn off the progress meter */
|
||||
# define CONF_DEFAULT (0|CONF_NOPROGRESS)
|
||||
#endif
|
||||
|
||||
#ifndef OS
|
||||
# define OS "unknown"
|
||||
#endif
|
||||
|
||||
#ifndef UNPRINTABLE_CHAR
|
||||
/* define what to use for unprintable characters */
|
||||
# define UNPRINTABLE_CHAR '.'
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
# include "tool_strdup.h"
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_SETUP_H */
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
# include <sys/poll.h>
|
||||
#elif defined(HAVE_POLL_H)
|
||||
# include <poll.h>
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
# include <dos.h>
|
||||
#endif
|
||||
|
||||
#include "tool_sleep.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
void tool_go_sleep(long ms)
|
||||
{
|
||||
#if defined(MSDOS)
|
||||
delay(ms);
|
||||
#elif defined(WIN32)
|
||||
Sleep(ms);
|
||||
#elif defined(HAVE_POLL_FINE)
|
||||
(void)poll((void *)0, 0, (int)ms);
|
||||
#else
|
||||
struct timeval timeout;
|
||||
timeout.tv_sec = ms / 1000L;
|
||||
ms = ms % 1000L;
|
||||
timeout.tv_usec = ms * 1000L;
|
||||
select(0, NULL, NULL, NULL, &timeout);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_SLEEP_H
|
||||
#define HEADER_CURL_TOOL_SLEEP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
void tool_go_sleep(long ms);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_SLEEP_H */
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_strdup.h"
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
char *strdup(const char *str)
|
||||
{
|
||||
size_t len;
|
||||
char *newstr;
|
||||
|
||||
if(!str)
|
||||
return (char *)NULL;
|
||||
|
||||
len = strlen(str);
|
||||
|
||||
if(len >= ((size_t)-1) / sizeof(char))
|
||||
return (char *)NULL;
|
||||
|
||||
newstr = malloc((len+1)*sizeof(char));
|
||||
if(!newstr)
|
||||
return (char *)NULL;
|
||||
|
||||
memcpy(newstr, str, (len+1)*sizeof(char));
|
||||
|
||||
return newstr;
|
||||
|
||||
}
|
||||
#endif
|
||||
@@ -1,30 +0,0 @@
|
||||
#ifndef HEADER_TOOL_STRDUP_H
|
||||
#define HEADER_TOOL_STRDUP_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
extern char *strdup(const char *str);
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_TOOL_STRDUP_H */
|
||||
@@ -1,705 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_doswin.h"
|
||||
#include "tool_urlglob.h"
|
||||
#include "tool_vms.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#define GLOBERROR(string, column, code) \
|
||||
glob->error = string, glob->pos = column, code
|
||||
|
||||
void glob_cleanup(URLGlob* glob);
|
||||
|
||||
static CURLcode glob_fixed(URLGlob *glob, char *fixed, size_t len)
|
||||
{
|
||||
URLPattern *pat = &glob->pattern[glob->size];
|
||||
pat->type = UPTSet;
|
||||
pat->content.Set.size = 1;
|
||||
pat->content.Set.ptr_s = 0;
|
||||
pat->globindex = -1;
|
||||
|
||||
pat->content.Set.elements = malloc(sizeof(char *));
|
||||
|
||||
if(!pat->content.Set.elements)
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
pat->content.Set.elements[0] = malloc(len+1);
|
||||
if(!pat->content.Set.elements[0])
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
memcpy(pat->content.Set.elements[0], fixed, len);
|
||||
pat->content.Set.elements[0][len] = 0;
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
/* multiply
|
||||
*
|
||||
* Multiplies and checks for overflow.
|
||||
*/
|
||||
static int multiply(unsigned long *amount, long with)
|
||||
{
|
||||
unsigned long sum = *amount * with;
|
||||
if(sum/with != *amount)
|
||||
return 1; /* didn't fit, bail out */
|
||||
*amount = sum;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static CURLcode glob_set(URLGlob *glob, char **patternp,
|
||||
size_t *posp, unsigned long *amount,
|
||||
int globindex)
|
||||
{
|
||||
/* processes a set expression with the point behind the opening '{'
|
||||
','-separated elements are collected until the next closing '}'
|
||||
*/
|
||||
URLPattern *pat;
|
||||
bool done = FALSE;
|
||||
char *buf = glob->glob_buffer;
|
||||
char *pattern = *patternp;
|
||||
char *opattern = pattern;
|
||||
size_t opos = *posp-1;
|
||||
|
||||
pat = &glob->pattern[glob->size];
|
||||
/* patterns 0,1,2,... correspond to size=1,3,5,... */
|
||||
pat->type = UPTSet;
|
||||
pat->content.Set.size = 0;
|
||||
pat->content.Set.ptr_s = 0;
|
||||
pat->content.Set.elements = NULL;
|
||||
pat->globindex = globindex;
|
||||
|
||||
while(!done) {
|
||||
switch (*pattern) {
|
||||
case '\0': /* URL ended while set was still open */
|
||||
return GLOBERROR("unmatched brace", opos, CURLE_URL_MALFORMAT);
|
||||
|
||||
case '{':
|
||||
case '[': /* no nested expressions at this time */
|
||||
return GLOBERROR("nested brace", *posp, CURLE_URL_MALFORMAT);
|
||||
|
||||
case '}': /* set element completed */
|
||||
if(opattern == pattern)
|
||||
return GLOBERROR("empty string within braces", *posp,
|
||||
CURLE_URL_MALFORMAT);
|
||||
|
||||
/* add 1 to size since it'll be incremented below */
|
||||
if(multiply(amount, pat->content.Set.size+1))
|
||||
return GLOBERROR("range overflow", 0, CURLE_URL_MALFORMAT);
|
||||
|
||||
/* fall-through */
|
||||
case ',':
|
||||
|
||||
*buf = '\0';
|
||||
if(pat->content.Set.elements) {
|
||||
char **new_arr = realloc(pat->content.Set.elements,
|
||||
(pat->content.Set.size + 1) * sizeof(char *));
|
||||
if(!new_arr)
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
pat->content.Set.elements = new_arr;
|
||||
}
|
||||
else
|
||||
pat->content.Set.elements = malloc(sizeof(char *));
|
||||
|
||||
if(!pat->content.Set.elements)
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
pat->content.Set.elements[pat->content.Set.size] =
|
||||
strdup(glob->glob_buffer);
|
||||
if(!pat->content.Set.elements[pat->content.Set.size])
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
++pat->content.Set.size;
|
||||
|
||||
if(*pattern == '}') {
|
||||
pattern++; /* pass the closing brace */
|
||||
done = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
buf = glob->glob_buffer;
|
||||
++pattern;
|
||||
++(*posp);
|
||||
break;
|
||||
|
||||
case ']': /* illegal closing bracket */
|
||||
return GLOBERROR("unexpected close bracket", *posp, CURLE_URL_MALFORMAT);
|
||||
|
||||
case '\\': /* escaped character, skip '\' */
|
||||
if(pattern[1]) {
|
||||
++pattern;
|
||||
++(*posp);
|
||||
}
|
||||
/* intentional fallthrough */
|
||||
default:
|
||||
*buf++ = *pattern++; /* copy character to set element */
|
||||
++(*posp);
|
||||
}
|
||||
}
|
||||
|
||||
*patternp = pattern; /* return with the new position */
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
static CURLcode glob_range(URLGlob *glob, char **patternp,
|
||||
size_t *posp, unsigned long *amount,
|
||||
int globindex)
|
||||
{
|
||||
/* processes a range expression with the point behind the opening '['
|
||||
- char range: e.g. "a-z]", "B-Q]"
|
||||
- num range: e.g. "0-9]", "17-2000]"
|
||||
- num range with leading zeros: e.g. "001-999]"
|
||||
expression is checked for well-formedness and collected until the next ']'
|
||||
*/
|
||||
URLPattern *pat;
|
||||
int rc;
|
||||
char *pattern = *patternp;
|
||||
char *c;
|
||||
|
||||
pat = &glob->pattern[glob->size];
|
||||
pat->globindex = globindex;
|
||||
|
||||
if(ISALPHA(*pattern)) {
|
||||
/* character range detected */
|
||||
char min_c;
|
||||
char max_c;
|
||||
char end_c;
|
||||
int step=1;
|
||||
|
||||
pat->type = UPTCharRange;
|
||||
|
||||
rc = sscanf(pattern, "%c-%c%c", &min_c, &max_c, &end_c);
|
||||
|
||||
if(rc == 3) {
|
||||
if(end_c == ':') {
|
||||
char *endp;
|
||||
unsigned long lstep;
|
||||
errno = 0;
|
||||
lstep = strtoul(&pattern[4], &endp, 10);
|
||||
if(errno || &pattern[4] == endp || *endp != ']')
|
||||
step = -1;
|
||||
else {
|
||||
pattern = endp+1;
|
||||
step = (int)lstep;
|
||||
if(step > (max_c - min_c))
|
||||
step = -1;
|
||||
}
|
||||
}
|
||||
else if(end_c != ']')
|
||||
/* then this is wrong */
|
||||
rc = 0;
|
||||
else
|
||||
/* end_c == ']' */
|
||||
pattern += 4;
|
||||
}
|
||||
|
||||
*posp += (pattern - *patternp);
|
||||
|
||||
if((rc != 3) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a')) ||
|
||||
(step <= 0) )
|
||||
/* the pattern is not well-formed */
|
||||
return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
|
||||
|
||||
/* if there was a ":[num]" thing, use that as step or else use 1 */
|
||||
pat->content.CharRange.step = step;
|
||||
pat->content.CharRange.ptr_c = pat->content.CharRange.min_c = min_c;
|
||||
pat->content.CharRange.max_c = max_c;
|
||||
|
||||
if(multiply(amount, (pat->content.CharRange.max_c -
|
||||
pat->content.CharRange.min_c) /
|
||||
pat->content.CharRange.step + 1) )
|
||||
return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
|
||||
}
|
||||
else if(ISDIGIT(*pattern)) {
|
||||
/* numeric range detected */
|
||||
unsigned long min_n;
|
||||
unsigned long max_n = 0;
|
||||
unsigned long step_n = 0;
|
||||
char *endp;
|
||||
|
||||
pat->type = UPTNumRange;
|
||||
pat->content.NumRange.padlength = 0;
|
||||
|
||||
if(*pattern == '0') {
|
||||
/* leading zero specified, count them! */
|
||||
c = pattern;
|
||||
while(ISDIGIT(*c)) {
|
||||
c++;
|
||||
++pat->content.NumRange.padlength; /* padding length is set for all
|
||||
instances of this pattern */
|
||||
}
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
min_n = strtoul(pattern, &endp, 10);
|
||||
if(errno || (endp == pattern))
|
||||
endp=NULL;
|
||||
else {
|
||||
if(*endp != '-')
|
||||
endp = NULL;
|
||||
else {
|
||||
pattern = endp+1;
|
||||
while(*pattern && ISBLANK(*pattern))
|
||||
pattern++;
|
||||
if(!ISDIGIT(*pattern)) {
|
||||
endp = NULL;
|
||||
goto fail;
|
||||
}
|
||||
errno = 0;
|
||||
max_n = strtoul(pattern, &endp, 10);
|
||||
if(errno || (*endp == ':')) {
|
||||
pattern = endp+1;
|
||||
errno = 0;
|
||||
step_n = strtoul(pattern, &endp, 10);
|
||||
if(errno)
|
||||
/* over/underflow situation */
|
||||
endp = NULL;
|
||||
}
|
||||
else
|
||||
step_n = 1;
|
||||
if(endp && (*endp == ']')) {
|
||||
pattern= endp+1;
|
||||
}
|
||||
else
|
||||
endp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
fail:
|
||||
*posp += (pattern - *patternp);
|
||||
|
||||
if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)) || !step_n)
|
||||
/* the pattern is not well-formed */
|
||||
return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
|
||||
|
||||
/* typecasting to ints are fine here since we make sure above that we
|
||||
are within 31 bits */
|
||||
pat->content.NumRange.ptr_n = pat->content.NumRange.min_n = min_n;
|
||||
pat->content.NumRange.max_n = max_n;
|
||||
pat->content.NumRange.step = step_n;
|
||||
|
||||
if(multiply(amount, (pat->content.NumRange.max_n -
|
||||
pat->content.NumRange.min_n) /
|
||||
pat->content.NumRange.step + 1) )
|
||||
return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
|
||||
}
|
||||
else
|
||||
return GLOBERROR("bad range specification", *posp, CURLE_URL_MALFORMAT);
|
||||
|
||||
*patternp = pattern;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
static bool peek_ipv6(const char *str, size_t *skip)
|
||||
{
|
||||
/*
|
||||
* Scan for a potential IPv6 literal.
|
||||
* - Valid globs contain a hyphen and <= 1 colon.
|
||||
* - IPv6 literals contain no hyphens and >= 2 colons.
|
||||
*/
|
||||
size_t i = 0;
|
||||
size_t colons = 0;
|
||||
if(str[i++] != '[') {
|
||||
return FALSE;
|
||||
}
|
||||
for(;;) {
|
||||
const char c = str[i++];
|
||||
if(ISALNUM(c) || c == '.' || c == '%') {
|
||||
/* ok */
|
||||
}
|
||||
else if(c == ':') {
|
||||
colons++;
|
||||
}
|
||||
else if(c == ']') {
|
||||
*skip = i;
|
||||
return colons >= 2 ? TRUE : FALSE;
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static CURLcode glob_parse(URLGlob *glob, char *pattern,
|
||||
size_t pos, unsigned long *amount)
|
||||
{
|
||||
/* processes a literal string component of a URL
|
||||
special characters '{' and '[' branch to set/range processing functions
|
||||
*/
|
||||
CURLcode res = CURLE_OK;
|
||||
int globindex = 0; /* count "actual" globs */
|
||||
|
||||
*amount = 1;
|
||||
|
||||
while(*pattern && !res) {
|
||||
char *buf = glob->glob_buffer;
|
||||
size_t sublen = 0;
|
||||
while(*pattern && *pattern != '{') {
|
||||
if(*pattern == '[') {
|
||||
/* Skip over potential IPv6 literals. */
|
||||
size_t skip;
|
||||
if(peek_ipv6(pattern, &skip)) {
|
||||
memcpy(buf, pattern, skip);
|
||||
buf += skip;
|
||||
pattern += skip;
|
||||
sublen += skip;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(*pattern == '}' || *pattern == ']')
|
||||
return GLOBERROR("unmatched close brace/bracket", pos,
|
||||
CURLE_URL_MALFORMAT);
|
||||
|
||||
/* only allow \ to escape known "special letters" */
|
||||
if(*pattern == '\\' &&
|
||||
(*(pattern+1) == '{' || *(pattern+1) == '[' ||
|
||||
*(pattern+1) == '}' || *(pattern+1) == ']') ) {
|
||||
|
||||
/* escape character, skip '\' */
|
||||
++pattern;
|
||||
++pos;
|
||||
}
|
||||
*buf++ = *pattern++; /* copy character to literal */
|
||||
++pos;
|
||||
sublen++;
|
||||
}
|
||||
if(sublen) {
|
||||
/* we got a literal string, add it as a single-item list */
|
||||
*buf = '\0';
|
||||
res = glob_fixed(glob, glob->glob_buffer, sublen);
|
||||
}
|
||||
else {
|
||||
switch (*pattern) {
|
||||
case '\0': /* done */
|
||||
break;
|
||||
|
||||
case '{':
|
||||
/* process set pattern */
|
||||
pattern++;
|
||||
pos++;
|
||||
res = glob_set(glob, &pattern, &pos, amount, globindex++);
|
||||
break;
|
||||
|
||||
case '[':
|
||||
/* process range pattern */
|
||||
pattern++;
|
||||
pos++;
|
||||
res = glob_range(glob, &pattern, &pos, amount, globindex++);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(++glob->size >= GLOB_PATTERN_NUM)
|
||||
return GLOBERROR("too many globs", pos, CURLE_URL_MALFORMAT);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
CURLcode glob_url(URLGlob **glob, char *url, unsigned long *urlnum,
|
||||
FILE *error)
|
||||
{
|
||||
/*
|
||||
* We can deal with any-size, just make a buffer with the same length
|
||||
* as the specified URL!
|
||||
*/
|
||||
URLGlob *glob_expand;
|
||||
unsigned long amount = 0;
|
||||
char *glob_buffer;
|
||||
CURLcode res;
|
||||
|
||||
*glob = NULL;
|
||||
|
||||
glob_buffer = malloc(strlen(url) + 1);
|
||||
if(!glob_buffer)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
glob_buffer[0]=0;
|
||||
|
||||
glob_expand = calloc(1, sizeof(URLGlob));
|
||||
if(!glob_expand) {
|
||||
Curl_safefree(glob_buffer);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
glob_expand->urllen = strlen(url);
|
||||
glob_expand->glob_buffer = glob_buffer;
|
||||
|
||||
res = glob_parse(glob_expand, url, 1, &amount);
|
||||
if(!res)
|
||||
*urlnum = amount;
|
||||
else {
|
||||
if(error && glob_expand->error) {
|
||||
char text[128];
|
||||
const char *t;
|
||||
if(glob_expand->pos) {
|
||||
snprintf(text, sizeof(text), "%s in column %zu", glob_expand->error,
|
||||
glob_expand->pos);
|
||||
t = text;
|
||||
}
|
||||
else
|
||||
t = glob_expand->error;
|
||||
|
||||
/* send error description to the error-stream */
|
||||
fprintf(error, "curl: (%d) [globbing] %s\n", res, t);
|
||||
}
|
||||
/* it failed, we cleanup */
|
||||
glob_cleanup(glob_expand);
|
||||
*urlnum = 1;
|
||||
return res;
|
||||
}
|
||||
|
||||
*glob = glob_expand;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
void glob_cleanup(URLGlob* glob)
|
||||
{
|
||||
size_t i;
|
||||
int elem;
|
||||
|
||||
for(i = 0; i < glob->size; i++) {
|
||||
if((glob->pattern[i].type == UPTSet) &&
|
||||
(glob->pattern[i].content.Set.elements)) {
|
||||
for(elem = glob->pattern[i].content.Set.size - 1;
|
||||
elem >= 0;
|
||||
--elem) {
|
||||
Curl_safefree(glob->pattern[i].content.Set.elements[elem]);
|
||||
}
|
||||
Curl_safefree(glob->pattern[i].content.Set.elements);
|
||||
}
|
||||
}
|
||||
Curl_safefree(glob->glob_buffer);
|
||||
Curl_safefree(glob);
|
||||
}
|
||||
|
||||
CURLcode glob_next_url(char **globbed, URLGlob *glob)
|
||||
{
|
||||
URLPattern *pat;
|
||||
size_t i;
|
||||
size_t len;
|
||||
size_t buflen = glob->urllen + 1;
|
||||
char *buf = glob->glob_buffer;
|
||||
|
||||
*globbed = NULL;
|
||||
|
||||
if(!glob->beenhere)
|
||||
glob->beenhere = 1;
|
||||
else {
|
||||
bool carry = TRUE;
|
||||
|
||||
/* implement a counter over the index ranges of all patterns, starting
|
||||
with the rightmost pattern */
|
||||
for(i = 0; carry && (i < glob->size); i++) {
|
||||
carry = FALSE;
|
||||
pat = &glob->pattern[glob->size - 1 - i];
|
||||
switch(pat->type) {
|
||||
case UPTSet:
|
||||
if((pat->content.Set.elements) &&
|
||||
(++pat->content.Set.ptr_s == pat->content.Set.size)) {
|
||||
pat->content.Set.ptr_s = 0;
|
||||
carry = TRUE;
|
||||
}
|
||||
break;
|
||||
case UPTCharRange:
|
||||
pat->content.CharRange.ptr_c =
|
||||
(char)(pat->content.CharRange.step +
|
||||
(int)((unsigned char)pat->content.CharRange.ptr_c));
|
||||
if(pat->content.CharRange.ptr_c > pat->content.CharRange.max_c) {
|
||||
pat->content.CharRange.ptr_c = pat->content.CharRange.min_c;
|
||||
carry = TRUE;
|
||||
}
|
||||
break;
|
||||
case UPTNumRange:
|
||||
pat->content.NumRange.ptr_n += pat->content.NumRange.step;
|
||||
if(pat->content.NumRange.ptr_n > pat->content.NumRange.max_n) {
|
||||
pat->content.NumRange.ptr_n = pat->content.NumRange.min_n;
|
||||
carry = TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
|
||||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
}
|
||||
if(carry) { /* first pattern ptr has run into overflow, done! */
|
||||
/* TODO: verify if this should actally return CURLE_OK. */
|
||||
return CURLE_OK; /* CURLE_OK to match previous behavior */
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 0; i < glob->size; ++i) {
|
||||
pat = &glob->pattern[i];
|
||||
switch(pat->type) {
|
||||
case UPTSet:
|
||||
if(pat->content.Set.elements) {
|
||||
snprintf(buf, buflen, "%s",
|
||||
pat->content.Set.elements[pat->content.Set.ptr_s]);
|
||||
len = strlen(buf);
|
||||
buf += len;
|
||||
buflen -= len;
|
||||
}
|
||||
break;
|
||||
case UPTCharRange:
|
||||
if(buflen) {
|
||||
*buf++ = pat->content.CharRange.ptr_c;
|
||||
*buf = '\0';
|
||||
buflen--;
|
||||
}
|
||||
break;
|
||||
case UPTNumRange:
|
||||
snprintf(buf, buflen, "%0*ld",
|
||||
pat->content.NumRange.padlength,
|
||||
pat->content.NumRange.ptr_n);
|
||||
len = strlen(buf);
|
||||
buf += len;
|
||||
buflen -= len;
|
||||
break;
|
||||
default:
|
||||
printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
|
||||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
}
|
||||
|
||||
*globbed = strdup(glob->glob_buffer);
|
||||
if(!*globbed)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
CURLcode glob_match_url(char **result, char *filename, URLGlob *glob)
|
||||
{
|
||||
char *target;
|
||||
size_t allocsize;
|
||||
char numbuf[18];
|
||||
char *appendthis = NULL;
|
||||
size_t appendlen = 0;
|
||||
size_t stringlen = 0;
|
||||
|
||||
*result = NULL;
|
||||
|
||||
/* We cannot use the glob_buffer for storage here since the filename may
|
||||
* be longer than the URL we use. We allocate a good start size, then
|
||||
* we need to realloc in case of need.
|
||||
*/
|
||||
allocsize = strlen(filename) + 1; /* make it at least one byte to store the
|
||||
trailing zero */
|
||||
target = malloc(allocsize);
|
||||
if(!target)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
while(*filename) {
|
||||
if(*filename == '#' && ISDIGIT(filename[1])) {
|
||||
unsigned long i;
|
||||
char *ptr = filename;
|
||||
unsigned long num = strtoul(&filename[1], &filename, 10);
|
||||
URLPattern *pat =NULL;
|
||||
|
||||
if(num < glob->size) {
|
||||
num--; /* make it zero based */
|
||||
/* find the correct glob entry */
|
||||
for(i=0; i<glob->size; i++) {
|
||||
if(glob->pattern[i].globindex == (int)num) {
|
||||
pat = &glob->pattern[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(pat) {
|
||||
switch(pat->type) {
|
||||
case UPTSet:
|
||||
if(pat->content.Set.elements) {
|
||||
appendthis = pat->content.Set.elements[pat->content.Set.ptr_s];
|
||||
appendlen =
|
||||
strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
|
||||
}
|
||||
break;
|
||||
case UPTCharRange:
|
||||
numbuf[0] = pat->content.CharRange.ptr_c;
|
||||
numbuf[1] = 0;
|
||||
appendthis = numbuf;
|
||||
appendlen = 1;
|
||||
break;
|
||||
case UPTNumRange:
|
||||
snprintf(numbuf, sizeof(numbuf), "%0*d",
|
||||
pat->content.NumRange.padlength,
|
||||
pat->content.NumRange.ptr_n);
|
||||
appendthis = numbuf;
|
||||
appendlen = strlen(numbuf);
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "internal error: invalid pattern type (%d)\n",
|
||||
(int)pat->type);
|
||||
Curl_safefree(target);
|
||||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* #[num] out of range, use the #[num] in the output */
|
||||
filename = ptr;
|
||||
appendthis = filename++;
|
||||
appendlen = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
appendthis = filename++;
|
||||
appendlen = 1;
|
||||
}
|
||||
if(appendlen + stringlen >= allocsize) {
|
||||
char *newstr;
|
||||
/* we append a single byte to allow for the trailing byte to be appended
|
||||
at the end of this function outside the while() loop */
|
||||
allocsize = (appendlen + stringlen) * 2;
|
||||
newstr = realloc(target, allocsize + 1);
|
||||
if(!newstr) {
|
||||
Curl_safefree(target);
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
}
|
||||
target = newstr;
|
||||
}
|
||||
memcpy(&target[stringlen], appendthis, appendlen);
|
||||
stringlen += appendlen;
|
||||
}
|
||||
target[stringlen]= '\0';
|
||||
|
||||
#if defined(MSDOS) || defined(WIN32)
|
||||
{
|
||||
char *sanitized;
|
||||
SANITIZEcode sc = sanitize_file_name(&sanitized, target,
|
||||
(SANITIZE_ALLOW_PATH |
|
||||
SANITIZE_ALLOW_RESERVED));
|
||||
Curl_safefree(target);
|
||||
if(sc)
|
||||
return CURLE_URL_MALFORMAT;
|
||||
target = sanitized;
|
||||
}
|
||||
#endif /* MSDOS || WIN32 */
|
||||
|
||||
*result = target;
|
||||
return CURLE_OK;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_URLGLOB_H
|
||||
#define HEADER_CURL_TOOL_URLGLOB_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
typedef enum {
|
||||
UPTSet = 1,
|
||||
UPTCharRange,
|
||||
UPTNumRange
|
||||
} URLPatternType;
|
||||
|
||||
typedef struct {
|
||||
URLPatternType type;
|
||||
int globindex; /* the number of this particular glob or -1 if not used
|
||||
within {} or [] */
|
||||
union {
|
||||
struct {
|
||||
char **elements;
|
||||
int size;
|
||||
int ptr_s;
|
||||
} Set;
|
||||
struct {
|
||||
char min_c;
|
||||
char max_c;
|
||||
char ptr_c;
|
||||
int step;
|
||||
} CharRange;
|
||||
struct {
|
||||
unsigned long min_n;
|
||||
unsigned long max_n;
|
||||
int padlength;
|
||||
unsigned long ptr_n;
|
||||
unsigned long step;
|
||||
} NumRange;
|
||||
} content;
|
||||
} URLPattern;
|
||||
|
||||
/* the total number of globs supported */
|
||||
#define GLOB_PATTERN_NUM 100
|
||||
|
||||
typedef struct {
|
||||
URLPattern pattern[GLOB_PATTERN_NUM];
|
||||
size_t size;
|
||||
size_t urllen;
|
||||
char *glob_buffer;
|
||||
char beenhere;
|
||||
const char *error; /* error message */
|
||||
size_t pos; /* column position of error or 0 */
|
||||
} URLGlob;
|
||||
|
||||
CURLcode glob_url(URLGlob**, char *, unsigned long *, FILE *);
|
||||
CURLcode glob_next_url(char **, URLGlob *);
|
||||
CURLcode glob_match_url(char **, char *, URLGlob *);
|
||||
void glob_cleanup(URLGlob* glob);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_URLGLOB_H */
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#include "tool_util.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#if defined(WIN32) && !defined(MSDOS)
|
||||
|
||||
struct timeval tool_tvnow(void)
|
||||
{
|
||||
/*
|
||||
** GetTickCount() is available on _all_ Windows versions from W95 up
|
||||
** to nowadays. Returns milliseconds elapsed since last system boot,
|
||||
** increases monotonically and wraps once 49.7 days have elapsed.
|
||||
**
|
||||
** GetTickCount64() is available on Windows version from Windows Vista
|
||||
** and Windows Server 2008 up to nowadays. The resolution of the
|
||||
** function is limited to the resolution of the system timer, which
|
||||
** is typically in the range of 10 milliseconds to 16 milliseconds.
|
||||
*/
|
||||
struct timeval now;
|
||||
#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)
|
||||
ULONGLONG milliseconds = GetTickCount64();
|
||||
#else
|
||||
DWORD milliseconds = GetTickCount();
|
||||
#endif
|
||||
now.tv_sec = (long)(milliseconds / 1000);
|
||||
now.tv_usec = (milliseconds % 1000) * 1000;
|
||||
return now;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
|
||||
|
||||
struct timeval tool_tvnow(void)
|
||||
{
|
||||
/*
|
||||
** clock_gettime() is granted to be increased monotonically when the
|
||||
** monotonic clock is queried. Time starting point is unspecified, it
|
||||
** could be the system start-up time, the Epoch, or something else,
|
||||
** in any case the time starting point does not change once that the
|
||||
** system has started up.
|
||||
*/
|
||||
struct timeval now;
|
||||
struct timespec tsnow;
|
||||
if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
|
||||
now.tv_sec = tsnow.tv_sec;
|
||||
now.tv_usec = tsnow.tv_nsec / 1000;
|
||||
}
|
||||
/*
|
||||
** Even when the configure process has truly detected monotonic clock
|
||||
** availability, it might happen that it is not actually available at
|
||||
** run-time. When this occurs simply fallback to other time source.
|
||||
*/
|
||||
#ifdef HAVE_GETTIMEOFDAY
|
||||
else
|
||||
(void)gettimeofday(&now, NULL);
|
||||
#else
|
||||
else {
|
||||
now.tv_sec = (long)time(NULL);
|
||||
now.tv_usec = 0;
|
||||
}
|
||||
#endif
|
||||
return now;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_GETTIMEOFDAY)
|
||||
|
||||
struct timeval tool_tvnow(void)
|
||||
{
|
||||
/*
|
||||
** gettimeofday() is not granted to be increased monotonically, due to
|
||||
** clock drifting and external source time synchronization it can jump
|
||||
** forward or backward in time.
|
||||
*/
|
||||
struct timeval now;
|
||||
(void)gettimeofday(&now, NULL);
|
||||
return now;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
struct timeval tool_tvnow(void)
|
||||
{
|
||||
/*
|
||||
** time() returns the value of time in seconds since the Epoch.
|
||||
*/
|
||||
struct timeval now;
|
||||
now.tv_sec = (long)time(NULL);
|
||||
now.tv_usec = 0;
|
||||
return now;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Make sure that the first argument is the more recent time, as otherwise
|
||||
* we'll get a weird negative time-diff back...
|
||||
*
|
||||
* Returns: the time difference in number of milliseconds.
|
||||
*/
|
||||
long tool_tvdiff(struct timeval newer, struct timeval older)
|
||||
{
|
||||
return (newer.tv_sec-older.tv_sec)*1000+
|
||||
(newer.tv_usec-older.tv_usec)/1000;
|
||||
}
|
||||
|
||||
/*
|
||||
* Same as tool_tvdiff but with full usec resolution.
|
||||
*
|
||||
* Returns: the time difference in seconds with subsecond resolution.
|
||||
*/
|
||||
double tool_tvdiff_secs(struct timeval newer, struct timeval older)
|
||||
{
|
||||
if(newer.tv_sec != older.tv_sec)
|
||||
return (double)(newer.tv_sec-older.tv_sec)+
|
||||
(double)(newer.tv_usec-older.tv_usec)/1000000.0;
|
||||
else
|
||||
return (double)(newer.tv_usec-older.tv_usec)/1000000.0;
|
||||
}
|
||||
|
||||
/* return the number of seconds in the given input timeval struct */
|
||||
long tool_tvlong(struct timeval t1)
|
||||
{
|
||||
return t1.tv_sec;
|
||||
}
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_UTIL_H
|
||||
#define HEADER_CURL_TOOL_UTIL_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
struct timeval tool_tvnow(void);
|
||||
|
||||
/*
|
||||
* Make sure that the first argument (t1) is the more recent time and t2 is
|
||||
* the older time, as otherwise you get a weird negative time-diff back...
|
||||
*
|
||||
* Returns: the time difference in number of milliseconds.
|
||||
*/
|
||||
long tool_tvdiff(struct timeval t1, struct timeval t2);
|
||||
|
||||
/*
|
||||
* Same as tool_tvdiff but with full usec resolution.
|
||||
*
|
||||
* Returns: the time difference in seconds with subsecond resolution.
|
||||
*/
|
||||
double tool_tvdiff_secs(struct timeval t1, struct timeval t2);
|
||||
|
||||
long tool_tvlong(struct timeval t1);
|
||||
|
||||
#undef tvnow
|
||||
#undef tvdiff
|
||||
#undef tvdiff_secs
|
||||
#undef tvlong
|
||||
|
||||
#define tvnow() tool_tvnow()
|
||||
#define tvdiff(a,b) tool_tvdiff((a), (b))
|
||||
#define tvdiff_secs(a,b) tool_tvdiff_secs((a), (b))
|
||||
#define tvlong(a) tool_tvlong((a))
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_UTIL_H */
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_VERSION_H
|
||||
#define HEADER_CURL_TOOL_VERSION_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include <curl/curlver.h>
|
||||
|
||||
#define CURL_NAME "curl"
|
||||
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
|
||||
#define CURL_VERSION "7.52.1"
|
||||
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
|
||||
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
|
||||
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
|
||||
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_VERSION_H */
|
||||
@@ -1,219 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef __VMS
|
||||
|
||||
#if defined(__DECC) && !defined(__VAX) && \
|
||||
defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
|
||||
#include <unixlib.h>
|
||||
#endif
|
||||
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
#include "curlx.h"
|
||||
|
||||
#include "curlmsg_vms.h"
|
||||
#include "tool_vms.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
void decc$__posix_exit(int __status);
|
||||
void decc$exit(int __status);
|
||||
|
||||
static int vms_shell = -1;
|
||||
|
||||
/* VMS has a DCL shell and and also has Unix shells ported to it.
|
||||
* When curl is running under a Unix shell, we want it to be as much
|
||||
* like Unix as possible.
|
||||
*/
|
||||
int is_vms_shell(void)
|
||||
{
|
||||
char *shell;
|
||||
|
||||
/* Have we checked the shell yet? */
|
||||
if(vms_shell >= 0)
|
||||
return vms_shell;
|
||||
|
||||
shell = getenv("SHELL");
|
||||
|
||||
/* No shell, means DCL */
|
||||
if(shell == NULL) {
|
||||
vms_shell = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Have to make sure some one did not set shell to DCL */
|
||||
if(strcmp(shell, "DCL") == 0) {
|
||||
vms_shell = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
vms_shell = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* VMS has two exit() routines. When running under a Unix style shell, then
|
||||
* Unix style and the __posix_exit() routine is used.
|
||||
*
|
||||
* When running under the DCL shell, then the VMS encoded codes and decc$exit()
|
||||
* is used.
|
||||
*
|
||||
* We can not use exit() or return a code from main() because the actual
|
||||
* routine called depends on both the compiler version, compile options, and
|
||||
* feature macro settings, and one of the exit routines is hidden at compile
|
||||
* time.
|
||||
*
|
||||
* Since we want Curl to work properly under the VMS DCL shell and Unix
|
||||
* shells under VMS, this routine should compile correctly regardless of
|
||||
* the settings.
|
||||
*/
|
||||
|
||||
void vms_special_exit(int code, int vms_show)
|
||||
{
|
||||
int vms_code;
|
||||
|
||||
/* The Posix exit mode is only available after VMS 7.0 */
|
||||
#if __CRTL_VER >= 70000000
|
||||
if(is_vms_shell() == 0) {
|
||||
decc$__posix_exit(code);
|
||||
}
|
||||
#endif
|
||||
|
||||
if(code > CURL_LAST) { /* If CURL_LAST exceeded then */
|
||||
vms_code = CURL_LAST; /* curlmsg.h is out of sync. */
|
||||
}
|
||||
else {
|
||||
vms_code = vms_cond[code] | vms_show;
|
||||
}
|
||||
decc$exit(vms_code);
|
||||
}
|
||||
|
||||
#if defined(__DECC) && !defined(__VAX) && \
|
||||
defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
|
||||
|
||||
/*
|
||||
* 2004-09-19 SMS.
|
||||
*
|
||||
* decc_init()
|
||||
*
|
||||
* On non-VAX systems, use LIB$INITIALIZE to set a collection of C
|
||||
* RTL features without using the DECC$* logical name method, nor
|
||||
* requiring the user to define the corresponding logical names.
|
||||
*/
|
||||
|
||||
/* Structure to hold a DECC$* feature name and its desired value. */
|
||||
typedef struct {
|
||||
char *name;
|
||||
int value;
|
||||
} decc_feat_t;
|
||||
|
||||
/* Array of DECC$* feature names and their desired values. */
|
||||
static decc_feat_t decc_feat_array[] = {
|
||||
/* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */
|
||||
{ "DECC$ARGV_PARSE_STYLE", 1 },
|
||||
/* Preserve case for file names on ODS5 disks. */
|
||||
{ "DECC$EFS_CASE_PRESERVE", 1 },
|
||||
/* Enable multiple dots (and most characters) in ODS5 file names,
|
||||
while preserving VMS-ness of ";version". */
|
||||
{ "DECC$EFS_CHARSET", 1 },
|
||||
/* List terminator. */
|
||||
{ (char *)NULL, 0 }
|
||||
};
|
||||
|
||||
/* Flag to sense if decc_init() was called. */
|
||||
static int decc_init_done = -1;
|
||||
|
||||
/* LIB$INITIALIZE initialization function. */
|
||||
static void decc_init(void)
|
||||
{
|
||||
int feat_index;
|
||||
int feat_value;
|
||||
int feat_value_max;
|
||||
int feat_value_min;
|
||||
int i;
|
||||
int sts;
|
||||
|
||||
/* Set the global flag to indicate that LIB$INITIALIZE worked. */
|
||||
decc_init_done = 1;
|
||||
|
||||
/* Loop through all items in the decc_feat_array[]. */
|
||||
for(i = 0; decc_feat_array[i].name != NULL; i++) {
|
||||
|
||||
/* Get the feature index. */
|
||||
feat_index = decc$feature_get_index(decc_feat_array[i].name);
|
||||
|
||||
if(feat_index >= 0) {
|
||||
/* Valid item. Collect its properties. */
|
||||
feat_value = decc$feature_get_value(feat_index, 1);
|
||||
feat_value_min = decc$feature_get_value(feat_index, 2);
|
||||
feat_value_max = decc$feature_get_value(feat_index, 3);
|
||||
|
||||
if((decc_feat_array[i].value >= feat_value_min) &&
|
||||
(decc_feat_array[i].value <= feat_value_max)) {
|
||||
/* Valid value. Set it if necessary. */
|
||||
if(feat_value != decc_feat_array[i].value) {
|
||||
sts = decc$feature_set_value(feat_index, 1,
|
||||
decc_feat_array[i].value);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Invalid DECC feature value. */
|
||||
printf(" INVALID DECC FEATURE VALUE, %d: %d <= %s <= %d.\n",
|
||||
feat_value,
|
||||
feat_value_min, decc_feat_array[i].name, feat_value_max);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Invalid DECC feature name. */
|
||||
printf(" UNKNOWN DECC FEATURE: %s.\n", decc_feat_array[i].name);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Get "decc_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
|
||||
|
||||
#pragma nostandard
|
||||
|
||||
/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
|
||||
other attributes. Note that "nopic" is significant only on VAX. */
|
||||
#pragma extern_model save
|
||||
#pragma extern_model strict_refdef "LIB$INITIALIZ" 2, nopic, nowrt
|
||||
const int spare[8] = {0};
|
||||
#pragma extern_model strict_refdef "LIB$INITIALIZE" 2, nopic, nowrt
|
||||
void (*const x_decc_init)() = decc_init;
|
||||
#pragma extern_model restore
|
||||
|
||||
/* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */
|
||||
#pragma extern_model save
|
||||
int LIB$INITIALIZE(void);
|
||||
#pragma extern_model strict_refdef
|
||||
int dmy_lib$initialize = (int) LIB$INITIALIZE;
|
||||
#pragma extern_model restore
|
||||
|
||||
#pragma standard
|
||||
|
||||
#endif /* __DECC && !__VAX && __CRTL_VER && __CRTL_VER >= 70301000 */
|
||||
|
||||
#endif /* __VMS */
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_VMS_H
|
||||
#define HEADER_CURL_TOOL_VMS_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef __VMS
|
||||
|
||||
/*
|
||||
* Forward-declaration of global variable vms_show defined
|
||||
* in tool_main.c, used in main() as parameter for function
|
||||
* vms_special_exit() to allow proper curl tool exiting.
|
||||
*/
|
||||
extern int vms_show;
|
||||
|
||||
int is_vms_shell(void);
|
||||
void vms_special_exit(int code, int vms_show);
|
||||
|
||||
#undef exit
|
||||
#define exit(__code) vms_special_exit((__code), (0))
|
||||
|
||||
#define VMS_STS(c,f,e,s) (((c&0xF)<<28)|((f&0xFFF)<<16)|((e&0x1FFF)<3)|(s&7))
|
||||
#define VMSSTS_HIDE VMS_STS(1,0,0,0)
|
||||
|
||||
#endif /* __VMS */
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_VMS_H */
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef USE_ENVIRONMENT
|
||||
|
||||
#ifdef __riscos__
|
||||
# include <kernel.h>
|
||||
#endif
|
||||
|
||||
#include <curl/mprintf.h>
|
||||
#include "tool_writeenv.h"
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
static const struct
|
||||
{
|
||||
const char *name;
|
||||
CURLINFO id;
|
||||
enum {
|
||||
writeenv_NONE,
|
||||
writeenv_DOUBLE,
|
||||
writeenv_LONG,
|
||||
writeenv_STRING
|
||||
} type;
|
||||
} variables[14] =
|
||||
{
|
||||
{"curl_url_effective", CURLINFO_EFFECTIVE_URL, writeenv_STRING},
|
||||
{"curl_http_code", CURLINFO_RESPONSE_CODE, writeenv_LONG},
|
||||
{"curl_time_total", CURLINFO_TOTAL_TIME, writeenv_DOUBLE},
|
||||
{"curl_time_namelookup", CURLINFO_NAMELOOKUP_TIME, writeenv_DOUBLE},
|
||||
{"curl_time_connect", CURLINFO_CONNECT_TIME, writeenv_DOUBLE},
|
||||
{"curl_time_pretransfer", CURLINFO_PRETRANSFER_TIME, writeenv_DOUBLE},
|
||||
{"curl_time_starttransfer", CURLINFO_STARTTRANSFER_TIME, writeenv_DOUBLE},
|
||||
{"curl_size_header", CURLINFO_HEADER_SIZE, writeenv_LONG},
|
||||
{"curl_size_request", CURLINFO_REQUEST_SIZE, writeenv_LONG},
|
||||
{"curl_size_download", CURLINFO_SIZE_DOWNLOAD, writeenv_DOUBLE},
|
||||
{"curl_size_upload", CURLINFO_SIZE_UPLOAD, writeenv_DOUBLE},
|
||||
{"curl_speed_download", CURLINFO_SPEED_DOWNLOAD, writeenv_DOUBLE},
|
||||
{"curl_speed_upload", CURLINFO_SPEED_UPLOAD, writeenv_DOUBLE},
|
||||
{NULL, 0, writeenv_NONE}
|
||||
};
|
||||
|
||||
static void internalSetEnv(const char *name, char *value)
|
||||
{
|
||||
/* Add your OS-specific code here. */
|
||||
#ifdef __riscos__
|
||||
_kernel_setenv(name, value);
|
||||
#elif defined (CURLDEBUG)
|
||||
curl_memlog("ENV %s = %s\n", name, value);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
void ourWriteEnv(CURL *curl)
|
||||
{
|
||||
unsigned int i;
|
||||
char *string, numtext[10];
|
||||
long longinfo;
|
||||
double doubleinfo;
|
||||
|
||||
for(i=0; variables[i].name; i++) {
|
||||
switch(variables[i].type) {
|
||||
case writeenv_STRING:
|
||||
if(curl_easy_getinfo(curl, variables[i].id, &string) == CURLE_OK)
|
||||
internalSetEnv(variables[i].name, string);
|
||||
else
|
||||
internalSetEnv(variables[i].name, NULL);
|
||||
break;
|
||||
|
||||
case writeenv_LONG:
|
||||
if(curl_easy_getinfo(curl, variables[i].id, &longinfo) == CURLE_OK) {
|
||||
curl_msprintf(numtext, "%5ld", longinfo);
|
||||
internalSetEnv(variables[i].name, numtext);
|
||||
}
|
||||
else
|
||||
internalSetEnv(variables[i].name, NULL);
|
||||
break;
|
||||
case writeenv_DOUBLE:
|
||||
if(curl_easy_getinfo(curl, variables[i].id, &doubleinfo) == CURLE_OK) {
|
||||
curl_msprintf(numtext, "%6.2f", doubleinfo);
|
||||
internalSetEnv(variables[i].name, numtext);
|
||||
}
|
||||
else
|
||||
internalSetEnv(variables[i].name, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,35 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_WRITEENV_H
|
||||
#define HEADER_CURL_TOOL_WRITEENV_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef USE_ENVIRONMENT
|
||||
|
||||
void ourWriteEnv(CURL *curl);
|
||||
|
||||
#else
|
||||
# define ourWriteEnv(x) Curl_nop_stmt
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_WRITEENV_H */
|
||||
|
||||
@@ -1,369 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
#define ENABLE_CURLX_PRINTF
|
||||
/* use our own printf() functions */
|
||||
#include "curlx.h"
|
||||
#include "tool_cfgable.h"
|
||||
#include "tool_writeout.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
typedef enum {
|
||||
VAR_NONE, /* must be the first */
|
||||
VAR_TOTAL_TIME,
|
||||
VAR_NAMELOOKUP_TIME,
|
||||
VAR_CONNECT_TIME,
|
||||
VAR_APPCONNECT_TIME,
|
||||
VAR_PRETRANSFER_TIME,
|
||||
VAR_STARTTRANSFER_TIME,
|
||||
VAR_SIZE_DOWNLOAD,
|
||||
VAR_SIZE_UPLOAD,
|
||||
VAR_SPEED_DOWNLOAD,
|
||||
VAR_SPEED_UPLOAD,
|
||||
VAR_HTTP_CODE,
|
||||
VAR_HTTP_CODE_PROXY,
|
||||
VAR_HEADER_SIZE,
|
||||
VAR_REQUEST_SIZE,
|
||||
VAR_EFFECTIVE_URL,
|
||||
VAR_CONTENT_TYPE,
|
||||
VAR_NUM_CONNECTS,
|
||||
VAR_REDIRECT_TIME,
|
||||
VAR_REDIRECT_COUNT,
|
||||
VAR_FTP_ENTRY_PATH,
|
||||
VAR_REDIRECT_URL,
|
||||
VAR_SSL_VERIFY_RESULT,
|
||||
VAR_PROXY_SSL_VERIFY_RESULT,
|
||||
VAR_EFFECTIVE_FILENAME,
|
||||
VAR_PRIMARY_IP,
|
||||
VAR_PRIMARY_PORT,
|
||||
VAR_LOCAL_IP,
|
||||
VAR_LOCAL_PORT,
|
||||
VAR_HTTP_VERSION,
|
||||
VAR_SCHEME,
|
||||
VAR_NUM_OF_VARS /* must be the last */
|
||||
} replaceid;
|
||||
|
||||
struct variable {
|
||||
const char *name;
|
||||
replaceid id;
|
||||
};
|
||||
|
||||
|
||||
static const struct variable replacements[]={
|
||||
{"url_effective", VAR_EFFECTIVE_URL},
|
||||
{"http_code", VAR_HTTP_CODE},
|
||||
{"response_code", VAR_HTTP_CODE},
|
||||
{"http_connect", VAR_HTTP_CODE_PROXY},
|
||||
{"time_total", VAR_TOTAL_TIME},
|
||||
{"time_namelookup", VAR_NAMELOOKUP_TIME},
|
||||
{"time_connect", VAR_CONNECT_TIME},
|
||||
{"time_appconnect", VAR_APPCONNECT_TIME},
|
||||
{"time_pretransfer", VAR_PRETRANSFER_TIME},
|
||||
{"time_starttransfer", VAR_STARTTRANSFER_TIME},
|
||||
{"size_header", VAR_HEADER_SIZE},
|
||||
{"size_request", VAR_REQUEST_SIZE},
|
||||
{"size_download", VAR_SIZE_DOWNLOAD},
|
||||
{"size_upload", VAR_SIZE_UPLOAD},
|
||||
{"speed_download", VAR_SPEED_DOWNLOAD},
|
||||
{"speed_upload", VAR_SPEED_UPLOAD},
|
||||
{"content_type", VAR_CONTENT_TYPE},
|
||||
{"num_connects", VAR_NUM_CONNECTS},
|
||||
{"time_redirect", VAR_REDIRECT_TIME},
|
||||
{"num_redirects", VAR_REDIRECT_COUNT},
|
||||
{"ftp_entry_path", VAR_FTP_ENTRY_PATH},
|
||||
{"redirect_url", VAR_REDIRECT_URL},
|
||||
{"ssl_verify_result", VAR_SSL_VERIFY_RESULT},
|
||||
{"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT},
|
||||
{"filename_effective", VAR_EFFECTIVE_FILENAME},
|
||||
{"remote_ip", VAR_PRIMARY_IP},
|
||||
{"remote_port", VAR_PRIMARY_PORT},
|
||||
{"local_ip", VAR_LOCAL_IP},
|
||||
{"local_port", VAR_LOCAL_PORT},
|
||||
{"http_version", VAR_HTTP_VERSION},
|
||||
{"scheme", VAR_SCHEME},
|
||||
{NULL, VAR_NONE}
|
||||
};
|
||||
|
||||
void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
|
||||
{
|
||||
FILE *stream = stdout;
|
||||
const char *ptr = writeinfo;
|
||||
char *stringp = NULL;
|
||||
long longinfo;
|
||||
double doubleinfo;
|
||||
|
||||
while(ptr && *ptr) {
|
||||
if('%' == *ptr) {
|
||||
if('%' == ptr[1]) {
|
||||
/* an escaped %-letter */
|
||||
fputc('%', stream);
|
||||
ptr += 2;
|
||||
}
|
||||
else {
|
||||
/* this is meant as a variable to output */
|
||||
char *end;
|
||||
char keepit;
|
||||
int i;
|
||||
if('{' == ptr[1]) {
|
||||
bool match = FALSE;
|
||||
end = strchr(ptr, '}');
|
||||
ptr += 2; /* pass the % and the { */
|
||||
if(!end) {
|
||||
fputs("%{", stream);
|
||||
continue;
|
||||
}
|
||||
keepit = *end;
|
||||
*end = 0; /* zero terminate */
|
||||
for(i = 0; replacements[i].name; i++) {
|
||||
if(curl_strequal(ptr, replacements[i].name)) {
|
||||
match = TRUE;
|
||||
switch(replacements[i].id) {
|
||||
case VAR_EFFECTIVE_URL:
|
||||
if((CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &stringp))
|
||||
&& stringp)
|
||||
fputs(stringp, stream);
|
||||
break;
|
||||
case VAR_HTTP_CODE:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo))
|
||||
fprintf(stream, "%03ld", longinfo);
|
||||
break;
|
||||
case VAR_HTTP_CODE_PROXY:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE,
|
||||
&longinfo))
|
||||
fprintf(stream, "%03ld", longinfo);
|
||||
break;
|
||||
case VAR_HEADER_SIZE:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_REQUEST_SIZE:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_NUM_CONNECTS:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_REDIRECT_COUNT:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_REDIRECT_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_TOTAL_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_NAMELOOKUP_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_CONNECT_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_APPCONNECT_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_PRETRANSFER_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_STARTTRANSFER_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.6f", doubleinfo);
|
||||
break;
|
||||
case VAR_SIZE_UPLOAD:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &doubleinfo))
|
||||
fprintf(stream, "%.0f", doubleinfo);
|
||||
break;
|
||||
case VAR_SIZE_DOWNLOAD:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.0f", doubleinfo);
|
||||
break;
|
||||
case VAR_SPEED_DOWNLOAD:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD,
|
||||
&doubleinfo))
|
||||
fprintf(stream, "%.3f", doubleinfo);
|
||||
break;
|
||||
case VAR_SPEED_UPLOAD:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &doubleinfo))
|
||||
fprintf(stream, "%.3f", doubleinfo);
|
||||
break;
|
||||
case VAR_CONTENT_TYPE:
|
||||
if((CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &stringp))
|
||||
&& stringp)
|
||||
fputs(stringp, stream);
|
||||
break;
|
||||
case VAR_FTP_ENTRY_PATH:
|
||||
if((CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &stringp))
|
||||
&& stringp)
|
||||
fputs(stringp, stream);
|
||||
break;
|
||||
case VAR_REDIRECT_URL:
|
||||
if((CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &stringp))
|
||||
&& stringp)
|
||||
fputs(stringp, stream);
|
||||
break;
|
||||
case VAR_SSL_VERIFY_RESULT:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT,
|
||||
&longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_PROXY_SSL_VERIFY_RESULT:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_PROXY_SSL_VERIFYRESULT,
|
||||
&longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_EFFECTIVE_FILENAME:
|
||||
if(outs->filename)
|
||||
fprintf(stream, "%s", outs->filename);
|
||||
break;
|
||||
case VAR_PRIMARY_IP:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP,
|
||||
&stringp))
|
||||
fprintf(stream, "%s", stringp);
|
||||
break;
|
||||
case VAR_PRIMARY_PORT:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT,
|
||||
&longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_LOCAL_IP:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_LOCAL_IP,
|
||||
&stringp))
|
||||
fprintf(stream, "%s", stringp);
|
||||
break;
|
||||
case VAR_LOCAL_PORT:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_LOCAL_PORT,
|
||||
&longinfo))
|
||||
fprintf(stream, "%ld", longinfo);
|
||||
break;
|
||||
case VAR_HTTP_VERSION:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION,
|
||||
&longinfo)) {
|
||||
const char *version = "0";
|
||||
switch(longinfo) {
|
||||
case CURL_HTTP_VERSION_1_0:
|
||||
version = "1.0";
|
||||
break;
|
||||
case CURL_HTTP_VERSION_1_1:
|
||||
version = "1.1";
|
||||
break;
|
||||
case CURL_HTTP_VERSION_2_0:
|
||||
version = "2";
|
||||
break;
|
||||
}
|
||||
|
||||
fprintf(stream, version);
|
||||
}
|
||||
break;
|
||||
case VAR_SCHEME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SCHEME,
|
||||
&stringp))
|
||||
fprintf(stream, "%s", stringp);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!match) {
|
||||
fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);
|
||||
}
|
||||
ptr = end + 1; /* pass the end */
|
||||
*end = keepit;
|
||||
}
|
||||
else {
|
||||
/* illegal syntax, then just output the characters that are used */
|
||||
fputc('%', stream);
|
||||
fputc(ptr[1], stream);
|
||||
ptr += 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if('\\' == *ptr) {
|
||||
switch(ptr[1]) {
|
||||
case 'r':
|
||||
fputc('\r', stream);
|
||||
break;
|
||||
case 'n':
|
||||
fputc('\n', stream);
|
||||
break;
|
||||
case 't':
|
||||
fputc('\t', stream);
|
||||
break;
|
||||
default:
|
||||
/* unknown, just output this */
|
||||
fputc(*ptr, stream);
|
||||
fputc(ptr[1], stream);
|
||||
break;
|
||||
}
|
||||
ptr += 2;
|
||||
}
|
||||
else {
|
||||
fputc(*ptr, stream);
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_WRITEOUT_H
|
||||
#define HEADER_CURL_TOOL_WRITEOUT_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
|
||||
@@ -1,90 +0,0 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
#ifdef HAVE_FSETXATTR
|
||||
# include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
# define USE_XATTR
|
||||
#elif defined(__FreeBSD_version) && (__FreeBSD_version > 500000)
|
||||
# include <sys/types.h>
|
||||
# include <sys/extattr.h>
|
||||
# define USE_XATTR
|
||||
#endif
|
||||
|
||||
#include "tool_xattr.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#ifdef USE_XATTR
|
||||
|
||||
/* mapping table of curl metadata to extended attribute names */
|
||||
static const struct xattr_mapping {
|
||||
const char *attr; /* name of the xattr */
|
||||
CURLINFO info;
|
||||
} mappings[] = {
|
||||
/* mappings proposed by
|
||||
* http://freedesktop.org/wiki/CommonExtendedAttributes
|
||||
*/
|
||||
{ "user.xdg.origin.url", CURLINFO_EFFECTIVE_URL },
|
||||
{ "user.mime_type", CURLINFO_CONTENT_TYPE },
|
||||
{ NULL, CURLINFO_NONE } /* last element, abort loop here */
|
||||
};
|
||||
|
||||
/* store metadata from the curl request alongside the downloaded
|
||||
* file using extended attributes
|
||||
*/
|
||||
int fwrite_xattr(CURL *curl, int fd)
|
||||
{
|
||||
int i = 0;
|
||||
int err = 0;
|
||||
|
||||
/* loop through all xattr-curlinfo pairs and abort on a set error */
|
||||
while(err == 0 && mappings[i].attr != NULL) {
|
||||
char *value = NULL;
|
||||
CURLcode result = curl_easy_getinfo(curl, mappings[i].info, &value);
|
||||
if(!result && value) {
|
||||
#ifdef HAVE_FSETXATTR_6
|
||||
err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
|
||||
#elif defined(HAVE_FSETXATTR_5)
|
||||
err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
|
||||
#elif defined(__FreeBSD_version)
|
||||
err = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, mappings[i].attr, value,
|
||||
strlen(value));
|
||||
/* FreeBSD's extattr_set_fd returns the length of the extended attribute
|
||||
*/
|
||||
err = err < 0 ? err : 0;
|
||||
#endif
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
#else
|
||||
int fwrite_xattr(CURL *curl, int fd)
|
||||
{
|
||||
(void)curl;
|
||||
(void)fd;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@@ -1,28 +0,0 @@
|
||||
#ifndef HEADER_CURL_TOOL_XATTR_H
|
||||
#define HEADER_CURL_TOOL_XATTR_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
#include "tool_setup.h"
|
||||
|
||||
int fwrite_xattr(CURL *curl, int fd);
|
||||
|
||||
#endif /* HEADER_CURL_TOOL_XATTR_H */
|
||||
@@ -1,4 +0,0 @@
|
||||
add_subdirectory(data)
|
||||
add_subdirectory(libtest)
|
||||
add_subdirectory(server)
|
||||
add_subdirectory(unit)
|
||||
@@ -1,442 +0,0 @@
|
||||
The test suite's file format is very simple and extensible, closely
|
||||
resembling XML. All data for a single test case resides in a single
|
||||
ASCII file. Labels mark the beginning and the end of all sections, and each
|
||||
label must be written in its own line. Comments are either XML-style
|
||||
(enclosed with <!-- and -->) or C-style (beginning with #) and must appear
|
||||
on their own lines and not alongside actual test data. Most test data files
|
||||
are syntactically valid XML, although a few files are not (lack of
|
||||
support for character entities and the preservation of CR/LF characters at
|
||||
the end of lines are the biggest differences).
|
||||
|
||||
The file begins with a 'testcase' tag, which encompasses the remainder of
|
||||
the file.
|
||||
|
||||
<testcase>
|
||||
|
||||
Each file is split up in three main sections: reply, client and verify. The
|
||||
reply section is used for the server to know what to send as a reply for the
|
||||
requests curl sends, the client section defines how the client should behave
|
||||
while the verify section defines how to verify that the data stored after a
|
||||
command has been run ended up correctly.
|
||||
|
||||
Each main section has a number of available subsections that can be
|
||||
specified, that will be checked/used if specified. This document includes all
|
||||
the subsections currently supported.
|
||||
|
||||
Main sections are 'info', 'reply', 'client' and 'verify'.
|
||||
|
||||
<info>
|
||||
<keywords>
|
||||
A newline-separated list of keywords describing what this test case uses and
|
||||
tests. Try to use an already used keyword. These keywords will be used for
|
||||
statistical/informational purposes and for choosing or skipping classes
|
||||
of tests. "Keywords" must begin with an alphabetic character, "-", "["
|
||||
or "{" and may actually consist of multiple words separated by spaces
|
||||
which are treated together as a single identifier.
|
||||
</keywords>
|
||||
</info>
|
||||
|
||||
<reply>
|
||||
<data [nocheck="yes"] [sendzero="yes"] [base64="yes"]>
|
||||
data to be sent to the client on its request and later verified that it arrived
|
||||
safely. Set nocheck="yes" to prevent the test script from verifying the arrival
|
||||
of this data.
|
||||
|
||||
If the data contains 'swsclose' anywhere within the start and end tag, and
|
||||
this is a HTTP test, then the connection will be closed by the server after
|
||||
this response is sent. If not, the connection will be kept persistent.
|
||||
|
||||
If the data contains 'swsbounce' anywhere within the start and end tag, the
|
||||
HTTP server will detect if this is a second request using the same test and
|
||||
part number and will then increase the part number with one. This is useful
|
||||
for auth tests and similar.
|
||||
|
||||
'sendzero' set to yes means that the (FTP) server will "send" the data even if
|
||||
the size is zero bytes. Used to verify curl's behaviour on zero bytes
|
||||
transfers.
|
||||
|
||||
'base64' set to yes means that the data provided in the test-file is a chunk
|
||||
of data encoded with base64. It is the only way a test case can contain binary
|
||||
data. (This attribute can in fact be used on any section, but it doesn't make
|
||||
much sense for other sections than "data").
|
||||
|
||||
For FTP file listings, the <data> section will be used *only* if you make sure
|
||||
that there has been a CWD done first to a directory named 'test-[num]' where
|
||||
[num] is the test case number. Otherwise the ftp server can't know from which
|
||||
test file to load the list content.
|
||||
|
||||
</data>
|
||||
<dataNUM>
|
||||
Send back this contents instead of the <data> one. The num is set by:
|
||||
A) The test number in the request line is >10000 and this is the remainder
|
||||
of [test case number]%10000.
|
||||
B) The request was HTTP and included digest details, which adds 1000 to NUM
|
||||
C) If a HTTP request is NTLM type-1, it adds 1001 to num
|
||||
D) If a HTTP request is NTLM type-3, it adds 1002 to num
|
||||
E) If a HTTP request is Basic and num is already >=1000, it adds 1 to num
|
||||
|
||||
Dynamically changing num in this way allows the test harness to be used to
|
||||
test authentication negotiation where several different requests must be sent
|
||||
to complete a transfer. The response to each request is found in its own data
|
||||
section. Validating the entire negotiation sequence can be done by
|
||||
specifying a datacheck section.
|
||||
</dataNUM>
|
||||
<connect>
|
||||
The connect section is used instead of the 'data' for all CONNECT
|
||||
requests. The remainder of the rules for the data section then apply but with
|
||||
a connect prefix.
|
||||
</connect>
|
||||
<datacheck [nonewline="yes"]>
|
||||
if the data is sent but this is what should be checked afterwards. If
|
||||
'nonewline' is set, we will cut off the trailing newline of this given data
|
||||
before comparing with the one actually received by the client
|
||||
</datacheck>
|
||||
<size>
|
||||
number to return on a ftp SIZE command (set to -1 to make this command fail)
|
||||
</size>
|
||||
<mdtm>
|
||||
what to send back if the client sends a (FTP) MDTM command, set to -1 to
|
||||
have it return that the file doesn't exist
|
||||
</mdtm>
|
||||
<postcmd>
|
||||
special purpose server-command to control its behavior *after* the
|
||||
reply is sent
|
||||
For HTTP/HTTPS, these are supported:
|
||||
|
||||
wait [secs]
|
||||
- Pause for the given time
|
||||
</postcmd>
|
||||
<servercmd>
|
||||
Special-commands for the server.
|
||||
For FTP/SMTP/POP/IMAP, these are supported:
|
||||
|
||||
REPLY [command] [return value] [response string]
|
||||
- Changes how the server responds to the [command]. [response string] is
|
||||
evaluated as a perl string, so it can contain embedded \r\n, for example.
|
||||
There's a special [command] named "welcome" (without quotes) which is the
|
||||
string sent immediately on connect as a welcome.
|
||||
COUNT [command] [num]
|
||||
- Do the REPLY change for [command] only [num] times and then go back to the
|
||||
built-in approach
|
||||
DELAY [command] [secs]
|
||||
- Delay responding to this command for the given time
|
||||
RETRWEIRDO
|
||||
- Enable the "weirdo" RETR case when multiple response lines appear at once
|
||||
when a file is transferred
|
||||
RETRNOSIZE
|
||||
- Make sure the RETR response doesn't contain the size of the file
|
||||
NOSAVE
|
||||
- Don't actually save what is received
|
||||
SLOWDOWN
|
||||
- Send FTP responses with 0.01 sec delay between each byte
|
||||
PASVBADIP
|
||||
- makes PASV send back an illegal IP in its 227 response
|
||||
CAPA [capabilities]
|
||||
- Enables support for and specifies a list of space separated capabilities to
|
||||
return to the client for the IMAP CAPABILITY, POP3 CAPA and SMTP EHLO
|
||||
commands
|
||||
AUTH [mechanisms]
|
||||
- Enables support for SASL authentication and specifies a list of space
|
||||
separated mechanisms for IMAP, POP3 and SMTP
|
||||
|
||||
For HTTP/HTTPS:
|
||||
auth_required if this is set and a POST/PUT is made without auth, the
|
||||
server will NOT wait for the full request body to get sent
|
||||
idle do nothing after receiving the request, just "sit idle"
|
||||
stream continuously send data to the client, never-ending
|
||||
writedelay: [secs] delay this amount between reply packets
|
||||
pipe: [num] tell the server to expect this many HTTP requests before
|
||||
sending back anything, to allow pipelining tests
|
||||
skip: [num] instructs the server to ignore reading this many bytes from a PUT
|
||||
or POST request
|
||||
|
||||
rtp: part [num] channel [num] size [num]
|
||||
stream a fake RTP packet for the given part on a chosen channel
|
||||
with the given payload size
|
||||
|
||||
connection-monitor When used, this will log [DISCONNECT] to the server.input
|
||||
log when the connection is disconnected.
|
||||
upgrade when an HTTP upgrade header is found, the server will upgrade
|
||||
to http2
|
||||
|
||||
For TFTP:
|
||||
writedelay: [secs] delay this amount between reply packets (each packet being
|
||||
512 bytes payload)
|
||||
</servercmd>
|
||||
</reply>
|
||||
|
||||
<client>
|
||||
|
||||
<server>
|
||||
What server(s) this test case requires/uses:
|
||||
|
||||
file
|
||||
ftp
|
||||
ftp-ipv6
|
||||
ftps
|
||||
http
|
||||
http-ipv6
|
||||
http-proxy
|
||||
http-unix
|
||||
https
|
||||
httptls+srp
|
||||
httptls+srp-ipv6
|
||||
http/2
|
||||
imap
|
||||
none
|
||||
pop3
|
||||
rtsp
|
||||
rtsp-ipv6
|
||||
scp
|
||||
sftp
|
||||
smtp
|
||||
socks4
|
||||
socks5
|
||||
|
||||
Give only one per line. This subsection is mandatory.
|
||||
</server>
|
||||
|
||||
<features>
|
||||
A list of features that MUST be present in the client/library for this test to
|
||||
be able to run. If a required feature is not present then the test will be
|
||||
SKIPPED.
|
||||
|
||||
Alternatively a feature can be prefixed with an exclamation mark to indicate a
|
||||
feature is NOT required. If the feature is present then the test will be
|
||||
SKIPPED.
|
||||
|
||||
Features testable here are:
|
||||
|
||||
axTLS
|
||||
crypto
|
||||
debug
|
||||
getrlimit
|
||||
GnuTLS
|
||||
GSS-API
|
||||
http2
|
||||
idn
|
||||
ipv6
|
||||
Kerberos
|
||||
large_file
|
||||
libz
|
||||
Metalink
|
||||
NSS
|
||||
NTLM
|
||||
OpenSSL
|
||||
PSL
|
||||
socks
|
||||
SPNEGO
|
||||
SSL
|
||||
SSLpinning
|
||||
SSPI
|
||||
TLS-SRP
|
||||
TrackMemory
|
||||
unittest
|
||||
unix-sockets
|
||||
WinSSL
|
||||
|
||||
as well as each protocol that curl supports. A protocol only needs to be
|
||||
specified if it is different from the server (useful when the server
|
||||
is 'none').
|
||||
</features>
|
||||
|
||||
<killserver>
|
||||
Using the same syntax as in <server> but when mentioned here these servers
|
||||
are explicitly KILLED when this test case is completed. Only use this if there
|
||||
is no other alternatives. Using this of course requires subsequent tests to
|
||||
restart servers.
|
||||
</killserver>
|
||||
|
||||
<precheck>
|
||||
A command line that if set gets run by the test script before the test. If an
|
||||
output is displayed by the command or if the return code is non-zero, the test
|
||||
will be skipped and the (single-line) output will be displayed as reason for
|
||||
not running the test. Variables are substituted as in the <command> section.
|
||||
</precheck>
|
||||
|
||||
<postcheck>
|
||||
A command line that if set gets run by the test script after the test. If
|
||||
the command exists with a non-zero status code, the test will be considered
|
||||
to have failed. Variables are substituted as in the <command> section.
|
||||
</postcheck>
|
||||
|
||||
<tool>
|
||||
Name of tool to use instead of "curl". This tool must be built and exist
|
||||
either in the libtest/ directory (if the tool starts with 'lib') or in the
|
||||
unit/ directory (if the tool starts with 'unit').
|
||||
</tool>
|
||||
|
||||
<name>
|
||||
test case description
|
||||
</name>
|
||||
|
||||
<setenv>
|
||||
variable1=contents1
|
||||
variable2=contents2
|
||||
|
||||
Set the given environment variables to the specified value before the actual
|
||||
command is run. They are cleared again after the command has been run.
|
||||
Variables are first substituted as in the <command> section.
|
||||
</setenv>
|
||||
|
||||
<command [option="no-output/no-include"] [timeout="secs"] [delay="secs"]
|
||||
[type="perl"]>
|
||||
command line to run, there's a bunch of %variables that get replaced
|
||||
accordingly.
|
||||
|
||||
Note that the URL that gets passed to the server actually controls what data
|
||||
that is returned. The last slash in the URL must be followed by a number. That
|
||||
number (N) will be used by the test-server to load test case N and return the
|
||||
data that is defined within the <reply><data></data></reply> section.
|
||||
|
||||
If there's no test number found above, the HTTP test server will use the
|
||||
number following the last dot in the given hostname (made so that a CONNECT
|
||||
can still pass on test number) so that "foo.bar.123" gets treated as test case
|
||||
123. Alternatively, if an IPv6 address is provided to CONNECT, the last
|
||||
hexadecimal group in the address will be used as the test number! For example
|
||||
the address "[1234::ff]" would be treated as test case 255.
|
||||
|
||||
Set type="perl" to write the test case as a perl script. It implies that
|
||||
there's no memory debugging and valgrind gets shut off for this test.
|
||||
|
||||
Set option="no-output" to prevent the test script to slap on the --output
|
||||
argument that directs the output to a file. The --output is also not added if
|
||||
the verify/stdout section is used.
|
||||
|
||||
Set option="no-include" to prevent the test script to slap on the --include
|
||||
argument.
|
||||
|
||||
Set timeout="secs" to override default server logs advisor read lock timeout.
|
||||
This timeout is used by the test harness, once that the command has completed
|
||||
execution, to wait for the test server to write out server side log files and
|
||||
remove the lock that advised not to read them. The "secs" parameter is the not
|
||||
negative integer number of seconds for the timeout. This 'timeout' attribute
|
||||
is documented for completeness sake, but is deep test harness stuff and only
|
||||
needed for very singular and specific test cases. Avoid using it.
|
||||
|
||||
Set delay="secs" to introduce a time delay once that the command has completed
|
||||
execution and before the <postcheck> section runs. The "secs" parameter is the
|
||||
not negative integer number of seconds for the delay. This 'delay' attribute
|
||||
is intended for very specific test cases, and normally not needed.
|
||||
|
||||
Available substitute variables include:
|
||||
%CLIENT6IP - IPv6 address of the client running curl
|
||||
%CLIENTIP - IPv4 address of the client running curl
|
||||
%CURL - Path to the curl executable
|
||||
%FTP2PORT - Port number of the FTP server 2
|
||||
%FTP6PORT - IPv6 port number of the FTP server
|
||||
%FTPPORT - Port number of the FTP server
|
||||
%FTPSPORT - Port number of the FTPS server
|
||||
%FTPTIME2 - Timeout in seconds that should be just sufficient to receive
|
||||
a response from the test FTP server
|
||||
%FTPTIME3 - Even longer than %FTPTIME2
|
||||
%GOPHER6PORT - IPv6 port number of the Gopher server
|
||||
%GOPHERPORT - Port number of the Gopher server
|
||||
%HOST6IP - IPv6 address of the host running this test
|
||||
%HOSTIP - IPv4 address of the host running this test
|
||||
%HTTP6PORT - IPv6 port number of the HTTP server
|
||||
%HTTPPIPEPORT - Port number of the HTTP pipelining server
|
||||
%HTTPUNIXPATH - Path to the Unix socket of the HTTP server
|
||||
%HTTPPORT - Port number of the HTTP server
|
||||
%HTTPSPORT - Port number of the HTTPS server
|
||||
%HTTPTLS6PORT - IPv6 port number of the HTTP TLS server
|
||||
%HTTPTLSPORT - Port number of the HTTP TLS server
|
||||
%IMAP6PORT - IPv6 port number of the IMAP server
|
||||
%IMAPPORT - Port number of the IMAP server
|
||||
%POP36PORT - IPv6 port number of the POP3 server
|
||||
%POP3PORT - Port number of the POP3 server
|
||||
%PROXYPORT - Port number of the HTTP proxy
|
||||
%PWD - Current directory
|
||||
%RTSP6PORT - IPv6 port number of the RTSP server
|
||||
%RTSPPORT - Port number of the RTSP server
|
||||
%SMTP6PORT - IPv6 port number of the SMTP server
|
||||
%SMTPPORT - Port number of the SMTP server
|
||||
%SOCKSPORT - Port number of the SOCKS4/5 server
|
||||
%SRCDIR - Full path to the source dir
|
||||
%SSHPORT - Port number of the SCP/SFTP server
|
||||
%TFTP6PORT - IPv6 port number of the TFTP server
|
||||
%TFTPPORT - Port number of the TFTP server
|
||||
%USER - Login ID of the user running the test
|
||||
</command>
|
||||
|
||||
<file name="log/filename">
|
||||
This creates the named file with this content before the test case is run,
|
||||
which is useful if the test case needs a file to act on.
|
||||
Variables are substituted on the contents of the file as in the <command>
|
||||
section.
|
||||
</file>
|
||||
|
||||
<stdin [nonewline="yes"]>
|
||||
Pass this given data on stdin to the tool.
|
||||
|
||||
If 'nonewline' is set, we will cut off the trailing newline of this given data
|
||||
before comparing with the one actually received by the client
|
||||
</stdin>
|
||||
|
||||
</client>
|
||||
|
||||
<verify>
|
||||
<errorcode>
|
||||
numerical error code curl is supposed to return. Specify a list of accepted
|
||||
error codes by separating multiple numbers with comma. See test 237 for an
|
||||
example.
|
||||
</errorcode>
|
||||
<strip>
|
||||
One regex per line that is removed from the protocol dumps before the
|
||||
comparison is made. This is very useful to remove dependencies on dynamically
|
||||
changing protocol data such as port numbers or user-agent strings.
|
||||
</strip>
|
||||
<strippart>
|
||||
One perl op per line that operates on the protocol dump. This is pretty
|
||||
advanced. Example: "s/^EPRT .*/EPRT stripped/"
|
||||
</strippart>
|
||||
|
||||
<protocol [nonewline="yes"]>
|
||||
|
||||
the protocol dump curl should transmit, if 'nonewline' is set, we will cut off
|
||||
the trailing newline of this given data before comparing with the one actually
|
||||
sent by the client Variables are substituted as in the <command> section. The
|
||||
<strip> and <strippart> rules are applied before comparisons are made.
|
||||
|
||||
</protocol>
|
||||
|
||||
<proxy [nonewline="yes"]>
|
||||
|
||||
The protocol dump curl should transmit to a HTTP proxy (when the http-proxy
|
||||
server is used), if 'nonewline' is set, we will cut off the trailing newline
|
||||
of this given data before comparing with the one actually sent by the client
|
||||
Variables are substituted as in the <command> section. The <strip> and
|
||||
<strippart> rules are applied before comparisons are made.
|
||||
|
||||
</proxy>
|
||||
|
||||
<stdout [mode="text"] [nonewline="yes"]>
|
||||
This verifies that this data was passed to stdout. Variables are
|
||||
substituted as in the <command> section.
|
||||
|
||||
Use the mode="text" attribute if the output is in text mode on platforms that
|
||||
have a text/binary difference.
|
||||
|
||||
If 'nonewline' is set, we will cut off the trailing newline of this given data
|
||||
before comparing with the one actually received by the client
|
||||
</stdout>
|
||||
<file name="log/filename" [mode="text"]>
|
||||
The file's contents must be identical to this after the test is complete.
|
||||
Use the mode="text" attribute if the output is in text mode on platforms that
|
||||
have a text/binary difference.
|
||||
Variables are substituted as in the <command> section.
|
||||
</file>
|
||||
<stripfile>
|
||||
One perl op per line that operates on the output file or stdout before being
|
||||
compared with what is stored in the test file. This is pretty
|
||||
advanced. Example: "s/^EPRT .*/EPRT stripped/"
|
||||
</stripfile>
|
||||
<upload>
|
||||
the contents of the upload data curl should have sent
|
||||
</upload>
|
||||
<valgrind>
|
||||
disable - disables the valgrind log check for this test
|
||||
</valgrind>
|
||||
</verify>
|
||||
|
||||
</testcase>
|
||||
@@ -1,106 +0,0 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
HTMLPAGES = testcurl.html runtests.html
|
||||
PDFPAGES = testcurl.pdf runtests.pdf
|
||||
|
||||
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
|
||||
FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \
|
||||
sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
|
||||
$(HTMLPAGES) $(PDFPAGES) \
|
||||
serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
|
||||
CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl \
|
||||
manpage-scan.pl nroff-scan.pl http2-server.pl
|
||||
|
||||
DISTCLEANFILES = configurehelp.pm
|
||||
|
||||
# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
|
||||
# added twice as then targets such as 'distclean' misbehave and try to
|
||||
# do things twice in that subdir at times (and thus fails).
|
||||
if BUILD_UNITTESTS
|
||||
BUILD_UNIT = unit
|
||||
DIST_UNIT =
|
||||
else
|
||||
BUILD_UNIT =
|
||||
DIST_UNIT = unit
|
||||
endif
|
||||
|
||||
SUBDIRS = certs data server libtest $(BUILD_UNIT)
|
||||
DIST_SUBDIRS = $(SUBDIRS) $(DIST_UNIT)
|
||||
|
||||
PERLFLAGS = -I$(srcdir)
|
||||
|
||||
CLEANFILES = .http.pid .https.pid .ftp.pid .ftps.pid
|
||||
|
||||
MAN2HTML= roffit $< >$@
|
||||
|
||||
curl:
|
||||
@cd $(top_builddir) && $(MAKE)
|
||||
|
||||
if CROSSCOMPILING
|
||||
TEST = @echo "NOTICE: we can't run the tests when cross-compiling!"
|
||||
else # if not cross-compiling:
|
||||
TEST = srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl
|
||||
TEST_Q = -a -s
|
||||
TEST_AM = -a -am
|
||||
TEST_F = -a -p -r
|
||||
TEST_T = -a -t
|
||||
endif
|
||||
|
||||
# make sure that PERL is pointing to an executable
|
||||
perlcheck:
|
||||
@if ! test -x "$(PERL)"; then echo "No perl!"; exit 2; fi
|
||||
|
||||
test: perlcheck all
|
||||
$(TEST)
|
||||
|
||||
quiet-test: perlcheck all
|
||||
$(TEST) $(TEST_Q)
|
||||
|
||||
am-test: perlcheck all
|
||||
$(TEST) $(TEST_AM)
|
||||
|
||||
full-test: perlcheck all
|
||||
$(TEST) $(TEST_F)
|
||||
|
||||
torture-test: perlcheck all
|
||||
$(TEST) $(TEST_T)
|
||||
|
||||
.1.html:
|
||||
$(MAN2HTML)
|
||||
|
||||
.1.pdf:
|
||||
@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
|
||||
groff -Tps -man $< >$$foo.ps; \
|
||||
ps2pdf $$foo.ps $@; \
|
||||
rm $$foo.ps; \
|
||||
echo "converted $< to $@")
|
||||
|
||||
checksrc:
|
||||
cd libtest && $(MAKE) checksrc
|
||||
cd unit && $(MAKE) checksrc
|
||||
cd server && $(MAKE) checksrc
|
||||
|
||||
if CURLDEBUG
|
||||
# for debug builds, we scan the sources on all regular make invokes
|
||||
all-local: checksrc
|
||||
endif
|
||||
@@ -1,798 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = tests
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
$(top_srcdir)/m4/curl-override.m4 \
|
||||
$(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/xc-am-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-cc-check.m4 \
|
||||
$(top_srcdir)/m4/xc-lt-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-translit.m4 \
|
||||
$(top_srcdir)/m4/xc-val-flgs.m4 \
|
||||
$(top_srcdir)/m4/zz40-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz50-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
|
||||
CURLVERSION = @CURLVERSION@
|
||||
CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
|
||||
CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
|
||||
CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
|
||||
CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
|
||||
CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
|
||||
CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
|
||||
CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
|
||||
CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
|
||||
CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
|
||||
CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
|
||||
CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
|
||||
CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
|
||||
CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
|
||||
CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
|
||||
CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
|
||||
CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
|
||||
CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
|
||||
LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
|
||||
LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MANOPT = @MANOPT@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NROFF = @NROFF@
|
||||
NSS_LIBS = @NSS_LIBS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKGADD_NAME = @PKGADD_NAME@
|
||||
PKGADD_PKG = @PKGADD_PKG@
|
||||
PKGADD_VENDOR = @PKGADD_VENDOR@
|
||||
PKGCONFIG = @PKGCONFIG@
|
||||
RANDOM_FILE = @RANDOM_FILE@
|
||||
RANLIB = @RANLIB@
|
||||
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
libext = @libext@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
HTMLPAGES = testcurl.html runtests.html
|
||||
PDFPAGES = testcurl.pdf runtests.pdf
|
||||
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl getpart.pm \
|
||||
FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \
|
||||
sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
|
||||
$(HTMLPAGES) $(PDFPAGES) \
|
||||
serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl \
|
||||
CMakeLists.txt mem-include-scan.pl valgrind.supp http_pipe.py extern-scan.pl \
|
||||
manpage-scan.pl nroff-scan.pl http2-server.pl
|
||||
|
||||
DISTCLEANFILES = configurehelp.pm
|
||||
@BUILD_UNITTESTS_FALSE@BUILD_UNIT =
|
||||
|
||||
# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
|
||||
# added twice as then targets such as 'distclean' misbehave and try to
|
||||
# do things twice in that subdir at times (and thus fails).
|
||||
@BUILD_UNITTESTS_TRUE@BUILD_UNIT = unit
|
||||
@BUILD_UNITTESTS_FALSE@DIST_UNIT = unit
|
||||
@BUILD_UNITTESTS_TRUE@DIST_UNIT =
|
||||
SUBDIRS = certs data server libtest $(BUILD_UNIT)
|
||||
DIST_SUBDIRS = $(SUBDIRS) $(DIST_UNIT)
|
||||
PERLFLAGS = -I$(srcdir)
|
||||
CLEANFILES = .http.pid .https.pid .ftp.pid .ftps.pid
|
||||
MAN2HTML = roffit $< >$@
|
||||
@CROSSCOMPILING_FALSE@TEST = srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl
|
||||
@CROSSCOMPILING_TRUE@TEST = @echo "NOTICE: we can't run the tests when cross-compiling!"
|
||||
@CROSSCOMPILING_FALSE@TEST_Q = -a -s
|
||||
@CROSSCOMPILING_FALSE@TEST_AM = -a -am
|
||||
@CROSSCOMPILING_FALSE@TEST_F = -a -p -r
|
||||
@CROSSCOMPILING_FALSE@TEST_T = -a -t
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .1 .html .pdf
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu tests/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
@CURLDEBUG_FALSE@all-local:
|
||||
all-am: Makefile all-local
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
|
||||
check check-am clean clean-generic clean-libtool cscopelist-am \
|
||||
ctags ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
curl:
|
||||
@cd $(top_builddir) && $(MAKE)
|
||||
|
||||
# make sure that PERL is pointing to an executable
|
||||
perlcheck:
|
||||
@if ! test -x "$(PERL)"; then echo "No perl!"; exit 2; fi
|
||||
|
||||
test: perlcheck all
|
||||
$(TEST)
|
||||
|
||||
quiet-test: perlcheck all
|
||||
$(TEST) $(TEST_Q)
|
||||
|
||||
am-test: perlcheck all
|
||||
$(TEST) $(TEST_AM)
|
||||
|
||||
full-test: perlcheck all
|
||||
$(TEST) $(TEST_F)
|
||||
|
||||
torture-test: perlcheck all
|
||||
$(TEST) $(TEST_T)
|
||||
|
||||
.1.html:
|
||||
$(MAN2HTML)
|
||||
|
||||
.1.pdf:
|
||||
@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
|
||||
groff -Tps -man $< >$$foo.ps; \
|
||||
ps2pdf $$foo.ps $@; \
|
||||
rm $$foo.ps; \
|
||||
echo "converted $< to $@")
|
||||
|
||||
checksrc:
|
||||
cd libtest && $(MAKE) checksrc
|
||||
cd unit && $(MAKE) checksrc
|
||||
cd server && $(MAKE) checksrc
|
||||
|
||||
# for debug builds, we scan the sources on all regular make invokes
|
||||
@CURLDEBUG_TRUE@all-local: checksrc
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,278 +0,0 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
The curl Test Suite
|
||||
|
||||
1. Running
|
||||
1.1 Requires to run
|
||||
1.2 Port numbers used by test servers
|
||||
1.3 Test servers
|
||||
1.4 Run
|
||||
1.5 Shell startup scripts
|
||||
1.6 Memory test
|
||||
1.7 Debug
|
||||
1.8 Logs
|
||||
1.9 Test input files
|
||||
1.10 Code coverage
|
||||
1.11 Remote testing
|
||||
|
||||
2. Numbering
|
||||
2.1 Test case numbering
|
||||
|
||||
3. Write tests
|
||||
3.1 test data
|
||||
3.2 curl tests
|
||||
3.3 libcurl tests
|
||||
3.4 unit tests
|
||||
|
||||
4. TODO
|
||||
4.1 More protocols
|
||||
4.2 SOCKS auth
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. Running
|
||||
|
||||
1.1 Requires to run
|
||||
|
||||
perl (and a unix-style shell)
|
||||
python (and a unix-style shell)
|
||||
diff (when a test fails, a diff is shown)
|
||||
stunnel (for HTTPS and FTPS tests)
|
||||
OpenSSH or SunSSH (for SCP, SFTP and SOCKS4/5 tests)
|
||||
nghttpx (for HTTP/2 tests)
|
||||
|
||||
1.2 Port numbers used by test servers
|
||||
|
||||
- TCP/8990 for HTTP
|
||||
- TCP/8991 for HTTPS
|
||||
- TCP/8992 for FTP
|
||||
- TCP/8993 for FTPS
|
||||
- TCP/8994 for HTTP IPv6
|
||||
- TCP/8995 for FTP (2)
|
||||
- TCP/8996 for FTP IPv6
|
||||
- UDP/8997 for TFTP
|
||||
- UDP/8998 for TFTP IPv6
|
||||
- TCP/8999 for SCP/SFTP
|
||||
- TCP/9000 for SOCKS
|
||||
- TCP/9001 for POP3
|
||||
- TCP/9002 for IMAP
|
||||
- TCP/9003 for SMTP
|
||||
- TCP/9004 for SMTP IPv6
|
||||
- TCP/9005 for RTSP
|
||||
- TCP/9006 for RTSP IPv6
|
||||
- TCP/9007 for GOPHER
|
||||
- TCP/9008 for GOPHER IPv6
|
||||
- TCP/9008 for HTTPS server with TLS-SRP support
|
||||
|
||||
1.3 Test servers
|
||||
|
||||
The test suite runs simple FTP, POP3, IMAP, SMTP, HTTP and TFTP stand-alone
|
||||
servers on the ports listed above to which it makes requests. For SSL tests,
|
||||
it runs stunnel to handle encryption to the regular servers. For SSH, it
|
||||
runs a standard OpenSSH server. For SOCKS4/5 tests SSH is used to perform
|
||||
the SOCKS functionality and requires a SSH client and server.
|
||||
|
||||
The base port number (8990), which all the individual port numbers are
|
||||
indexed from, can be set explicitly using runtests.pl' -b option to allow
|
||||
running more than one instance of the test suite simultaneously on one
|
||||
machine, or just move the servers in case you have local services on any of
|
||||
those ports.
|
||||
|
||||
The HTTP server supports listening on a Unix domain socket, the default
|
||||
location is 'http.sock'.
|
||||
|
||||
1.4 Run
|
||||
|
||||
'make test'. This builds the test suite support code and invokes the
|
||||
'runtests.pl' perl script to run all the tests. Edit the top variables
|
||||
of that script in case you have some specific needs, or run the script
|
||||
manually (after the support code has been built).
|
||||
|
||||
The script breaks on the first test that doesn't do OK. Use -a to prevent
|
||||
the script from aborting on the first error. Run the script with -v for more
|
||||
verbose output. Use -d to run the test servers with debug output enabled as
|
||||
well. Specifying -k keeps all the log files generated by the test intact.
|
||||
|
||||
Use -s for shorter output, or pass test numbers to run specific tests only
|
||||
(like "./runtests.pl 3 4" to test 3 and 4 only). It also supports test case
|
||||
ranges with 'to', as in "./runtests 3 to 9" which runs the seven tests from
|
||||
3 to 9. Any test numbers starting with ! are disabled, as are any test
|
||||
numbers found in the files data/DISABLED or data/DISABLED.local (one per
|
||||
line). The latter is meant for local temporary disables and will be ignored
|
||||
by git.
|
||||
|
||||
When -s is not present, each successful test will display on one line the
|
||||
test number and description and on the next line a set of flags, the test
|
||||
result, current test sequence, total number of tests to be run and an
|
||||
estimated amount of time to complete the test run. The flags consist of
|
||||
these letters describing what is checked in this test:
|
||||
|
||||
s stdout
|
||||
d data
|
||||
u upload
|
||||
p protocol
|
||||
o output
|
||||
e exit code
|
||||
m memory
|
||||
v valgrind
|
||||
|
||||
1.5 Shell startup scripts
|
||||
|
||||
Tests which use the ssh test server, SCP/SFTP/SOCKS tests, might be badly
|
||||
influenced by the output of system wide or user specific shell startup
|
||||
scripts, .bashrc, .profile, /etc/csh.cshrc, .login, /etc/bashrc, etc. which
|
||||
output text messages or escape sequences on user login. When these shell
|
||||
startup messages or escape sequences are output they might corrupt the
|
||||
expected stream of data which flows to the sftp-server or from the ssh
|
||||
client which can result in bad test behaviour or even prevent the test
|
||||
server from running.
|
||||
|
||||
If the test suite ssh or sftp server fails to start up and logs the message
|
||||
'Received message too long' then you are certainly suffering the unwanted
|
||||
output of a shell startup script. Locate, cleanup or adjust the shell
|
||||
script.
|
||||
|
||||
1.6 Memory test
|
||||
|
||||
The test script will check that all allocated memory is freed properly IF
|
||||
curl has been built with the CURLDEBUG define set. The script will
|
||||
automatically detect if that is the case, and it will use the
|
||||
'memanalyze.pl' script to analyze the memory debugging output.
|
||||
|
||||
Also, if you run tests on a machine where valgrind is found, the script will
|
||||
use valgrind to run the test with (unless you use -n) to further verify
|
||||
correctness.
|
||||
|
||||
runtests.pl's -t option will enable torture testing mode, which runs each
|
||||
test many times and makes each different memory allocation fail on each
|
||||
successive run. This tests the out of memory error handling code to ensure
|
||||
that memory leaks do not occur even in those situations. It can help to
|
||||
compile curl with CPPFLAGS=-DMEMDEBUG_LOG_SYNC when using this option, to
|
||||
ensure that the memory log file is properly written even if curl crashes.
|
||||
|
||||
1.7 Debug
|
||||
|
||||
If a test case fails, you can conveniently get the script to invoke the
|
||||
debugger (gdb) for you with the server running and the exact same command
|
||||
line parameters that failed. Just invoke 'runtests.pl <test number> -g' and
|
||||
then just type 'run' in the debugger to perform the command through the
|
||||
debugger.
|
||||
|
||||
1.8 Logs
|
||||
|
||||
All logs are generated in the log/ subdirectory (it is emptied first in the
|
||||
runtests.pl script). Use runtests.pl -k to force it to keep the temporary
|
||||
files after the test run since successful runs will clean it up otherwise.
|
||||
|
||||
1.9 Test input files
|
||||
|
||||
All test cases are put in the data/ subdirectory. Each test is stored in the
|
||||
file named according to the test number.
|
||||
|
||||
See FILEFORMAT for the description of the test case files.
|
||||
|
||||
1.10 Code coverage
|
||||
|
||||
gcc provides a tool that can determine the code coverage figures for
|
||||
the test suite. To use it, configure curl with
|
||||
CFLAGS='-fprofile-arcs -ftest-coverage -g -O0'. Make sure you run the normal
|
||||
and torture tests to get more full coverage, i.e. do:
|
||||
|
||||
make test
|
||||
make test-torture
|
||||
|
||||
The graphical tool ggcov can be used to browse the source and create
|
||||
coverage reports on *NIX hosts:
|
||||
|
||||
ggcov -r lib src
|
||||
|
||||
The text mode tool gcov may also be used, but it doesn't handle object files
|
||||
in more than one directory very well.
|
||||
|
||||
1.11 Remote testing
|
||||
|
||||
The runtests.pl script provides some hooks to allow curl to be tested on a
|
||||
machine where perl can not be run. The test framework in this case runs on
|
||||
a workstation where perl is available, while curl itself is run on a remote
|
||||
system using ssh or some other remote execution method. See the comments at
|
||||
the beginning of runtests.pl for details.
|
||||
|
||||
2. Numbering
|
||||
|
||||
2.1 Test case numbering
|
||||
|
||||
1 - 99 HTTP
|
||||
100 - 199 FTP
|
||||
200 - 299 FILE
|
||||
300 - 399 HTTPS
|
||||
400 - 499 FTPS
|
||||
500 - 599 libcurl source code tests, not using the curl command tool
|
||||
600 - 699 SCP/SFTP
|
||||
700 - 799 SOCKS4 (even numbers) and SOCK5 (odd numbers)
|
||||
800 - 849 IMAP
|
||||
850 - 899 POP3
|
||||
900 - 999 SMTP
|
||||
1000 - 1299 miscellaneous
|
||||
1300 - 1399 unit tests
|
||||
1400 - 1499 miscellaneous
|
||||
1500 - 1599 libcurl source code tests, not using the curl command tool
|
||||
(same as 5xx)
|
||||
1600 - 1699 unit tests
|
||||
2000 - x multiple sequential protocols per test case
|
||||
|
||||
There's nothing in the system that *requires* us to keep within these number
|
||||
series.
|
||||
|
||||
3. Write tests
|
||||
|
||||
Here's a quick description on writing test cases. We basically have three
|
||||
kinds of tests: the ones that test the curl tool, the ones that build small
|
||||
applications and test libcurl directly and the unit tests that test
|
||||
individual (possibly internal) functions.
|
||||
|
||||
3.1 test data
|
||||
|
||||
Each test has a master file that controls all the test data. What to read,
|
||||
what the protocol exchange should look like, what exit code to expect and
|
||||
what command line arguments to use etc.
|
||||
|
||||
These files are tests/data/test[num] where [num] is described in section 2
|
||||
of this document, and the XML-like file format of them is described in the
|
||||
separate tests/FILEFORMAT document.
|
||||
|
||||
3.2 curl tests
|
||||
|
||||
A test case that runs the curl tool and verifies that it gets the correct
|
||||
data, it sends the correct data, it uses the correct protocol primitives
|
||||
etc.
|
||||
|
||||
3.3 libcurl tests
|
||||
|
||||
The libcurl tests are identical to the curl ones, except that they use a
|
||||
specific and dedicated custom-built program to run instead of "curl". This
|
||||
tool is built from source code placed in tests/libtest and if you want to
|
||||
make a new libcurl test that is where you add your code.
|
||||
|
||||
3.4 unit tests
|
||||
|
||||
Unit tests are tests in the 13xx sequence and they are placed in tests/unit.
|
||||
There's a tests/unit/README describing the specific set of checks and macros
|
||||
that may be used when writing tests that verify behaviors of specific
|
||||
individual functions.
|
||||
|
||||
The unit tests depend on curl being built with debug enabled.
|
||||
|
||||
4. TODO
|
||||
|
||||
4.1 More protocols
|
||||
|
||||
Add tests for TELNET, LDAP, DICT...
|
||||
|
||||
4.2 SOCKS auth
|
||||
|
||||
SOCKS4/5 test deficiencies - no proxy authentication tests as SSH (the
|
||||
test mechanism) doesn't support them
|
||||
@@ -1,84 +0,0 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311616 (0xcfa60bc5140)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Aug 24 15:07:11 2031 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
|
||||
08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
|
||||
d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
|
||||
f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
|
||||
0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
|
||||
17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
|
||||
e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
|
||||
ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
|
||||
e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
|
||||
3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
|
||||
6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
|
||||
95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
|
||||
ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
|
||||
24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
|
||||
5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
|
||||
38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
|
||||
9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
|
||||
ff:83
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints: critical
|
||||
CA:TRUE
|
||||
X509v3 Key Usage: critical
|
||||
Certificate Sign, CRL Sign
|
||||
X509v3 Subject Key Identifier:
|
||||
12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
|
||||
76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
|
||||
d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
|
||||
1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
|
||||
f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
|
||||
e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
|
||||
28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
|
||||
aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
|
||||
1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
|
||||
24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
|
||||
27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
|
||||
af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
|
||||
b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
|
||||
f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
|
||||
d8:52:63:75
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
|
||||
1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
|
||||
YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
|
||||
6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
|
||||
6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
|
||||
gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
|
||||
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
|
||||
uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
|
||||
eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
|
||||
QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
|
||||
y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
|
||||
zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
|
||||
blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
|
||||
gdzYUmN1
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,11 +0,0 @@
|
||||
[ ca ]
|
||||
default_ca = EdelCurlRoot
|
||||
|
||||
[ EdelCurlRoot ]
|
||||
database = EdelCurlRoot-ca.db
|
||||
certificate = EdelCurlRoot-ca.crt
|
||||
private_key = EdelCurlRoot-ca.key
|
||||
crlnumber = EdelCurlRoot-ca.cnt
|
||||
default_md = sha1
|
||||
default_days = 365
|
||||
default_crl_days = 30
|
||||
@@ -1,84 +0,0 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311616 (0xcfa60bc5140)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Aug 24 15:07:11 2031 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e1:4c:d9:74:1a:a4:a3:42:57:a4:7a:2e:74:02:
|
||||
08:49:6a:6a:1d:db:de:c3:43:d6:48:60:12:30:ed:
|
||||
d6:6e:74:16:81:16:4e:50:b9:6c:b9:36:0d:19:a4:
|
||||
f7:85:99:40:46:26:46:33:86:ce:0c:27:71:e4:8f:
|
||||
0f:b4:3a:99:6d:af:78:48:b7:cb:c4:d3:60:7d:d0:
|
||||
17:6f:23:bc:89:c0:bc:16:b8:94:f0:b2:10:8d:c8:
|
||||
e0:35:97:ed:8f:c6:db:9b:cd:aa:f6:8c:45:dc:0f:
|
||||
ee:a0:78:12:be:f6:7d:f4:f7:b6:8c:4e:e5:7d:32:
|
||||
e8:f7:f7:1e:04:46:9e:08:cd:cb:ec:e2:9a:c3:35:
|
||||
3f:ce:a1:01:e3:10:0a:ec:d9:ab:13:09:eb:e6:39:
|
||||
6b:92:30:c7:08:bd:8a:32:ef:0b:b2:61:6f:11:43:
|
||||
95:cf:31:ea:19:01:cc:1a:6d:d2:d5:57:35:da:c0:
|
||||
ae:46:39:d3:33:ed:f8:c0:1e:ad:3d:68:6f:a8:53:
|
||||
24:ac:d6:f9:dd:2b:51:50:77:e4:b7:5d:ad:48:80:
|
||||
5d:65:57:e5:eb:07:82:7d:cb:72:4f:06:6a:34:d4:
|
||||
38:c8:6b:ed:8a:3a:68:5e:35:e3:78:14:da:5d:86:
|
||||
9f:e5:d4:1c:dd:90:c2:7c:a2:00:d4:95:65:04:85:
|
||||
ff:83
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Basic Constraints: critical
|
||||
CA:TRUE
|
||||
X509v3 Key Usage: critical
|
||||
Certificate Sign, CRL Sign
|
||||
X509v3 Subject Key Identifier:
|
||||
12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
d4:d0:22:19:78:2e:2e:1d:83:c6:79:89:c1:a8:23:43:4e:86:
|
||||
76:16:31:bd:b7:c0:44:2c:b9:2c:79:99:2f:02:48:33:1e:a7:
|
||||
d7:0e:d9:f1:cb:ed:39:1a:34:b3:50:af:c9:8d:64:bf:ff:72:
|
||||
1b:1d:e0:5d:40:3b:b5:00:7c:d1:78:ff:45:ee:d9:05:3f:32:
|
||||
f6:cd:f4:d3:79:58:d8:44:94:65:f5:c3:a9:5d:d8:13:d9:57:
|
||||
e7:13:18:fa:f3:72:0b:cf:a3:4a:f4:6e:5e:74:30:3c:cb:76:
|
||||
28:f9:44:9a:ba:3e:b7:3e:01:79:3e:cb:5c:df:5a:d4:6c:34:
|
||||
aa:bd:c0:6d:25:85:e5:28:f6:15:e1:9d:af:a7:f7:a7:6c:2a:
|
||||
1d:1d:93:1e:89:71:66:c7:0b:e4:ce:36:c1:21:c4:73:5d:2b:
|
||||
24:a9:3d:26:df:1c:e8:60:69:e3:82:98:c3:5b:91:9e:da:bd:
|
||||
27:ee:e0:fd:64:ea:7d:35:91:fd:5e:1e:33:82:24:39:7b:49:
|
||||
af:23:05:fc:6e:53:7e:07:69:f4:e7:e3:1f:f0:1c:59:87:4c:
|
||||
b6:74:c9:60:ed:f5:ab:a0:31:8a:05:d4:64:9f:1e:16:b6:9f:
|
||||
f8:7e:0d:ac:b7:d9:16:b9:b3:bc:0b:03:6b:24:e9:46:81:dc:
|
||||
d8:52:63:75
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkjCCAnqgAwIBAgIGDPpgvFFAMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0zMTA4MjQxNTA3MTFaMGgxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOFM2XQapKNCV6R6LnQCCElqah3b3sND
|
||||
1khgEjDt1m50FoEWTlC5bLk2DRmk94WZQEYmRjOGzgwnceSPD7Q6mW2veEi3y8TT
|
||||
YH3QF28jvInAvBa4lPCyEI3I4DWX7Y/G25vNqvaMRdwP7qB4Er72ffT3toxO5X0y
|
||||
6Pf3HgRGngjNy+zimsM1P86hAeMQCuzZqxMJ6+Y5a5Iwxwi9ijLvC7JhbxFDlc8x
|
||||
6hkBzBpt0tVXNdrArkY50zPt+MAerT1ob6hTJKzW+d0rUVB35LddrUiAXWVX5esH
|
||||
gn3Lck8GajTUOMhr7Yo6aF4143gU2l2Gn+XUHN2QwnyiANSVZQSF/4MCAwEAAaNC
|
||||
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLK
|
||||
uktGBKd1iizoDlSUvBJlpnvOMA0GCSqGSIb3DQEBBQUAA4IBAQDU0CIZeC4uHYPG
|
||||
eYnBqCNDToZ2FjG9t8BELLkseZkvAkgzHqfXDtnxy+05GjSzUK/JjWS//3IbHeBd
|
||||
QDu1AHzReP9F7tkFPzL2zfTTeVjYRJRl9cOpXdgT2VfnExj683ILz6NK9G5edDA8
|
||||
y3Yo+USauj63PgF5Pstc31rUbDSqvcBtJYXlKPYV4Z2vp/enbCodHZMeiXFmxwvk
|
||||
zjbBIcRzXSskqT0m3xzoYGnjgpjDW5Ge2r0n7uD9ZOp9NZH9Xh4zgiQ5e0mvIwX8
|
||||
blN+B2n05+Mf8BxZh0y2dMlg7fWroDGKBdRknx4Wtp/4fg2st9kWubO8CwNrJOlG
|
||||
gdzYUmN1
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,17 +0,0 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICrTCCAZUCAQAwaDELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
|
||||
cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAkBgNVBAMMHU5vcnRoZXJu
|
||||
IE5vd2hlcmUgVHJ1c3QgQW5jaG9yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZOULlsuTYN
|
||||
GaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU8LIQjcjg
|
||||
NZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKawzU/zqEB
|
||||
4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCuRjnTM+34
|
||||
wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvtijpoXjXj
|
||||
eBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEB
|
||||
ANpolqnyNQ2zhqURf1ImBOTKLqN77neGe01rdkMrQfNP+ZSr5pxcoOZgMjUGrhyQ
|
||||
C6RWexcjwMFvr+16bsEyiBgw/PxTziw6ozvJZkDVQanKZet9+6o8P6AzfjOfwIiU
|
||||
8OkLYDaNJ0M807fTNFWdt/yDY1WNfNAxIX3gMMJ1dRvvLvgIJVE4RRAaW/pEMHky
|
||||
sQTfExs99Xooqh3E6CWyR1bVHWuid0a02LcD2Q0bKTBmi3xyBjEaq3vXxS6j1fDs
|
||||
aWpwznwuuX+J7K+MHYJH9DQIg/QY6rQzxokZ92wJGFdzL3m+kou6++OAPu1plpTL
|
||||
im5n/e87gdjerEJgCqoP4S8=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
Binary file not shown.
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA4UzZdBqko0JXpHoudAIISWpqHdvew0PWSGASMO3WbnQWgRZO
|
||||
ULlsuTYNGaT3hZlARiZGM4bODCdx5I8PtDqZba94SLfLxNNgfdAXbyO8icC8FriU
|
||||
8LIQjcjgNZftj8bbm82q9oxF3A/uoHgSvvZ99Pe2jE7lfTLo9/ceBEaeCM3L7OKa
|
||||
wzU/zqEB4xAK7NmrEwnr5jlrkjDHCL2KMu8LsmFvEUOVzzHqGQHMGm3S1Vc12sCu
|
||||
RjnTM+34wB6tPWhvqFMkrNb53StRUHfkt12tSIBdZVfl6weCfctyTwZqNNQ4yGvt
|
||||
ijpoXjXjeBTaXYaf5dQc3ZDCfKIA1JVlBIX/gwIDAQABAoIBAQDGGcWGgjrLVnUr
|
||||
qUcZOARDUW9XK9IWjZpn7xlvrmECo8552Lwp3LDNtcoVB2mhLhxG0jad7eVU6IYL
|
||||
ewNK7M+lk0lHX1yrh1Trq0I/tgN8eFyp+cj0Tw2hLcR/O0RmTGsi9tdhi/uNQPEI
|
||||
ZivNf31HHVyEyIae7FnOVpotFk6022EElQd8F8GeeKpo9pQs8sHAVOUVC8Mf2sr+
|
||||
bFyo9nzU0XkSay72ozU9O5Iw2d5aVrN5f3NS+JG9OpzvouNwkaAMOUsLVvZlUTqY
|
||||
0ve5CY2rB3D72h4GJfM2aHi8hwj56yBOsyIhBSXNYJM8nXKEbJaK5ulVv/a7KKTk
|
||||
KzSdk/mJAoGBAPXPLLJgx0mZKXNXqSvSsvgVzcpLrJh8figoF4rMzq8+5bN9Y6KU
|
||||
Lvb2ODIm/oGCIiGDdFTYqBJ0/EpauaAJgdzIwYnMZXmVB97pmwni9KrDPDwWTOqS
|
||||
3Yzh0t4C8DAgwZE4X6Ad/fmn7V06dfJZZJynL9exPp8RF7ptJ2yOnlbdAoGBAOqk
|
||||
AfRWuPGeZL9rFkd45+j03MDHglE2xKhsbRobHANItHo7r26D/Ov7QkM+lGlqdrNg
|
||||
tTPPtHs50Ek+Sb0X31/Fj45IqQroxctpbZAaJchVl88tvKXA8fkk14a9GLiow3Bk
|
||||
UGA5DFRmsIMXEengzRJoxcHAbbciGWdeSneH49nfAoGAVMypHcyXU8Ob8ieuu+iP
|
||||
R1i2SvC6VUy1dQMHxCGNuBVZxwcd5Ut7vEUK8/pR2LndLnScIF0x9lQXaUtNOHGv
|
||||
NEypv/EcnMoWEgfDLbD3OSXrVMtYs6ABAIYzadXXqLLUNFYfXyyZnpQZJg1x/S5r
|
||||
sENZFO8XrGaIKg9YB3JYG50CgYBUQweMpmQOKNKHRz6d9hZaOyzXcg4jeiaPUTiw
|
||||
6lFaAI8HYk2yw2VdnUKDgYKshJYR/sWz0IBAzFc3Jk42wM7vxrOx5fgGuebmEHtP
|
||||
B4TP96TnusYHRE3hKdDYSyoIjlp5Dx0qIPKDkMkMmolNUvRyCvwRgzgjTvSOgXb+
|
||||
i+dQQwKBgQCKn04xYbhkMOiHxNP/DUf6+XmV1V7KbpjIySychbxcTKCV98c9q491
|
||||
YjF8FJgi2JdV5XOHWaKti2Qg/tYz7CBtqkQdeNjtfKkOUA8ZyZeiNZdPIza9tzmr
|
||||
t6mCthH1oT3jyiddhSYxyfUBW3olPhBPj8YBblmq1QHE8y2j3CNjvw==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,18 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = Northern Nowhere Trust Anchor
|
||||
[ x509v3 ]
|
||||
basicConstraints = critical,CA:true
|
||||
keyUsage = critical,keyCertSign,cRLSign
|
||||
subjectKeyIdentifier = hash
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
SUBDIRS = scripts
|
||||
|
||||
CERTCONFIGS = \
|
||||
EdelCurlRoot-ca.prm \
|
||||
EdelCurlRoot-ca.cnf \
|
||||
Server-localhost-sv.prm \
|
||||
Server-localhost.nn-sv.prm \
|
||||
Server-localhost0h-sv.prm
|
||||
|
||||
GENERATEDCERTS = \
|
||||
EdelCurlRoot-ca.cacert \
|
||||
EdelCurlRoot-ca.crt \
|
||||
EdelCurlRoot-ca.csr \
|
||||
EdelCurlRoot-ca.der \
|
||||
EdelCurlRoot-ca.key \
|
||||
Server-localhost-sv.crl \
|
||||
Server-localhost-sv.crt \
|
||||
Server-localhost-sv.csr \
|
||||
Server-localhost-sv.der \
|
||||
Server-localhost-sv.dhp \
|
||||
Server-localhost-sv.key \
|
||||
Server-localhost-sv.pem \
|
||||
Server-localhost-sv.pub.der \
|
||||
Server-localhost-sv.pub.pem \
|
||||
Server-localhost.nn-sv.crl \
|
||||
Server-localhost.nn-sv.crt \
|
||||
Server-localhost.nn-sv.csr \
|
||||
Server-localhost.nn-sv.der \
|
||||
Server-localhost.nn-sv.dhp \
|
||||
Server-localhost.nn-sv.key \
|
||||
Server-localhost.nn-sv.pem \
|
||||
Server-localhost.nn-sv.pub.der \
|
||||
Server-localhost.nn-sv.pub.pem \
|
||||
Server-localhost0h-sv.crl \
|
||||
Server-localhost0h-sv.crt \
|
||||
Server-localhost0h-sv.csr \
|
||||
Server-localhost0h-sv.der \
|
||||
Server-localhost0h-sv.dhp \
|
||||
Server-localhost0h-sv.key \
|
||||
Server-localhost0h-sv.pem \
|
||||
Server-localhost0h-sv.pub.der \
|
||||
Server-localhost0h-sv.pub.pem
|
||||
|
||||
SRPFILES = \
|
||||
srp-verifier-conf \
|
||||
srp-verifier-db
|
||||
|
||||
EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
|
||||
|
||||
# Rebuild the certificates
|
||||
|
||||
clean-certs:
|
||||
cd $(srcdir); rm -f $(GENERATEDCERTS)
|
||||
|
||||
build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
|
||||
$(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
|
||||
|
||||
$(srcdir)/EdelCurlRoot-ca.cacert:
|
||||
cd $(srcdir); scripts/genroot.sh EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
|
||||
@@ -1,793 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = tests/certs
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
$(top_srcdir)/m4/curl-override.m4 \
|
||||
$(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/xc-am-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-cc-check.m4 \
|
||||
$(top_srcdir)/m4/xc-lt-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-translit.m4 \
|
||||
$(top_srcdir)/m4/xc-val-flgs.m4 \
|
||||
$(top_srcdir)/m4/zz40-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz50-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
|
||||
CURLVERSION = @CURLVERSION@
|
||||
CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
|
||||
CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
|
||||
CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
|
||||
CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
|
||||
CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
|
||||
CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
|
||||
CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
|
||||
CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
|
||||
CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
|
||||
CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
|
||||
CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
|
||||
CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
|
||||
CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
|
||||
CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
|
||||
CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
|
||||
CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
|
||||
CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
|
||||
LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
|
||||
LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MANOPT = @MANOPT@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NROFF = @NROFF@
|
||||
NSS_LIBS = @NSS_LIBS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKGADD_NAME = @PKGADD_NAME@
|
||||
PKGADD_PKG = @PKGADD_PKG@
|
||||
PKGADD_VENDOR = @PKGADD_VENDOR@
|
||||
PKGCONFIG = @PKGCONFIG@
|
||||
RANDOM_FILE = @RANDOM_FILE@
|
||||
RANLIB = @RANLIB@
|
||||
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
libext = @libext@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
SUBDIRS = scripts
|
||||
CERTCONFIGS = \
|
||||
EdelCurlRoot-ca.prm \
|
||||
EdelCurlRoot-ca.cnf \
|
||||
Server-localhost-sv.prm \
|
||||
Server-localhost.nn-sv.prm \
|
||||
Server-localhost0h-sv.prm
|
||||
|
||||
GENERATEDCERTS = \
|
||||
EdelCurlRoot-ca.cacert \
|
||||
EdelCurlRoot-ca.crt \
|
||||
EdelCurlRoot-ca.csr \
|
||||
EdelCurlRoot-ca.der \
|
||||
EdelCurlRoot-ca.key \
|
||||
Server-localhost-sv.crl \
|
||||
Server-localhost-sv.crt \
|
||||
Server-localhost-sv.csr \
|
||||
Server-localhost-sv.der \
|
||||
Server-localhost-sv.dhp \
|
||||
Server-localhost-sv.key \
|
||||
Server-localhost-sv.pem \
|
||||
Server-localhost-sv.pub.der \
|
||||
Server-localhost-sv.pub.pem \
|
||||
Server-localhost.nn-sv.crl \
|
||||
Server-localhost.nn-sv.crt \
|
||||
Server-localhost.nn-sv.csr \
|
||||
Server-localhost.nn-sv.der \
|
||||
Server-localhost.nn-sv.dhp \
|
||||
Server-localhost.nn-sv.key \
|
||||
Server-localhost.nn-sv.pem \
|
||||
Server-localhost.nn-sv.pub.der \
|
||||
Server-localhost.nn-sv.pub.pem \
|
||||
Server-localhost0h-sv.crl \
|
||||
Server-localhost0h-sv.crt \
|
||||
Server-localhost0h-sv.csr \
|
||||
Server-localhost0h-sv.der \
|
||||
Server-localhost0h-sv.dhp \
|
||||
Server-localhost0h-sv.key \
|
||||
Server-localhost0h-sv.pem \
|
||||
Server-localhost0h-sv.pub.der \
|
||||
Server-localhost0h-sv.pub.pem
|
||||
|
||||
SRPFILES = \
|
||||
srp-verifier-conf \
|
||||
srp-verifier-db
|
||||
|
||||
EXTRA_DIST = $(CERTCONFIGS) $(GENERATEDCERTS) $(SRPFILES)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign tests/certs/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-am clean clean-generic clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Rebuild the certificates
|
||||
|
||||
clean-certs:
|
||||
cd $(srcdir); rm -f $(GENERATEDCERTS)
|
||||
|
||||
build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
|
||||
$(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
|
||||
|
||||
$(srcdir)/EdelCurlRoot-ca.cacert:
|
||||
cd $(srcdir); scripts/genroot.sh EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost.nn-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost.nn EdelCurlRoot
|
||||
|
||||
$(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
|
||||
cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,21 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIDbzCCAlcCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
|
||||
BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
|
||||
BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
|
||||
MTFaFw0xNTA0MjAxNTA3MTFaMIIBqTAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
|
||||
FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
|
||||
WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
|
||||
NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
|
||||
NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
|
||||
MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
|
||||
MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
|
||||
MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
|
||||
MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
|
||||
Fw0xNTAzMjExNTA3MTFaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQUFAAOC
|
||||
AQEAllslrhWUoq49PC+KQghVDAeFREP3pKPUlSebVVR8PCtCKrFtc53dUaTl8qhK
|
||||
1wOLodr80lfr2kEgzTEDt2CfXryl3orLPeMWe0OWTBsPbuwj+d7m3uq4B43laqJn
|
||||
JM5ebRvzHWMJkVNkwiXiadPTW5ZMUqu2Bs97rdcjklUrEcamf9aMLqb6sPGtU4EO
|
||||
o/GxGW2eypYwncFmzAc5W3NDRePGPhN5rUDfqm5Id4T9FKmGcNmI7qlLQi+jp23F
|
||||
V6RvrqANIemopQQ4kYGy7pzilDYm6+R+fPCIh2H/0eqCDY8NdjygXtWW+pJ58axV
|
||||
MPZ2mFPcH5UHiqmi8kRstnA8KQ==
|
||||
-----END X509 CRL-----
|
||||
@@ -1,80 +0,0 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311627 (0xcfa60bc514b)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
|
||||
b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
|
||||
5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
|
||||
6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
|
||||
68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
|
||||
a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
|
||||
62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
|
||||
42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
|
||||
11:d1:9e:ce:be:1e:fe:cf:37
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
|
||||
e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
|
||||
be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
|
||||
29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
|
||||
39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
|
||||
04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
|
||||
1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
|
||||
70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
|
||||
2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
|
||||
fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
|
||||
80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
|
||||
6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
|
||||
24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
|
||||
88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
|
||||
99:36:52:69
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
|
||||
ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
|
||||
Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
|
||||
nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
|
||||
VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
|
||||
BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
|
||||
Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
|
||||
AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
|
||||
7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
|
||||
odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
|
||||
JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
|
||||
0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
|
||||
e0Av3OkojGm+63FKwjBQmTZSaQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,11 +0,0 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
|
||||
Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
|
||||
Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
|
||||
lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
|
||||
AHuPnBHRns6+Hv7PNwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAsJ+ypJAE5YiR
|
||||
A1niVNXKoqXmIQsXGJv9BA39AjT+cdqvdd+WTKCaZ9QXucDArhG9B9Dp66bfSgvT
|
||||
WVz6F85ju5HQekZrS2ZxdR1+muWAFE/vDgi22QwTysXvTWUfsqBQ0ZGEmdzyPJJq
|
||||
7AGzbAWx8JDhgGg2jStvQJBLhtYxhoY=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
|
||||
77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
|
||||
Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
|
||||
AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
|
||||
WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
|
||||
t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
|
||||
TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
|
||||
0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
|
||||
umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
|
||||
doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
|
||||
3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
|
||||
wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
|
||||
gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,120 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
subjectAltName = DNS:localhost
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certficate
|
||||
# some dhparam
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXgIBAAKBgQC6X0tpdDGZTfS0typluLcxwTjPNje7XhjjUh9SqlolLwxmiDKw
|
||||
77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grKlBbUK2oC46Gzx9HQBrj/39zg
|
||||
Mirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/AHuPnBHRns6+Hv7PNwIDAQAB
|
||||
AoGBAJdWRGVIPfJP1BJe3eWl3dRgI2JXk1/pY+pLSDYXMIYbM0Wa+RamPRdksPE1
|
||||
WadM+zPLNENP0L+/iERe/wiq7sNxKQLwH5eE3tUxC+iC8GO6gQ2zHaWVNu3R79CM
|
||||
t8YZhlmG2o+xC4CGYzuITgPE16m24CYauLZHO/YVDzG6yNApAkEA6K0db5bZmIaU
|
||||
TJW/jEnPJSubDx8kE1YncTOAKaAeoJwaaSfFphVKNGNrZHu3jBhKFgVNBNxGUWrW
|
||||
0pIkDrb3hQJBAM0N7+ghZ/7vaOoKqYHQI2z8SgPsUjQjmubCBALe/Ys3kg9PPpyz
|
||||
umJSAOYjC4X1dSlkAkciJqRS0Y6uKgSH4osCQQCVIWftft1GsnNYxt43t5MKOvGu
|
||||
doIz1pN/LcgmZddbj9IptfErqxedjl9lzxnstCDADnO3+ssjIfxAiKSNvd3VAkA3
|
||||
3yFMTbXpZ9BdXPRc05qjeoasVPr9C+qMD7dKFPpesZCRrVTxG6OgYJmwG0JriLsY
|
||||
wRBB05NV2N8SknAOdfwLAkEAw5Hqxc/Xlh6xhy9tBdJXDtuptV10mg6EbO98x9/7
|
||||
gyuAArSguhXna+aRqjLRelCwVB9f9aZ1XVoDKWVCsnfCbQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311627 (0xcfa60bc514b)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:ba:5f:4b:69:74:31:99:4d:f4:b4:b7:2a:65:b8:
|
||||
b7:31:c1:38:cf:36:37:bb:5e:18:e3:52:1f:52:aa:
|
||||
5a:25:2f:0c:66:88:32:b0:ef:b2:2c:90:38:5e:6e:
|
||||
6f:0e:e4:3b:3f:f0:2e:f1:7a:3d:5e:c3:64:86:3f:
|
||||
68:b7:cf:0b:b3:ea:0a:ca:94:16:d4:2b:6a:02:e3:
|
||||
a1:b3:c7:d1:d0:06:b8:ff:df:dc:e0:32:2a:e7:dd:
|
||||
62:cc:71:c4:e8:cf:9d:de:5c:75:69:9d:b6:ce:e2:
|
||||
42:d8:a7:bd:50:54:78:2d:55:67:7f:00:7b:8f:9c:
|
||||
11:d1:9e:ce:be:1e:fe:cf:37
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
7E:42:8D:AC:2E:93:AD:4C:E0:09:AC:C6:08:F1:82:E0:B7:B7:C6:7F
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
00:fe:c4:fc:4b:28:b8:bc:39:8c:6f:f1:72:d3:76:da:28:27:
|
||||
e2:97:94:bb:ad:2f:91:c4:db:df:33:4b:48:4e:97:5b:4c:4c:
|
||||
be:fc:e4:b7:19:5c:b8:83:6e:ef:2c:b0:d5:7c:fc:0d:cb:7e:
|
||||
29:ed:fd:4d:ef:05:1c:89:15:31:78:9b:18:29:d3:37:83:c7:
|
||||
39:f4:78:27:b7:00:75:d1:fb:f0:29:88:79:e4:e9:a7:d4:65:
|
||||
04:bf:d5:a1:dc:05:b2:17:c4:a9:da:61:10:22:5f:8f:50:fc:
|
||||
1f:ab:f6:39:dd:ab:35:a6:94:54:63:5c:6d:25:f0:dc:3a:0a:
|
||||
70:4e:49:ef:be:fa:2c:0a:cd:ce:a6:2d:26:cd:f8:24:89:77:
|
||||
2c:ea:6e:19:b6:5c:8c:1a:08:ea:a8:9f:2c:1b:c7:fc:13:6c:
|
||||
fe:a7:90:08:e5:98:83:30:52:86:ac:83:0b:cb:25:92:21:94:
|
||||
80:13:d7:e8:d0:42:56:83:55:d3:09:9b:e8:c5:96:82:15:64:
|
||||
6b:83:77:eb:99:e5:52:dc:1b:36:29:a0:c9:da:8b:d3:0d:77:
|
||||
24:f2:c3:df:2e:c4:93:e0:34:47:a9:9b:54:d3:75:d5:c7:de:
|
||||
88:a1:ef:7b:40:2f:dc:e9:28:8c:69:be:eb:71:4a:c2:30:50:
|
||||
99:36:52:69
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDPzCCAiegAwIBAgIGDPpgvFFLMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
|
||||
ALpfS2l0MZlN9LS3KmW4tzHBOM82N7teGONSH1KqWiUvDGaIMrDvsiyQOF5ubw7k
|
||||
Oz/wLvF6PV7DZIY/aLfPC7PqCsqUFtQragLjobPH0dAGuP/f3OAyKufdYsxxxOjP
|
||||
nd5cdWmdts7iQtinvVBUeC1VZ38Ae4+cEdGezr4e/s83AgMBAAGjgYYwgYMwFAYD
|
||||
VR0RBA0wC4IJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEF
|
||||
BQcDATAdBgNVHQ4EFgQUfkKNrC6TrUzgCazGCPGC4Le3xn8wHwYDVR0jBBgwFoAU
|
||||
Esq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOC
|
||||
AQEAAP7E/EsouLw5jG/xctN22ign4peUu60vkcTb3zNLSE6XW0xMvvzktxlcuINu
|
||||
7yyw1Xz8Dct+Ke39Te8FHIkVMXibGCnTN4PHOfR4J7cAddH78CmIeeTpp9RlBL/V
|
||||
odwFshfEqdphECJfj1D8H6v2Od2rNaaUVGNcbSXw3DoKcE5J7776LArNzqYtJs34
|
||||
JIl3LOpuGbZcjBoI6qifLBvH/BNs/qeQCOWYgzBShqyDC8slkiGUgBPX6NBCVoNV
|
||||
0wmb6MWWghVka4N365nlUtwbNimgydqL0w13JPLD3y7Ek+A0R6mbVNN11cfeiKHv
|
||||
e0Av3OkojGm+63FKwjBQmTZSaQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,25 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
subjectAltName = DNS:localhost
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certficate
|
||||
# some dhparam
|
||||
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6X0tpdDGZTfS0typluLcxwTjP
|
||||
Nje7XhjjUh9SqlolLwxmiDKw77IskDhebm8O5Ds/8C7xej1ew2SGP2i3zwuz6grK
|
||||
lBbUK2oC46Gzx9HQBrj/39zgMirn3WLMccToz53eXHVpnbbO4kLYp71QVHgtVWd/
|
||||
AHuPnBHRns6+Hv7PNwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -1,21 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIDiDCCAnACAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
|
||||
BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
|
||||
BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
|
||||
MTFaFw0xNTA0MjAxNTA3MTFaMIIBwjAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
|
||||
FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
|
||||
WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
|
||||
NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
|
||||
NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
|
||||
MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
|
||||
MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
|
||||
MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
|
||||
MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
|
||||
Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWqAOMAwwCgYD
|
||||
VR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBANd1Fp3lPmLALcGvEB4kB4Uo6vhM
|
||||
ZWcAUE96oerpW0OnZ6v7o8ghLvs/pJfIoD+7hV3RuAgUUBqv2N8VTaL2IYarom/H
|
||||
CK78oLrIwwej/7K1pIfG53bJuaYyim5Lpl/YzGwhdC2vO2kBXHC1gVj5hN3uM/2A
|
||||
+cFPTDMsDU7szGq1bHObEKumXXzG5LfwGJGaHNGdvglV7zKthRjk/plYKE4/F0Ah
|
||||
jRQys6crClCKC5vug1GbzKbQue/Pbw1e3Rm/e0DVeOCREdvcHat43SIPf5yUYLsz
|
||||
b7P7pIOIoSgiIgEdbmj2pi1xdtxrYRyJJk0H7XQJHDehkyZsy6l62mKam/E=
|
||||
-----END X509 CRL-----
|
||||
@@ -1,80 +0,0 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311644 (0xcfa60bc515c)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost.nn
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
|
||||
50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
|
||||
c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
|
||||
dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
|
||||
6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
|
||||
39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
|
||||
cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
|
||||
e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
|
||||
65:29:09:ca:a2:dc:9e:ab:89
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost.nn
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
|
||||
e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
|
||||
a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
|
||||
73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
|
||||
5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
|
||||
d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
|
||||
98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
|
||||
30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
|
||||
4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
|
||||
2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
|
||||
8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
|
||||
61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
|
||||
75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
|
||||
03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
|
||||
d0:ee:22:39
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
|
||||
AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
|
||||
3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
|
||||
aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
|
||||
FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
|
||||
BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
|
||||
BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
|
||||
AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
|
||||
nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
|
||||
p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
|
||||
DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
|
||||
O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
|
||||
OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,11 +0,0 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
|
||||
cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
|
||||
dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArMwRcHQp7XsARIrARwNQ
|
||||
nW9Rt8l73X7uKWdbkZvHxeadWT5rMyW3fDl8hHndFZjnJ2OTEDo6QKDd0B5uYPQe
|
||||
pPceCguERHfnBRY5qt69Hse8yeFOjIYcP9bN4/JoAlsXU0lRKaiJ89DhXnEHnxVH
|
||||
CEDprEnkIaxlKQnKotyeq4kCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBADnob1ds
|
||||
8MytEcgSZdkgP4iQ2L+aPXTPBqTThaV7Zto1mAhwG/D6rTiGq6t+IlZQNoDdZPp3
|
||||
r1WDQJj6ed54xUY4Im4m1Np8oURamt5NJMKURDbv0xOQHW8EOoN+F8rfKyu2Hk1O
|
||||
hJulv+cBz75yi3+LVu+IEuSFQIQUZiy6V+Il
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
|
||||
Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
|
||||
hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
|
||||
AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
|
||||
TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
|
||||
yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
|
||||
+wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
|
||||
A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
|
||||
biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
|
||||
kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
|
||||
b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
|
||||
3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
|
||||
Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,120 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
subjectAltName = DNS:localhost.nn
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost.nn
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certficate
|
||||
# some dhparam
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQCszBFwdCntewBEisBHA1Cdb1G3yXvdfu4pZ1uRm8fF5p1ZPmsz
|
||||
Jbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4KC4REd+cFFjmq3r0ex7zJ4U6M
|
||||
hhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOmsSeQhrGUpCcqi3J6riQIDAQAB
|
||||
AoGAK7nYD+TVV0rw3mdeEJo+JBivTRqnRX2BNuj4uvf4rZOV7adl6SN6Mu05HSzZ
|
||||
TUXL+KOx60FQzFnox2lr9QzRU/LelLQ3H9fgVTVmGUCEAoDVRoWas8XlYGZsiHZ/
|
||||
yJn+9Z3yQYpufSb0LQiSt73sgrTNPu50gMxe/ZSAbSscyyECQQDV8juKzWmizlTh
|
||||
+wVs/pihE0+BX1BRCsezs7FCdDEWle3XidBtYlYyUIm5wx6v8xM/F7Q/nwgymOnV
|
||||
A62PtfyjAkEAzsM3DsuJ9dG5n+EPTH3kDdfr0eYy76XPYz4HK8/FgiKPWy55BRCH
|
||||
biLcbDAe06olJiCzEvwggFigthrIqj0t4wJBALDTUi74c3SiADn+FI/vJQsMQMv2
|
||||
kRVKSZ/WxozcJ645IKjiOKgPfJp9QjeMcxKNXrzoxItIz6eyBqGONqbujO0CQQCh
|
||||
b6azdJR5TJEklfL+BGVlsas8rgIjP1FX6Xxr5sQNwbIwvW5cV/WGNs3n4wKOvZBX
|
||||
3rwzHIy76XdB+FOpKC+FAkBDVbicC19LE6+tBzOyx4uTEm3N7N8vh566VaOpok02
|
||||
Io7F/WYL7WSCXAtvmueWV+FJyVUMN1f2nWfWqaEXP2ag
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311644 (0xcfa60bc515c)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost.nn
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:ac:cc:11:70:74:29:ed:7b:00:44:8a:c0:47:03:
|
||||
50:9d:6f:51:b7:c9:7b:dd:7e:ee:29:67:5b:91:9b:
|
||||
c7:c5:e6:9d:59:3e:6b:33:25:b7:7c:39:7c:84:79:
|
||||
dd:15:98:e7:27:63:93:10:3a:3a:40:a0:dd:d0:1e:
|
||||
6e:60:f4:1e:a4:f7:1e:0a:0b:84:44:77:e7:05:16:
|
||||
39:aa:de:bd:1e:c7:bc:c9:e1:4e:8c:86:1c:3f:d6:
|
||||
cd:e3:f2:68:02:5b:17:53:49:51:29:a8:89:f3:d0:
|
||||
e1:5e:71:07:9f:15:47:08:40:e9:ac:49:e4:21:ac:
|
||||
65:29:09:ca:a2:dc:9e:ab:89
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost.nn
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
12:AF:44:46:B1:04:69:61:64:83:39:A2:BD:5D:97:2B:F4:1D:D4:6C
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
44:54:d7:d7:75:14:60:a5:1a:1d:1e:a9:dc:6f:b1:b1:d8:13:
|
||||
e2:10:22:9a:f5:ca:b6:38:3c:d9:ac:2e:dc:ce:38:bc:cc:38:
|
||||
a1:cc:a8:9c:73:37:f9:b6:a8:42:87:d9:80:21:45:81:43:9d:
|
||||
73:3c:67:cf:cd:c5:c3:91:df:60:6b:6d:69:f9:be:a1:92:cc:
|
||||
5d:ea:bc:67:f3:c7:bc:ea:41:d1:11:7b:e3:f1:b8:a7:8d:9a:
|
||||
d0:23:6c:df:0e:2a:35:98:50:c1:a6:8b:d2:07:aa:a6:2f:cb:
|
||||
98:a9:a3:8d:a0:8c:87:ab:ec:e1:c5:0b:25:e2:e9:a9:08:13:
|
||||
30:86:1b:e5:b6:ac:03:85:35:0c:9a:5d:5b:82:c4:04:6a:05:
|
||||
4c:f3:f7:b3:b5:ac:92:3b:46:71:a8:7f:54:c7:96:37:dc:38:
|
||||
2c:a2:18:23:10:00:de:f8:21:40:52:99:94:ad:b2:b6:e5:87:
|
||||
8e:29:0b:3b:b3:8a:52:67:54:dc:0a:e9:75:60:33:ff:13:9a:
|
||||
61:a4:15:0c:d0:6f:de:0d:06:23:a8:44:ad:f0:68:60:93:6b:
|
||||
75:06:24:5b:47:9a:b9:3a:ef:d9:4f:df:31:d5:65:3a:e2:94:
|
||||
03:be:88:94:49:7c:6a:d0:da:c0:d0:62:81:f5:61:50:96:5a:
|
||||
d0:ee:22:39
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDRTCCAi2gAwIBAgIGDPpgvFFcMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFcxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
|
||||
AoGBAKzMEXB0Ke17AESKwEcDUJ1vUbfJe91+7ilnW5Gbx8XmnVk+azMlt3w5fIR5
|
||||
3RWY5ydjkxA6OkCg3dAebmD0HqT3HgoLhER35wUWOarevR7HvMnhToyGHD/WzePy
|
||||
aAJbF1NJUSmoifPQ4V5xB58VRwhA6axJ5CGsZSkJyqLcnquJAgMBAAGjgYkwgYYw
|
||||
FwYDVR0RBBAwDoIMbG9jYWxob3N0Lm5uMAsGA1UdDwQEAwIDqDATBgNVHSUEDDAK
|
||||
BggrBgEFBQcDATAdBgNVHQ4EFgQUEq9ERrEEaWFkgzmivV2XK/Qd1GwwHwYDVR0j
|
||||
BBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADANBgkqhkiG9w0B
|
||||
AQUFAAOCAQEARFTX13UUYKUaHR6p3G+xsdgT4hAimvXKtjg82awu3M44vMw4ocyo
|
||||
nHM3+baoQofZgCFFgUOdczxnz83Fw5HfYGttafm+oZLMXeq8Z/PHvOpB0RF74/G4
|
||||
p42a0CNs3w4qNZhQwaaL0geqpi/LmKmjjaCMh6vs4cULJeLpqQgTMIYb5basA4U1
|
||||
DJpdW4LEBGoFTPP3s7WskjtGcah/VMeWN9w4LKIYIxAA3vghQFKZlK2ytuWHjikL
|
||||
O7OKUmdU3ArpdWAz/xOaYaQVDNBv3g0GI6hErfBoYJNrdQYkW0eauTrv2U/fMdVl
|
||||
OuKUA76IlEl8atDawNBigfVhUJZa0O4iOQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,25 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
subjectAltName = DNS:localhost.nn
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost.nn
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certficate
|
||||
# some dhparam
|
||||
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCszBFwdCntewBEisBHA1Cdb1G3
|
||||
yXvdfu4pZ1uRm8fF5p1ZPmszJbd8OXyEed0VmOcnY5MQOjpAoN3QHm5g9B6k9x4K
|
||||
C4REd+cFFjmq3r0ex7zJ4U6Mhhw/1s3j8mgCWxdTSVEpqInz0OFecQefFUcIQOms
|
||||
SeQhrGUpCcqi3J6riQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -1,22 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIDoTCCAokCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCTk4xMTAvBgNV
|
||||
BAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJjAk
|
||||
BgNVBAMMHU5vcnRoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yFw0xNTAzMjExNTA3
|
||||
MTFaFw0xNTA0MjAxNTA3MTFaMIIB2zAXAgYM+ly45CIXDTE1MDMyMTEzMTQ1N1ow
|
||||
FwIGDPpcwXH8Fw0xNTAzMjExMzE1NTNaMBcCBgz6XO7ujBcNMTUwMzIxMTMyMDUx
|
||||
WjAXAgYM+lzu7p0XDTE1MDMyMTEzMjA1MVowFwIGDPpc7u6uFw0xNTAzMjExMzIw
|
||||
NTFaMBcCBgz6XZyD1RcNMTUwMzIxMTMzOTQ5WjAXAgYM+l4OXa8XDTE1MDMyMTEz
|
||||
NTIxNVowFwIGDPpeJlPZFw0xNTAzMjExMzU0NTJaMBcCBgz6XiZT6hcNMTUwMzIx
|
||||
MTM1NDUyWjAXAgYM+l4mU/sXDTE1MDMyMTEzNTQ1MlowFwIGDPpemKKEFw0xNTAz
|
||||
MjExNDA3MjFaMBcCBgz6XpiilRcNMTUwMzIxMTQwNzIxWjAXAgYM+l6YoqYXDTE1
|
||||
MDMyMTE0MDcyMVowFwIGDPpffssxFw0xNTAzMjExNDMyMzBaMBcCBgz6X37yUxcN
|
||||
MTUwMzIxMTQzMjMxWjAXAgYM+l9+8mYXDTE1MDMyMTE0MzIzMVowFwIGDPpgvFFL
|
||||
Fw0xNTAzMjExNTA3MTFaMBcCBgz6YLxRXBcNMTUwMzIxMTUwNzExWjAXAgYM+mC8
|
||||
UW4XDTE1MDMyMTE1MDcxMVqgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUA
|
||||
A4IBAQDER99gBe9w8a9X1pQQnzC87kYnW7R0K8wFr4KqCYP0De8tKxhCGrXaoQDK
|
||||
AvHQcT3RpCR5PAK5J1InxlCumJJjvo39OLTsaCbSyoynmAMGCXS0earSL83biquG
|
||||
jJ29ROXukT3fGE6HO+cKAaHyHeJa6OZEibmCvCls/YvvQTW2jlceOZmi22AL3jYN
|
||||
w6UVHRpbHDHupF5YxhwFG1GVTOd9cuik8CqVxPkOfIxeQbEV+qEiDWzjyy2aU3X7
|
||||
dLhZE47P5tYgb8nIsXb5PATqiK9vdv4EOyVKiiCmyFemrGGU7MqbTtTjJVB9nS2R
|
||||
QMWLS24xr3IcHt7FOX1w8UF/GXiP
|
||||
-----END X509 CRL-----
|
||||
@@ -1,80 +0,0 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311662 (0xcfa60bc516e)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
|
||||
57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
|
||||
e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
|
||||
6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
|
||||
86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
|
||||
c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
|
||||
4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
|
||||
7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
|
||||
cd:9f:a7:e0:78:db:15:bc:3b
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
|
||||
dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
|
||||
66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
|
||||
52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
|
||||
49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
|
||||
36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
|
||||
05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
|
||||
49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
|
||||
d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
|
||||
fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
|
||||
67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
|
||||
ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
|
||||
f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
|
||||
39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
|
||||
69:12:71:36
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
|
||||
AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
|
||||
Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
|
||||
+0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
|
||||
VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
|
||||
AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
|
||||
gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
|
||||
A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
|
||||
GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
|
||||
LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
|
||||
UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
|
||||
/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
|
||||
AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,11 +0,0 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIBkzCB/QIBADBUMQswCQYDVQQGEwJOTjExMC8GA1UECgwoRWRlbCBDdXJsIEFy
|
||||
Y3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDESMBAGA1UEAwwJbG9jYWxob3N0
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
|
||||
nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
|
||||
odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
|
||||
rxOsqM2fp+B42xW8OwIDAQABoAAwDQYJKoZIhvcNAQELBQADgYEAC6NxWuiENuj/
|
||||
oPsopZy/tVZzbioXZP/S9ECCbdgy33bg9zKwQYLeHOSgXxJzES+RhJwQCliFV17j
|
||||
jM1CH7heggwkPAx5KelyZ20DeoeaYOi/xv7TjozrZ+EkmivHKBJi3+qNjNYH0ul9
|
||||
HhQBO5+sSDAGLMkWL/nAfYKbf/8KSvA=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
|
||||
lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
|
||||
I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
|
||||
AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
|
||||
l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
|
||||
79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
|
||||
IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
|
||||
eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
|
||||
SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
|
||||
w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
|
||||
3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
|
||||
sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
|
||||
01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1,121 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
#subjectAltName = DNS:localhost\0h
|
||||
subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certificate
|
||||
# some dhparam
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXAIBAAKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5nkvn0KxVQ0f6seD8sGMwhDH1
|
||||
lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLGodusvrEvTMKYhhly1fkSRQm8
|
||||
I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qYrxOsqM2fp+B42xW8OwIDAQAB
|
||||
AoGAHdkk2qfLDpShOl5RBA8PpZYxY4iG0d3ad2HVsNhWb0Z9+QGZumDRF1Hu5Zni
|
||||
l+hCprcP5tWWA1poODSNHBCNEQRYZcHrfZlh+sDiV6ZmexBg7x9D5azyRbn20vr1
|
||||
79UxmisRxnDQQHCfOmgZtgs1EZXnFOs0OotoZAHFr+GLtQECQQD+R2TaWMCEPKJc
|
||||
IswGBqLGL8cyy+v2d5Glt5l+xzb/KCdY9cbOR/B9wq//0Nvqyiq1I1jUBVw9NJi/
|
||||
eBx/OYxhAkEA5VIC6uMpIck0Qxpbj7/H3k2pBf1HROgmLEq+cVLFgY62CIpTgleO
|
||||
SAzTmn0vDXir0jQHJn+JTokvn0PxyNquGwJBAJW+77rSl5WIq8j8yRAnakayrmnQ
|
||||
w8ZjBggExsVthorfV8TBAPJMVWmKdOF/W3O62UnRZid+fKKize28S3P1LSECQDF8
|
||||
3FJSSWsYH6YnhwDjkz9fJQ281eeB7dL7IlQUV7kY0iHPsCvdtz/HPNcHEuNmWjYX
|
||||
sj9VoI0JP/Sv1frRbmcCQDPaeWowPGf1Xtj0oTSlA6KQsKZPO7t15nivgX/AnZWQ
|
||||
01l8q6GPHeYwyG/caD3BZwAavsVLg9nhKx0lf0wExM0=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 14269504311662 (0xcfa60bc516e)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = Northern Nowhere Trust Anchor
|
||||
Validity
|
||||
Not Before: Mar 21 15:07:11 2015 GMT
|
||||
Not After : Jun 7 15:07:11 2023 GMT
|
||||
Subject:
|
||||
countryName = NN
|
||||
organizationName = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = localhost
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (1024 bit)
|
||||
Modulus:
|
||||
00:e3:c7:52:fb:7d:02:b1:a7:0b:4c:2d:a6:2a:b0:
|
||||
57:6b:5e:0b:f9:9e:4b:e7:d0:ac:55:43:47:fa:b1:
|
||||
e0:fc:b0:63:30:84:31:f5:95:44:90:9a:b7:22:01:
|
||||
6f:c7:17:16:be:5a:19:ee:47:35:90:a5:5e:27:ba:
|
||||
86:47:3b:c5:63:d2:f2:c6:a1:db:ac:be:b1:2f:4c:
|
||||
c2:98:86:19:72:d5:f9:12:45:09:bc:23:e2:00:eb:
|
||||
4d:ba:99:71:b5:4a:fb:49:8c:4d:f3:0b:4e:cf:48:
|
||||
7b:c8:06:37:92:35:ff:bb:4f:ea:98:af:13:ac:a8:
|
||||
cd:9f:a7:e0:78:db:15:bc:3b
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Alternative Name:
|
||||
DNS:localhost
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Key Encipherment, Key Agreement
|
||||
X509v3 Extended Key Usage:
|
||||
TLS Web Server Authentication
|
||||
X509v3 Subject Key Identifier:
|
||||
23:D7:CE:D8:B2:D0:F8:8E:3C:82:26:6C:F1:F5:2A:8A:48:90:58:66
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:FALSE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
28:b9:77:ea:4a:8d:d6:a5:fb:72:5b:d6:cd:60:40:33:56:bf:
|
||||
dd:23:ff:bf:e8:2e:10:cd:30:ab:24:a4:43:d8:98:71:e3:59:
|
||||
66:3e:38:bd:b8:fb:19:1a:13:8f:a1:c8:39:93:b5:83:8d:62:
|
||||
52:a9:7a:5b:0d:69:47:40:5c:51:4c:3a:be:a7:c9:5f:7b:93:
|
||||
49:20:59:23:30:7c:d9:4a:dd:29:2c:ed:96:fd:cb:b8:13:ff:
|
||||
36:2c:27:ce:28:c3:a6:d0:d8:ba:8c:38:9f:78:ff:54:c7:76:
|
||||
05:37:47:f5:d3:55:9c:2c:12:41:81:14:ca:48:a2:b7:6d:05:
|
||||
49:2b:c5:f5:7b:63:6d:6f:cd:3f:f4:8d:74:51:07:ff:e1:40:
|
||||
d5:96:60:d8:c8:38:5a:15:f9:c5:fd:e1:5e:a3:02:95:90:4b:
|
||||
fc:8a:42:de:72:31:72:3d:dd:a2:df:19:42:c8:fa:a8:77:11:
|
||||
67:e6:64:8c:d0:fd:45:fd:f0:49:8c:e1:85:e6:f5:1f:47:c6:
|
||||
ae:f2:70:c3:e8:99:d0:cd:9d:88:6b:33:ba:b9:65:3d:f4:b1:
|
||||
f4:d0:3c:76:9c:18:9e:9e:c8:62:29:43:8e:f7:2f:2c:12:37:
|
||||
39:02:26:4e:4b:b0:14:30:80:bb:2d:cc:fc:93:dc:c9:8b:c0:
|
||||
69:12:71:36
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDQTCCAimgAwIBAgIGDPpgvFFuMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
|
||||
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
|
||||
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
|
||||
Fw0xNTAzMjExNTA3MTFaFw0yMzA2MDcxNTA3MTFaMFQxCzAJBgNVBAYTAk5OMTEw
|
||||
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
|
||||
MRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
|
||||
AOPHUvt9ArGnC0wtpiqwV2teC/meS+fQrFVDR/qx4PywYzCEMfWVRJCatyIBb8cX
|
||||
Fr5aGe5HNZClXie6hkc7xWPS8sah26y+sS9MwpiGGXLV+RJFCbwj4gDrTbqZcbVK
|
||||
+0mMTfMLTs9Ie8gGN5I1/7tP6pivE6yozZ+n4HjbFbw7AgMBAAGjgYgwgYUwFgYD
|
||||
VR0RBA8wDYILbG9jYWxob3N0AGgwCwYDVR0PBAQDAgOoMBMGA1UdJQQMMAoGCCsG
|
||||
AQUFBwMBMB0GA1UdDgQWBBQj187YstD4jjyCJmzx9SqKSJBYZjAfBgNVHSMEGDAW
|
||||
gBQSyrpLRgSndYos6A5UlLwSZaZ7zjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUA
|
||||
A4IBAQAouXfqSo3WpftyW9bNYEAzVr/dI/+/6C4QzTCrJKRD2Jhx41lmPji9uPsZ
|
||||
GhOPocg5k7WDjWJSqXpbDWlHQFxRTDq+p8lfe5NJIFkjMHzZSt0pLO2W/cu4E/82
|
||||
LCfOKMOm0Ni6jDifeP9Ux3YFN0f101WcLBJBgRTKSKK3bQVJK8X1e2Ntb80/9I10
|
||||
UQf/4UDVlmDYyDhaFfnF/eFeowKVkEv8ikLecjFyPd2i3xlCyPqodxFn5mSM0P1F
|
||||
/fBJjOGF5vUfR8au8nDD6JnQzZ2IazO6uWU99LH00Dx2nBienshiKUOO9y8sEjc5
|
||||
AiZOS7AUMIC7Lcz8k9zJi8BpEnE2
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
extensions = x509v3
|
||||
[ x509v3 ]
|
||||
#subjectAltName = DNS:localhost\0h
|
||||
subjectAltName = DER:30:0d:82:0b:6c:6f:63:61:6c:68:6f:73:74:00:68
|
||||
keyUsage = keyEncipherment,digitalSignature,keyAgreement
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid
|
||||
basicConstraints = CA:false
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
distinguished_name = req_DN
|
||||
default_md = sha256
|
||||
string_mask = utf8only
|
||||
[ req_DN ]
|
||||
countryName = "Country Name is Northern Nowhere"
|
||||
countryName_value = NN
|
||||
organizationName = "Organization Name"
|
||||
organizationName_value = Edel Curl Arctic Illudium Research Cloud
|
||||
commonName = "Common Name"
|
||||
commonName_value = localhost
|
||||
|
||||
[something]
|
||||
# The key
|
||||
# the certificate
|
||||
# some dhparam
|
||||
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjx1L7fQKxpwtMLaYqsFdrXgv5
|
||||
nkvn0KxVQ0f6seD8sGMwhDH1lUSQmrciAW/HFxa+WhnuRzWQpV4nuoZHO8Vj0vLG
|
||||
odusvrEvTMKYhhly1fkSRQm8I+IA6026mXG1SvtJjE3zC07PSHvIBjeSNf+7T+qY
|
||||
rxOsqM2fp+B42xW8OwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -1,29 +0,0 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
SCRIPTFILES = \
|
||||
genroot.sh \
|
||||
genserv.sh
|
||||
|
||||
EXTRA_DIST = $(SCRIPTFILES)
|
||||
|
||||
@@ -1,551 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = tests/certs/scripts
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
$(top_srcdir)/m4/curl-override.m4 \
|
||||
$(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/xc-am-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-cc-check.m4 \
|
||||
$(top_srcdir)/m4/xc-lt-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-translit.m4 \
|
||||
$(top_srcdir)/m4/xc-val-flgs.m4 \
|
||||
$(top_srcdir)/m4/zz40-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz50-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
|
||||
CURLVERSION = @CURLVERSION@
|
||||
CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
|
||||
CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
|
||||
CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
|
||||
CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
|
||||
CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
|
||||
CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
|
||||
CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
|
||||
CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
|
||||
CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
|
||||
CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
|
||||
CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
|
||||
CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
|
||||
CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
|
||||
CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
|
||||
CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
|
||||
CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
|
||||
CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
|
||||
LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
|
||||
LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MANOPT = @MANOPT@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NROFF = @NROFF@
|
||||
NSS_LIBS = @NSS_LIBS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKGADD_NAME = @PKGADD_NAME@
|
||||
PKGADD_PKG = @PKGADD_PKG@
|
||||
PKGADD_VENDOR = @PKGADD_VENDOR@
|
||||
PKGCONFIG = @PKGCONFIG@
|
||||
RANDOM_FILE = @RANDOM_FILE@
|
||||
RANLIB = @RANLIB@
|
||||
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
libext = @libext@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
SCRIPTFILES = \
|
||||
genroot.sh \
|
||||
genserv.sh
|
||||
|
||||
EXTRA_DIST = $(SCRIPTFILES)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/certs/scripts/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign tests/certs/scripts/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,66 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# (c) CopyRight EdelWeb for EdelKey and OpenEvidence, 2000-2004, 2009
|
||||
# Author: Peter Sylvester
|
||||
|
||||
# "libre" for integration with curl
|
||||
|
||||
OPENSSL=openssl
|
||||
if [ -f /usr/local/ssl/bin/openssl ] ; then
|
||||
OPENSSL=/usr/local/ssl/bin/openssl
|
||||
fi
|
||||
|
||||
USAGE="echo Usage is genroot.sh \<name\>"
|
||||
|
||||
HOME=`pwd`
|
||||
cd $HOME
|
||||
|
||||
KEYSIZE=2048
|
||||
DURATION=6000
|
||||
|
||||
PREFIX=$1
|
||||
if [ ".$PREFIX" = . ] ; then
|
||||
echo No configuration prefix
|
||||
NOTOK=1
|
||||
else
|
||||
if [ ! -f $PREFIX-ca.prm ] ; then
|
||||
echo No configuration file $PREFIX-ca.prm
|
||||
NOTOK=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ".$NOTOK" != . ] ; then
|
||||
echo "Sorry, I can't do that for you."
|
||||
$USAGE
|
||||
exit
|
||||
fi
|
||||
|
||||
GETSERIAL="\$t = time ;\$d = \$t . substr(\$t+$$ ,-4,4)-1;print \$d"
|
||||
SERIAL=`/usr/bin/env perl -e "$GETSERIAL"`
|
||||
|
||||
echo SERIAL=$SERIAL PREFIX=$PREFIX DURATION=$DURATION KEYSIZE=$KEYSIZE
|
||||
|
||||
echo "openssl genrsa -out $PREFIX-ca.key $KEYSIZE -passout XXX"
|
||||
openssl genrsa -out $PREFIX-ca.key $KEYSIZE -passout pass:secret
|
||||
|
||||
echo "openssl req -config $PREFIX-ca.prm -new -key $PREFIX-ca.key -out $PREFIX-ca.csr"
|
||||
$OPENSSL req -config $PREFIX-ca.prm -new -key $PREFIX-ca.key -out $PREFIX-ca.csr -passin pass:secret
|
||||
|
||||
echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -req -signkey $PREFIX-ca.key -in $PREFIX-ca.csr -out $PREFIX-$SERIAL.ca-cacert -sha1 "
|
||||
|
||||
$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-ca.prm -days $DURATION -req -signkey $PREFIX-ca.key -in $PREFIX-ca.csr -out $PREFIX-$SERIAL-ca.cacert -sha1
|
||||
|
||||
echo "openssl x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert "
|
||||
$OPENSSL x509 -text -in $PREFIX-$SERIAL-ca.cacert -nameopt multiline > $PREFIX-ca.cacert
|
||||
|
||||
echo "openssl x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der "
|
||||
$OPENSSL x509 -in $PREFIX-ca.cacert -outform der -out $PREFIX-ca.der
|
||||
|
||||
echo "openssl x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt "
|
||||
|
||||
$OPENSSL x509 -in $PREFIX-ca.cacert -text -nameopt multiline > $PREFIX-ca.crt
|
||||
|
||||
echo "openssl x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline"
|
||||
$OPENSSL x509 -noout -text -in $PREFIX-ca.cacert -nameopt multiline
|
||||
|
||||
#$OPENSSL rsa -in ../keys/$PREFIX-ca.key -text -noout -pubout
|
||||
@@ -1,118 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# (c) CopyRight EdelWeb for EdelKey and OpenEvidence, 2000-2004, 2009
|
||||
# Author: Peter Sylvester
|
||||
|
||||
# "libre" for integration with curl
|
||||
|
||||
OPENSSL=openssl
|
||||
if [ -f /usr/local/ssl/bin/openssl ] ; then
|
||||
OPENSSL=/usr/local/ssl/bin/openssl
|
||||
fi
|
||||
|
||||
USAGE="echo Usage is genserv.sh <prefix> <caprefix>"
|
||||
|
||||
HOME=`pwd`
|
||||
cd $HOME
|
||||
|
||||
KEYSIZE=1024
|
||||
DURATION=3000
|
||||
|
||||
REQ=YES
|
||||
P12=NO
|
||||
DHP=NO
|
||||
|
||||
PREFIX=$1
|
||||
if [ ".$PREFIX" = . ] ; then
|
||||
echo No configuration prefix
|
||||
NOTOK=1
|
||||
else
|
||||
if [ ! -f $PREFIX-sv.prm ] ; then
|
||||
echo No configuration file $PREFIX-sv.prm
|
||||
NOTOK=1
|
||||
fi
|
||||
fi
|
||||
|
||||
CAPREFIX=$2
|
||||
if [ ".$CAPREFIX" = . ] ; then
|
||||
echo No CA prefix
|
||||
NOTOK=1
|
||||
else
|
||||
if [ ! -f $CAPREFIX-ca.cacert ] ; then
|
||||
echo No CA certficate file $CAPREFIX-ca.caert
|
||||
NOTOK=1
|
||||
fi
|
||||
if [ ! -f $CAPREFIX-ca.key ] ; then
|
||||
echo No $CAPREFIX key
|
||||
NOTOK=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ".$NOTOK" != . ] ; then
|
||||
echo "Sorry, I can't do that for you."
|
||||
$USAGE
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ ".$SERIAL" = . ] ; then
|
||||
GETSERIAL="\$t = time ;\$d = \$t . substr(\$t+$$ ,-4,4)-1;print \$d"
|
||||
SERIAL=`/usr/bin/env perl -e "$GETSERIAL"`
|
||||
fi
|
||||
|
||||
echo SERIAL=$SERIAL PREFIX=$PREFIX CAPREFIX=$CAPREFIX DURATION=$DURATION KEYSIZE=$KEYSIZE
|
||||
|
||||
if [ "$DHP." = YES. ] ; then
|
||||
echo "openssl dhparam -2 -out $PREFIX-sv.dhp $KEYSIZE"
|
||||
$OPENSSL dhparam -2 -out $PREFIX-sv.dhp $KEYSIZE
|
||||
fi
|
||||
|
||||
if [ "$REQ." = YES. ] ; then
|
||||
echo "openssl req -config $PREFIX-sv.prm -newkey rsa:$KEYSIZE -keyout $PREFIX-sv.key -out $PREFIX-sv.csr -passout XXX"
|
||||
$OPENSSL req -config $PREFIX-sv.prm -newkey rsa:$KEYSIZE -keyout $PREFIX-sv.key -out $PREFIX-sv.csr -passout pass:secret
|
||||
fi
|
||||
|
||||
echo "openssl rsa -in $PREFIX-sv.key -out $PREFIX-sv.key"
|
||||
$OPENSSL rsa -in $PREFIX-sv.key -out $PREFIX-sv.key -passin pass:secret
|
||||
echo pseudo secrets generated
|
||||
|
||||
echo "openssl rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der"
|
||||
$OPENSSL rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der
|
||||
|
||||
echo "openssl rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem"
|
||||
$OPENSSL rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem
|
||||
|
||||
echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt "
|
||||
|
||||
$OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -text -nameopt multiline -sha1 > $PREFIX-sv.crt
|
||||
|
||||
if [ "$P12." = YES. ] ; then
|
||||
|
||||
echo "$OPENSSL pkcs12 -export -des3 -out $PREFIX-sv.p12 -caname $CAPREFIX -name $PREFIX -inkey $PREFIX-sv.key -in $PREFIX-sv.crt -certfile $CAPREFIX-ca.crt "
|
||||
|
||||
$OPENSSL pkcs12 -export -des3 -out $PREFIX-sv.p12 -caname $CAPREFIX -name $PREFIX -inkey $PREFIX-sv.key -in $PREFIX-sv.crt -certfile $CAPREFIX-ca.crt
|
||||
fi
|
||||
|
||||
echo "openssl x509 -noout -text -hash -in $PREFIX-sv.selfcert -nameopt multiline"
|
||||
$OPENSSL x509 -noout -text -hash -in $PREFIX-sv.crt -nameopt multiline
|
||||
|
||||
# revoke server cert
|
||||
touch $CAPREFIX-ca.db
|
||||
echo 01 > $CAPREFIX-ca.cnt
|
||||
echo "openssl ca -config $CAPREFIX-ca.cnf -revoke $PREFIX-sv.crt"
|
||||
$OPENSSL ca -config $CAPREFIX-ca.cnf -revoke $PREFIX-sv.crt
|
||||
|
||||
# issue CRL
|
||||
echo "openssl ca -config $CAPREFIX-ca.cnf -gencrl -out $PREFIX-sv.crl"
|
||||
$OPENSSL ca -config $CAPREFIX-ca.cnf -gencrl -out $PREFIX-sv.crl
|
||||
|
||||
echo "openssl x509 -in $PREFIX-sv.crt -outform der -out $PREFIX-sv.der "
|
||||
$OPENSSL x509 -in $PREFIX-sv.crt -outform der -out $PREFIX-sv.der
|
||||
|
||||
# all together now
|
||||
touch $PREFIX-sv.dhp
|
||||
cat $PREFIX-sv.prm $PREFIX-sv.key $PREFIX-sv.crt $PREFIX-sv.dhp >$PREFIX-sv.pem
|
||||
chmod o-r $PREFIX-sv.prm
|
||||
|
||||
echo "$PREFIX-sv.pem done"
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
1:Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ:2
|
||||
2:dUyyhxav9tgnyIg65wHxkzkb7VIPh4o0lkwfOKiPp4rVJrzLRYVBtb76gKlaO7ef5LYGEw3G.4E0jbMxcYBetDy2YdpiP/3GWJInoBbvYHIRO9uBuxgsFKTKWu7RnR7yTau/IrFTdQ4LY/q.AvoCzMxV0PKvD9Odso/LFIItn8PbTov3VMn/ZEH2SqhtpBUkWtmcIkEflhX/YY/fkBKfBbe27/zUaKUUZEUYZ2H2nlCL60.JIPeZJSzsu/xHDVcx:2
|
||||
3:2iQzj1CagQc/5ctbuJYLWlhtAsPHc7xWVyCPAKFRLWKADpASkqe9djWPFWTNTdeJtL8nAhImCn3Sr/IAdQ1FrGw0WvQUstPx3FO9KNcXOwisOQ1VlL.gheAHYfbYyBaxXL.NcJx9TUwgWDT0hRzFzqSrdGGTN3FgSTA1v4QnHtEygNj3eZ.u0MThqWUaDiP87nqha7XnT66bkTCkQ8.7T8L4KZjIImrNrUftedTTBi.WCi.zlrBxDuOM0da0JbUkQlXqvp0yvJAPpC11nxmmZOAbQOywZGmu9nhZNuwTlxjfIro0FOdthaDTuZRL9VL7MRPUDo/DQEyW.d4H.UIlzp:2
|
||||
@@ -1,2 +0,0 @@
|
||||
jsmith:34fPk7u.w3R/M1k2sQ9F.04GZqLKAsqDn44CHGu7ML0M8VWwu1p79OLxi6jRhSNdSM46Kx9GRVyJLXz7eok53..A6X5p3NdnMSYX8WwYrDmuseHDr.eua7gjd04S4EoY4ZuKix2.WGAsMTwk86AmTvcqyzqsH7GDhGOHEhjP5zs:lTjBBoK04K9vTKiL10rI/:1
|
||||
alice:3IIP1g1HDTN6VEUr8DUkMleocoC1cpuFZnmunDaGhMyIsw8LAwCc7ZapWaC66gZSyis4ezSuCqvhsJdwdc.0es2UrH6PBkBQflcQDuC.dEpjhWgAcH2Dw.2qU.E0ApQzLkcKOjXMQ2R6jMBL14kEUPjjHS3aa16yB.Afj3bNPdf:1JxU4GkweUEii6.b0grkzU:1
|
||||
@@ -1,7 +0,0 @@
|
||||
# Loads 'TESTCASES' from for the 'make show' target in runtests.pl
|
||||
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
|
||||
|
||||
# Prints all available test cases. Do not quote TESTCASES, it must be displayed
|
||||
# as a space-separated string rather than comma-separated (a list in CMake).
|
||||
add_custom_target(show COMMAND echo ${TESTCASES})
|
||||
@@ -1,18 +0,0 @@
|
||||
# This file can be used to specify test cases that should not run when all
|
||||
# test cases are run by runtests.pl. Just add the plain test case numbers, one
|
||||
# per line.
|
||||
# Lines starting with '#' letters are treated as comments.
|
||||
594
|
||||
1209
|
||||
1211
|
||||
1316
|
||||
1512
|
||||
836
|
||||
882
|
||||
938
|
||||
# test 1801 causes problems on Mac OS X and github
|
||||
# https://github.com/curl/curl/issues/380
|
||||
1801
|
||||
# test 1510 casues problems on the CI on github
|
||||
# example: https://travis-ci.org/curl/curl/builds/81633600
|
||||
1510
|
||||
@@ -1,29 +0,0 @@
|
||||
iall:
|
||||
install:
|
||||
test:
|
||||
|
||||
# TESTCASES are taken from Makefile.inc
|
||||
include Makefile.inc
|
||||
|
||||
EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
|
||||
|
||||
filecheck:
|
||||
@mkdir test-place; \
|
||||
cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
|
||||
rm test-place/*~; \
|
||||
for f in $(EXTRA_DIST); do \
|
||||
if test -f "$(top_srcdir)/tests/data/$$f"; then \
|
||||
rm -f "test-place/$$f"; \
|
||||
else \
|
||||
echo "$$f is listed but missing!"; \
|
||||
fi \
|
||||
done; \
|
||||
echo "Local files not present in EXTRA_DIST:" ; \
|
||||
ls test-place; \
|
||||
! ls test-place | grep . >/dev/null ; \
|
||||
RC=$$? ; \
|
||||
rm -rf test-place ; \
|
||||
exit $$RC
|
||||
|
||||
show:
|
||||
@echo $(EXTRA_DIST)
|
||||
@@ -1,730 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = tests/data
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
$(top_srcdir)/m4/curl-override.m4 \
|
||||
$(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/xc-am-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-cc-check.m4 \
|
||||
$(top_srcdir)/m4/xc-lt-iface.m4 \
|
||||
$(top_srcdir)/m4/xc-translit.m4 \
|
||||
$(top_srcdir)/m4/xc-val-flgs.m4 \
|
||||
$(top_srcdir)/m4/zz40-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz50-xc-ovr.m4 \
|
||||
$(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
|
||||
CURLVERSION = @CURLVERSION@
|
||||
CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
|
||||
CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
|
||||
CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
|
||||
CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
|
||||
CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
|
||||
CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
|
||||
CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
|
||||
CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
|
||||
CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
|
||||
CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
|
||||
CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
|
||||
CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
|
||||
CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
|
||||
CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
|
||||
CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
|
||||
CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
|
||||
CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
|
||||
LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
|
||||
LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MANOPT = @MANOPT@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NROFF = @NROFF@
|
||||
NSS_LIBS = @NSS_LIBS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKGADD_NAME = @PKGADD_NAME@
|
||||
PKGADD_PKG = @PKGADD_PKG@
|
||||
PKGADD_VENDOR = @PKGADD_VENDOR@
|
||||
PKGCONFIG = @PKGCONFIG@
|
||||
RANDOM_FILE = @RANDOM_FILE@
|
||||
RANLIB = @RANLIB@
|
||||
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
libext = @libext@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
# this list is in numerical order
|
||||
TESTCASES = test1 test2 test3 test4 test5 test6 test7 test8 test9 \
|
||||
test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \
|
||||
test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \
|
||||
test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \
|
||||
test40 test41 test42 test43 test44 test45 test46 test47 test48 test49 \
|
||||
test50 test51 test52 test53 test54 test55 test56 test57 test58 test59 \
|
||||
test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \
|
||||
test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \
|
||||
test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \
|
||||
test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \
|
||||
test100 test101 test102 test103 test104 test105 test106 test107 test108 \
|
||||
test109 test110 test111 test112 test113 test114 test115 test116 test117 \
|
||||
test118 test119 test120 test121 test122 test123 test124 test125 test126 \
|
||||
test127 test128 test129 test130 test131 test132 test133 test134 test135 \
|
||||
test136 test137 test138 test139 test140 test141 test142 test143 test144 \
|
||||
test145 test146 test147 test148 test149 test150 test151 test152 test153 \
|
||||
test154 test155 test156 test157 test158 test159 test160 test161 test162 \
|
||||
test163 test164 test165 test166 test167 test168 test169 test170 test171 \
|
||||
test172 test173 test174 test175 test176 test177 test178 test179 test180 \
|
||||
test181 test182 test183 test184 test185 test186 test187 test188 test189 \
|
||||
test190 test191 test192 test193 test194 test195 test196 test197 test198 \
|
||||
test199 test200 test201 test202 test203 test204 test205 test206 test207 \
|
||||
test208 test209 test210 test211 test212 test213 test214 test215 test216 \
|
||||
test217 test218 test219 test220 test221 test222 test223 test224 test225 \
|
||||
test226 test227 test228 test229 test231 test233 test234 \
|
||||
test235 test236 test237 test238 test239 test240 test241 test242 test243 \
|
||||
test245 test246 test247 test248 test249 test250 test251 test252 \
|
||||
test253 test254 test255 test256 test257 test258 test259 test260 test261 \
|
||||
test262 test263 test264 test265 test266 test267 test268 test269 test270 \
|
||||
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
|
||||
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
|
||||
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
|
||||
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
|
||||
test307 test308 test309 test310 test311 test312 test313 \
|
||||
test320 test321 test322 test323 test324 \
|
||||
test325 \
|
||||
test350 test351 test352 test353 test354 \
|
||||
\
|
||||
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
|
||||
test409 \
|
||||
\
|
||||
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
|
||||
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
|
||||
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
|
||||
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
|
||||
test536 test537 test538 test539 test540 test541 test542 test543 test544 \
|
||||
test545 test546 test547 test548 test549 test550 test551 test552 test553 \
|
||||
test554 test555 test556 test557 test558 test560 test561 test562 \
|
||||
test563 test564 test565 test566 test567 test568 test569 test570 test571 \
|
||||
test572 test573 test574 test575 test576 test578 test579 test580 \
|
||||
test581 test582 test583 test584 test585 test586 test587 test588 \
|
||||
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
|
||||
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
|
||||
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
|
||||
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
|
||||
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
|
||||
test635 test636 test637 test638 test639 test640 test641 \
|
||||
\
|
||||
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
|
||||
test709 test710 test711 test712 \
|
||||
\
|
||||
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
|
||||
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
|
||||
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
|
||||
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
|
||||
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
|
||||
test845 \
|
||||
\
|
||||
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
|
||||
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
|
||||
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
|
||||
test877 test878 test879 test880 test881 test882 test883 test884 test885 \
|
||||
test886 test887 test888 test889 test890 \
|
||||
\
|
||||
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
|
||||
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
|
||||
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
|
||||
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
|
||||
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
|
||||
test945 test946 test947 test948 test949 \
|
||||
\
|
||||
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
|
||||
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
|
||||
test1016 test1017 test1018 test1019 test1020 test1021 test1022 test1023 \
|
||||
test1024 test1025 test1026 test1027 test1028 test1029 test1030 test1031 \
|
||||
test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 \
|
||||
test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
|
||||
test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
|
||||
test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
|
||||
test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
|
||||
test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
|
||||
test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 \
|
||||
test1088 test1089 test1090 test1091 test1092 test1093 test1094 test1095 \
|
||||
test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
|
||||
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
|
||||
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
|
||||
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
|
||||
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
|
||||
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
|
||||
test1144 \
|
||||
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
||||
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
|
||||
test1216 test1217 test1218 test1219 \
|
||||
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
|
||||
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
|
||||
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
|
||||
test1244 test1245 test1246 test1247 \
|
||||
\
|
||||
test1280 test1281 \
|
||||
\
|
||||
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
|
||||
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
|
||||
test1316 test1317 test1318 test1319 test1320 test1321 test1322 \
|
||||
test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
|
||||
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
|
||||
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
|
||||
test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
|
||||
test1356 test1357 test1358 test1359 test1360 test1361 test1362 test1363 \
|
||||
test1364 test1365 test1366 test1367 test1368 test1369 test1370 test1371 \
|
||||
test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
|
||||
test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
|
||||
test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
|
||||
test1396 test1397 test1398 \
|
||||
\
|
||||
test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
|
||||
test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
|
||||
test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
|
||||
test1424 \
|
||||
test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
|
||||
test1436 test1437 test1438 test1439 \
|
||||
\
|
||||
test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
|
||||
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
|
||||
test1516 test1517 \
|
||||
\
|
||||
test1520 \
|
||||
\
|
||||
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
|
||||
test1533 test1534 test1535 test1536 \
|
||||
\
|
||||
test1600 test1601 test1602 test1603 test1604 test1605 \
|
||||
\
|
||||
test1700 test1701 test1702 \
|
||||
\
|
||||
test1800 test1801 \
|
||||
\
|
||||
test1900 test1901 test1902 test1903 \
|
||||
\
|
||||
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
|
||||
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
|
||||
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
|
||||
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
|
||||
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
|
||||
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
|
||||
test2048 test2049 test2050 test2051 test2052 test2053 test2054
|
||||
|
||||
|
||||
# TESTCASES are taken from Makefile.inc
|
||||
EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu tests/data/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
$(srcdir)/Makefile.inc $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
iall:
|
||||
install:
|
||||
test:
|
||||
|
||||
filecheck:
|
||||
@mkdir test-place; \
|
||||
cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
|
||||
rm test-place/*~; \
|
||||
for f in $(EXTRA_DIST); do \
|
||||
if test -f "$(top_srcdir)/tests/data/$$f"; then \
|
||||
rm -f "test-place/$$f"; \
|
||||
else \
|
||||
echo "$$f is listed but missing!"; \
|
||||
fi \
|
||||
done; \
|
||||
echo "Local files not present in EXTRA_DIST:" ; \
|
||||
ls test-place; \
|
||||
! ls test-place | grep . >/dev/null ; \
|
||||
RC=$$? ; \
|
||||
rm -rf test-place ; \
|
||||
exit $$RC
|
||||
|
||||
show:
|
||||
@echo $(EXTRA_DIST)
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,178 +0,0 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# this list is in numerical order
|
||||
TESTCASES = test1 test2 test3 test4 test5 test6 test7 test8 test9 \
|
||||
test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \
|
||||
test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \
|
||||
test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \
|
||||
test40 test41 test42 test43 test44 test45 test46 test47 test48 test49 \
|
||||
test50 test51 test52 test53 test54 test55 test56 test57 test58 test59 \
|
||||
test60 test61 test62 test63 test64 test65 test66 test67 test68 test69 \
|
||||
test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \
|
||||
test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \
|
||||
test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \
|
||||
test100 test101 test102 test103 test104 test105 test106 test107 test108 \
|
||||
test109 test110 test111 test112 test113 test114 test115 test116 test117 \
|
||||
test118 test119 test120 test121 test122 test123 test124 test125 test126 \
|
||||
test127 test128 test129 test130 test131 test132 test133 test134 test135 \
|
||||
test136 test137 test138 test139 test140 test141 test142 test143 test144 \
|
||||
test145 test146 test147 test148 test149 test150 test151 test152 test153 \
|
||||
test154 test155 test156 test157 test158 test159 test160 test161 test162 \
|
||||
test163 test164 test165 test166 test167 test168 test169 test170 test171 \
|
||||
test172 test173 test174 test175 test176 test177 test178 test179 test180 \
|
||||
test181 test182 test183 test184 test185 test186 test187 test188 test189 \
|
||||
test190 test191 test192 test193 test194 test195 test196 test197 test198 \
|
||||
test199 test200 test201 test202 test203 test204 test205 test206 test207 \
|
||||
test208 test209 test210 test211 test212 test213 test214 test215 test216 \
|
||||
test217 test218 test219 test220 test221 test222 test223 test224 test225 \
|
||||
test226 test227 test228 test229 test231 test233 test234 \
|
||||
test235 test236 test237 test238 test239 test240 test241 test242 test243 \
|
||||
test245 test246 test247 test248 test249 test250 test251 test252 \
|
||||
test253 test254 test255 test256 test257 test258 test259 test260 test261 \
|
||||
test262 test263 test264 test265 test266 test267 test268 test269 test270 \
|
||||
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
|
||||
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
|
||||
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
|
||||
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
|
||||
test307 test308 test309 test310 test311 test312 test313 \
|
||||
test320 test321 test322 test323 test324 \
|
||||
test325 \
|
||||
test350 test351 test352 test353 test354 \
|
||||
\
|
||||
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
|
||||
test409 \
|
||||
\
|
||||
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
|
||||
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
|
||||
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
|
||||
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
|
||||
test536 test537 test538 test539 test540 test541 test542 test543 test544 \
|
||||
test545 test546 test547 test548 test549 test550 test551 test552 test553 \
|
||||
test554 test555 test556 test557 test558 test560 test561 test562 \
|
||||
test563 test564 test565 test566 test567 test568 test569 test570 test571 \
|
||||
test572 test573 test574 test575 test576 test578 test579 test580 \
|
||||
test581 test582 test583 test584 test585 test586 test587 test588 \
|
||||
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
|
||||
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
|
||||
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
|
||||
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
|
||||
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
|
||||
test635 test636 test637 test638 test639 test640 test641 \
|
||||
\
|
||||
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
|
||||
test709 test710 test711 test712 \
|
||||
\
|
||||
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
|
||||
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
|
||||
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
|
||||
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
|
||||
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
|
||||
test845 \
|
||||
\
|
||||
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
|
||||
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
|
||||
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
|
||||
test877 test878 test879 test880 test881 test882 test883 test884 test885 \
|
||||
test886 test887 test888 test889 test890 \
|
||||
\
|
||||
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
|
||||
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
|
||||
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
|
||||
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
|
||||
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
|
||||
test945 test946 test947 test948 test949 \
|
||||
\
|
||||
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
|
||||
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
|
||||
test1016 test1017 test1018 test1019 test1020 test1021 test1022 test1023 \
|
||||
test1024 test1025 test1026 test1027 test1028 test1029 test1030 test1031 \
|
||||
test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 \
|
||||
test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
|
||||
test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
|
||||
test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
|
||||
test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
|
||||
test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
|
||||
test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 \
|
||||
test1088 test1089 test1090 test1091 test1092 test1093 test1094 test1095 \
|
||||
test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
|
||||
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
|
||||
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
|
||||
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
|
||||
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
|
||||
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
|
||||
test1144 \
|
||||
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
||||
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
|
||||
test1216 test1217 test1218 test1219 \
|
||||
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
|
||||
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
|
||||
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
|
||||
test1244 test1245 test1246 test1247 \
|
||||
\
|
||||
test1280 test1281 \
|
||||
\
|
||||
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
|
||||
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
|
||||
test1316 test1317 test1318 test1319 test1320 test1321 test1322 \
|
||||
test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
|
||||
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
|
||||
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
|
||||
test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
|
||||
test1356 test1357 test1358 test1359 test1360 test1361 test1362 test1363 \
|
||||
test1364 test1365 test1366 test1367 test1368 test1369 test1370 test1371 \
|
||||
test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
|
||||
test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
|
||||
test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
|
||||
test1396 test1397 test1398 \
|
||||
\
|
||||
test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
|
||||
test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
|
||||
test1416 test1417 test1418 test1419 test1420 test1421 test1422 test1423 \
|
||||
test1424 \
|
||||
test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
|
||||
test1436 test1437 test1438 test1439 \
|
||||
\
|
||||
test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
|
||||
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
|
||||
test1516 test1517 \
|
||||
\
|
||||
test1520 \
|
||||
\
|
||||
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
|
||||
test1533 test1534 test1535 test1536 \
|
||||
\
|
||||
test1600 test1601 test1602 test1603 test1604 test1605 \
|
||||
\
|
||||
test1700 test1701 test1702 \
|
||||
\
|
||||
test1800 test1801 \
|
||||
\
|
||||
test1900 test1901 test1902 test1903 \
|
||||
\
|
||||
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
|
||||
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
|
||||
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
|
||||
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
|
||||
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
|
||||
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
|
||||
test2048 test2049 test2050 test2051 test2052 test2053 test2054
|
||||
@@ -1,55 +0,0 @@
|
||||
<testcase>
|
||||
<info>
|
||||
<keywords>
|
||||
HTTP
|
||||
HTTP GET
|
||||
</keywords>
|
||||
</info>
|
||||
|
||||
#
|
||||
# Server-side
|
||||
<reply name="1">
|
||||
<data>
|
||||
HTTP/1.1 200 OK
|
||||
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||
Server: test-server/fake
|
||||
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
|
||||
ETag: "21025-dc7-39462498"
|
||||
Accept-Ranges: bytes
|
||||
Content-Length: 6
|
||||
Connection: close
|
||||
Content-Type: text/html
|
||||
Funny-head: yesyes
|
||||
|
||||
-foo-
|
||||
</data>
|
||||
</reply>
|
||||
|
||||
#
|
||||
# Client-side
|
||||
<client>
|
||||
<server>
|
||||
http
|
||||
</server>
|
||||
<name>
|
||||
HTTP GET
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/1
|
||||
</command>
|
||||
</client>
|
||||
|
||||
#
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
<strip>
|
||||
^User-Agent:.*
|
||||
</strip>
|
||||
<protocol>
|
||||
GET /1 HTTP/1.1
|
||||
Host: %HOSTIP:%HTTPPORT
|
||||
Accept: */*
|
||||
|
||||
</protocol>
|
||||
</verify>
|
||||
</testcase>
|
||||
@@ -1,67 +0,0 @@
|
||||
<testcase>
|
||||
<info>
|
||||
<keywords>
|
||||
HTTP
|
||||
HTTP PUT
|
||||
</keywords>
|
||||
</info>
|
||||
# Server-side
|
||||
<reply>
|
||||
<data>
|
||||
HTTP/1.0 200 OK swsclose
|
||||
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||
Server: test-server/fake
|
||||
|
||||
blablabla
|
||||
|
||||
</data>
|
||||
</reply>
|
||||
|
||||
# Client-side
|
||||
<client>
|
||||
<server>
|
||||
http
|
||||
</server>
|
||||
<name>
|
||||
simple HTTP PUT from file
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/we/want/10 -T log/test10.txt
|
||||
</command>
|
||||
<file name="log/test10.txt">
|
||||
Weird
|
||||
file
|
||||
to
|
||||
upload
|
||||
for
|
||||
testing
|
||||
the
|
||||
PUT
|
||||
feature
|
||||
</file>
|
||||
</client>
|
||||
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
<strip>
|
||||
^User-Agent:.*
|
||||
</strip>
|
||||
<protocol>
|
||||
PUT /we/want/10 HTTP/1.1
|
||||
Host: %HOSTIP:%HTTPPORT
|
||||
Accept: */*
|
||||
Content-Length: 78
|
||||
Expect: 100-continue
|
||||
|
||||
Weird
|
||||
file
|
||||
to
|
||||
upload
|
||||
for
|
||||
testing
|
||||
the
|
||||
PUT
|
||||
feature
|
||||
</protocol>
|
||||
</verify>
|
||||
</testcase>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user