1#ifndef HEADER_CURL_TOOL_CFGABLE_H 2#define HEADER_CURL_TOOL_CFGABLE_H 3/*************************************************************************** 4 * _ _ ____ _ 5 * Project ___| | | | _ \| | 6 * / __| | | | |_) | | 7 * | (__| |_| | _ <| |___ 8 * \___|\___/|_| \_\_____| 9 * 10 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. 11 * 12 * This software is licensed as described in the file COPYING, which 13 * you should have received as part of this distribution. The terms 14 * are also available at http://curl.haxx.se/docs/copyright.html. 15 * 16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 * copies of the Software, and permit persons to whom the Software is 18 * furnished to do so, under the terms of the COPYING file. 19 * 20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 * KIND, either express or implied. 22 * 23 ***************************************************************************/ 24#include "tool_setup.h" 25 26#include "tool_sdecls.h" 27 28#include "tool_metalink.h" 29 30struct Configurable { 31 CURL *easy; /* once we have one, we keep it here */ 32 bool remote_time; 33 char *random_file; 34 char *egd_file; 35 char *useragent; 36 char *cookie; /* single line with specified cookies */ 37 char *cookiejar; /* write to this file */ 38 char *cookiefile; /* read from this file */ 39 bool cookiesession; /* new session? */ 40 bool encoding; /* Accept-Encoding please */ 41 bool tr_encoding; /* Transfer-Encoding please */ 42 unsigned long authtype; /* auth bitmask */ 43 bool use_resume; 44 bool resume_from_current; 45 bool disable_epsv; 46 bool disable_eprt; 47 bool ftp_pret; 48 long proto; 49 bool proto_present; 50 long proto_redir; 51 bool proto_redir_present; 52 curl_off_t resume_from; 53 char *postfields; 54 curl_off_t postfieldsize; 55 char *referer; 56 long timeout; 57 long connecttimeout; 58 long maxredirs; 59 curl_off_t max_filesize; 60 char *headerfile; 61 char *ftpport; 62 char *iface; 63 int localport; 64 int localportrange; 65 unsigned short porttouse; 66 char *range; 67 long low_speed_limit; 68 long low_speed_time; 69 int showerror; /* -1 == unset, default => show errors 70 0 => -s is used to NOT show errors 71 1 => -S has been used to show errors */ 72 char *userpwd; 73 char *tls_username; 74 char *tls_password; 75 char *tls_authtype; 76 char *proxyuserpwd; 77 char *proxy; 78 int proxyver; /* set to CURLPROXY_HTTP* define */ 79 char *noproxy; 80 char *mail_from; 81 struct curl_slist *mail_rcpt; 82 char *mail_auth; 83 bool proxytunnel; 84 bool ftp_append; /* APPE on ftp */ 85 bool mute; /* don't show messages, --silent given */ 86 bool use_ascii; /* select ascii or text transfer */ 87 bool autoreferer; /* automatically set referer */ 88 bool failonerror; /* fail on (HTTP) errors */ 89 bool include_headers; /* send headers to data output */ 90 bool no_body; /* don't get the body */ 91 bool dirlistonly; /* only get the FTP dir list */ 92 bool followlocation; /* follow http redirects */ 93 bool unrestricted_auth; /* Continue to send authentication (user+password) 94 when following ocations, even when hostname 95 changed */ 96 bool netrc_opt; 97 bool netrc; 98 char *netrc_file; 99 bool noprogress; /* don't show progress meter, --silent given */ 100 bool isatty; /* updated internally only if output is a tty */ 101 struct getout *url_list; /* point to the first node */ 102 struct getout *url_last; /* point to the last/current node */ 103 struct getout *url_get; /* point to the node to fill in URL */ 104 struct getout *url_out; /* point to the node to fill in outfile */ 105 char *cipher_list; 106 char *cert; 107 char *cert_type; 108 char *cacert; 109 char *capath; 110 char *crlfile; 111 char *key; 112 char *key_type; 113 char *key_passwd; 114 char *pubkey; 115 char *hostpubmd5; 116 char *engine; 117 bool list_engines; 118 bool crlf; 119 char *customrequest; 120 char *krblevel; 121 char *trace_dump; /* file to dump the network trace to, or NULL */ 122 FILE *trace_stream; 123 bool trace_fopened; 124 trace tracetype; 125 bool tracetime; /* include timestamp? */ 126 long httpversion; 127 int progressmode; /* CURL_PROGRESS_BAR or CURL_PROGRESS_STATS */ 128 bool nobuffer; 129 bool readbusy; /* set when reading input returns EAGAIN */ 130 bool globoff; 131 bool use_httpget; 132 bool insecure_ok; /* set TRUE to allow insecure SSL connects */ 133 bool create_dirs; 134 bool ftp_create_dirs; 135 bool ftp_skip_ip; 136 bool proxynegotiate; 137 bool proxyntlm; 138 bool proxydigest; 139 bool proxybasic; 140 bool proxyanyauth; 141 char *writeout; /* %-styled format string to output */ 142 bool writeenv; /* write results to environment, if available */ 143 FILE *errors; /* errors stream, defaults to stderr */ 144 bool errors_fopened; /* whether errors stream isn't stderr */ 145 struct curl_slist *quote; 146 struct curl_slist *postquote; 147 struct curl_slist *prequote; 148 long ssl_version; 149 long ip_version; 150 curl_TimeCond timecond; 151 time_t condtime; 152 struct curl_slist *headers; 153 struct curl_httppost *httppost; 154 struct curl_httppost *last_post; 155 struct curl_slist *telnet_options; 156 struct curl_slist *resolve; 157 HttpReq httpreq; 158 159 /* for bandwidth limiting features: */ 160 curl_off_t sendpersecond; /* send to peer */ 161 curl_off_t recvpersecond; /* receive from peer */ 162 163 bool ftp_ssl; 164 bool ftp_ssl_reqd; 165 bool ftp_ssl_control; 166 bool ftp_ssl_ccc; 167 int ftp_ssl_ccc_mode; 168 169 char *socksproxy; /* set to server string */ 170 int socksver; /* set to CURLPROXY_SOCKS* define */ 171 char *socks5_gssapi_service; /* set service name for gssapi principal 172 * default rcmd */ 173 int socks5_gssapi_nec ; /* The NEC reference server does not protect 174 * the encryption type exchange */ 175 176 bool tcp_nodelay; 177 long req_retry; /* number of retries */ 178 long retry_delay; /* delay between retries (in seconds) */ 179 long retry_maxtime; /* maximum time to keep retrying */ 180 181 char *ftp_account; /* for ACCT */ 182 char *ftp_alternative_to_user; /* send command if USER/PASS fails */ 183 int ftp_filemethod; 184 long tftp_blksize; /* TFTP BLKSIZE option */ 185 bool ignorecl; /* --ignore-content-length */ 186 bool disable_sessionid; 187 188 char *libcurl; /* output libcurl code to this file name */ 189 bool raw; 190 bool post301; 191 bool post302; 192 bool post303; 193 bool nokeepalive; /* for keepalive needs */ 194 long alivetime; 195 bool content_disposition; /* use Content-disposition filename */ 196 197 int default_node_flags; /* default flags to search for each 'node', which 198 is basically each given URL to transfer */ 199 200 bool xattr; /* store metadata in extended attributes */ 201 long gssapi_delegation; 202 bool ssl_allow_beast; /* allow this SSL vulnerability */ 203 204 bool use_metalink; /* process given URLs as metalink XML file */ 205 metalinkfile *metalinkfile_list; /* point to the first node */ 206 metalinkfile *metalinkfile_last; /* point to the last/current node */ 207}; /* struct Configurable */ 208 209void free_config_fields(struct Configurable *config); 210 211#endif /* HEADER_CURL_TOOL_CFGABLE_H */ 212 213