Annotation of embedaddon/curl/src/tool_cfgable.h, revision 1.1
1.1 ! misho 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 - 2020, 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 https://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: #include "tool_sdecls.h"
! 26: #include "tool_metalink.h"
! 27: #include "tool_urlglob.h"
! 28: #include "tool_formparse.h"
! 29:
! 30: typedef enum {
! 31: ERR_NONE,
! 32: ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
! 33: ERR_LAST
! 34: } curl_error;
! 35:
! 36: struct GlobalConfig;
! 37:
! 38: struct State {
! 39: struct getout *urlnode;
! 40: URLGlob *inglob;
! 41: URLGlob *urls;
! 42: char *outfiles;
! 43: char *httpgetfields;
! 44: char *uploadfile;
! 45: unsigned long infilenum; /* number of files to upload */
! 46: unsigned long up; /* upload file counter within a single upload glob */
! 47: unsigned long urlnum; /* how many iterations this single URL has with ranges
! 48: etc */
! 49: unsigned long li;
! 50: };
! 51:
! 52: struct OperationConfig {
! 53: bool remote_time;
! 54: char *random_file;
! 55: char *egd_file;
! 56: char *useragent;
! 57: char *cookie; /* single line with specified cookies */
! 58: char *cookiejar; /* write to this file */
! 59: char *cookiefile; /* read from this file */
! 60: char *altsvc; /* alt-svc cache file name */
! 61: bool cookiesession; /* new session? */
! 62: bool encoding; /* Accept-Encoding please */
! 63: bool tr_encoding; /* Transfer-Encoding please */
! 64: unsigned long authtype; /* auth bitmask */
! 65: bool use_resume;
! 66: bool resume_from_current;
! 67: bool disable_epsv;
! 68: bool disable_eprt;
! 69: bool ftp_pret;
! 70: long proto;
! 71: bool proto_present;
! 72: long proto_redir;
! 73: bool proto_redir_present;
! 74: char *proto_default;
! 75: curl_off_t resume_from;
! 76: char *postfields;
! 77: curl_off_t postfieldsize;
! 78: char *referer;
! 79: double timeout;
! 80: double connecttimeout;
! 81: long maxredirs;
! 82: curl_off_t max_filesize;
! 83: char *headerfile;
! 84: char *ftpport;
! 85: char *iface;
! 86: long localport;
! 87: long localportrange;
! 88: unsigned short porttouse;
! 89: char *range;
! 90: long low_speed_limit;
! 91: long low_speed_time;
! 92: char *dns_servers; /* dot notation: 1.1.1.1;2.2.2.2 */
! 93: char *dns_interface; /* interface name */
! 94: char *dns_ipv4_addr; /* dot notation */
! 95: char *dns_ipv6_addr; /* dot notation */
! 96: char *userpwd;
! 97: char *login_options;
! 98: char *tls_username;
! 99: char *tls_password;
! 100: char *tls_authtype;
! 101: char *proxy_tls_username;
! 102: char *proxy_tls_password;
! 103: char *proxy_tls_authtype;
! 104: char *proxyuserpwd;
! 105: char *proxy;
! 106: int proxyver; /* set to CURLPROXY_HTTP* define */
! 107: char *noproxy;
! 108: char *mail_from;
! 109: struct curl_slist *mail_rcpt;
! 110: char *mail_auth;
! 111: bool mail_rcpt_allowfails; /* --mail-rcpt-allowfails */
! 112: char *sasl_authzid; /* Authorisation identity (identity to use) */
! 113: bool sasl_ir; /* Enable/disable SASL initial response */
! 114: bool proxytunnel;
! 115: bool ftp_append; /* APPE on ftp */
! 116: bool use_ascii; /* select ascii or text transfer */
! 117: bool autoreferer; /* automatically set referer */
! 118: bool failonerror; /* fail on (HTTP) errors */
! 119: bool show_headers; /* show headers to data output */
! 120: bool no_body; /* don't get the body */
! 121: bool dirlistonly; /* only get the FTP dir list */
! 122: bool followlocation; /* follow http redirects */
! 123: bool unrestricted_auth; /* Continue to send authentication (user+password)
! 124: when following ocations, even when hostname
! 125: changed */
! 126: bool netrc_opt;
! 127: bool netrc;
! 128: char *netrc_file;
! 129: struct getout *url_list; /* point to the first node */
! 130: struct getout *url_last; /* point to the last/current node */
! 131: struct getout *url_get; /* point to the node to fill in URL */
! 132: struct getout *url_out; /* point to the node to fill in outfile */
! 133: struct getout *url_ul; /* point to the node to fill in upload */
! 134: char *doh_url;
! 135: char *cipher_list;
! 136: char *proxy_cipher_list;
! 137: char *cipher13_list;
! 138: char *proxy_cipher13_list;
! 139: char *cert;
! 140: char *proxy_cert;
! 141: char *cert_type;
! 142: char *proxy_cert_type;
! 143: char *cacert;
! 144: char *proxy_cacert;
! 145: char *capath;
! 146: char *proxy_capath;
! 147: char *crlfile;
! 148: char *proxy_crlfile;
! 149: char *pinnedpubkey;
! 150: char *proxy_pinnedpubkey;
! 151: char *key;
! 152: char *proxy_key;
! 153: char *key_type;
! 154: char *proxy_key_type;
! 155: char *key_passwd;
! 156: char *proxy_key_passwd;
! 157: char *pubkey;
! 158: char *hostpubmd5;
! 159: char *engine;
! 160: char *etag_save_file;
! 161: char *etag_compare_file;
! 162: bool crlf;
! 163: char *customrequest;
! 164: char *krblevel;
! 165: char *request_target;
! 166: long httpversion;
! 167: bool http09_allowed;
! 168: bool nobuffer;
! 169: bool readbusy; /* set when reading input returns EAGAIN */
! 170: bool globoff;
! 171: bool use_httpget;
! 172: bool insecure_ok; /* set TRUE to allow insecure SSL connects */
! 173: bool proxy_insecure_ok; /* set TRUE to allow insecure SSL connects
! 174: for proxy */
! 175: bool terminal_binary_ok;
! 176: bool verifystatus;
! 177: bool create_dirs;
! 178: bool ftp_create_dirs;
! 179: bool ftp_skip_ip;
! 180: bool proxynegotiate;
! 181: bool proxyntlm;
! 182: bool proxydigest;
! 183: bool proxybasic;
! 184: bool proxyanyauth;
! 185: char *writeout; /* %-styled format string to output */
! 186: struct curl_slist *quote;
! 187: struct curl_slist *postquote;
! 188: struct curl_slist *prequote;
! 189: long ssl_version;
! 190: long ssl_version_max;
! 191: long proxy_ssl_version;
! 192: long ip_version;
! 193: curl_TimeCond timecond;
! 194: curl_off_t condtime;
! 195: struct curl_slist *headers;
! 196: struct curl_slist *proxyheaders;
! 197: tool_mime *mimeroot;
! 198: tool_mime *mimecurrent;
! 199: curl_mime *mimepost;
! 200: struct curl_slist *telnet_options;
! 201: struct curl_slist *resolve;
! 202: struct curl_slist *connect_to;
! 203: HttpReq httpreq;
! 204:
! 205: /* for bandwidth limiting features: */
! 206: curl_off_t sendpersecond; /* send to peer */
! 207: curl_off_t recvpersecond; /* receive from peer */
! 208:
! 209: bool ftp_ssl;
! 210: bool ftp_ssl_reqd;
! 211: bool ftp_ssl_control;
! 212: bool ftp_ssl_ccc;
! 213: int ftp_ssl_ccc_mode;
! 214: char *preproxy;
! 215: int socks5_gssapi_nec; /* The NEC reference server does not protect the
! 216: encryption type exchange */
! 217: unsigned long socks5_auth;/* auth bitmask for socks5 proxies */
! 218: char *proxy_service_name; /* set authentication service name for HTTP and
! 219: SOCKS5 proxies */
! 220: char *service_name; /* set authentication service name for DIGEST-MD5,
! 221: Kerberos 5 and SPNEGO */
! 222:
! 223: bool tcp_nodelay;
! 224: bool tcp_fastopen;
! 225: long req_retry; /* number of retries */
! 226: bool retry_connrefused; /* set connection refused as a transient error */
! 227: long retry_delay; /* delay between retries (in seconds) */
! 228: long retry_maxtime; /* maximum time to keep retrying */
! 229:
! 230: char *ftp_account; /* for ACCT */
! 231: char *ftp_alternative_to_user; /* send command if USER/PASS fails */
! 232: int ftp_filemethod;
! 233: long tftp_blksize; /* TFTP BLKSIZE option */
! 234: bool tftp_no_options; /* do not send TFTP options requests */
! 235: bool ignorecl; /* --ignore-content-length */
! 236: bool disable_sessionid;
! 237:
! 238: bool raw;
! 239: bool post301;
! 240: bool post302;
! 241: bool post303;
! 242: bool nokeepalive; /* for keepalive needs */
! 243: long alivetime;
! 244: bool content_disposition; /* use Content-disposition filename */
! 245:
! 246: int default_node_flags; /* default flags to search for each 'node', which
! 247: is basically each given URL to transfer */
! 248:
! 249: bool xattr; /* store metadata in extended attributes */
! 250: long gssapi_delegation;
! 251: bool ssl_allow_beast; /* allow this SSL vulnerability */
! 252: bool proxy_ssl_allow_beast; /* allow this SSL vulnerability for proxy*/
! 253:
! 254: bool ssl_no_revoke; /* disable SSL certificate revocation checks */
! 255: /*bool proxy_ssl_no_revoke; */
! 256:
! 257: bool ssl_revoke_best_effort; /* ignore SSL revocation offline/missing
! 258: revocation list errors */
! 259:
! 260: bool use_metalink; /* process given URLs as metalink XML file */
! 261: metalinkfile *metalinkfile_list; /* point to the first node */
! 262: metalinkfile *metalinkfile_last; /* point to the last/current node */
! 263: char *oauth_bearer; /* OAuth 2.0 bearer token */
! 264: bool nonpn; /* enable/disable TLS NPN extension */
! 265: bool noalpn; /* enable/disable TLS ALPN extension */
! 266: char *unix_socket_path; /* path to Unix domain socket */
! 267: bool abstract_unix_socket; /* path to an abstract Unix domain socket */
! 268: bool falsestart;
! 269: bool path_as_is;
! 270: double expect100timeout;
! 271: bool suppress_connect_headers; /* suppress proxy CONNECT response headers
! 272: from user callbacks */
! 273: curl_error synthetic_error; /* if non-zero, it overrides any libcurl
! 274: error */
! 275: bool ssh_compression; /* enable/disable SSH compression */
! 276: long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
! 277: 0 is valid. default: CURL_HET_DEFAULT. */
! 278: bool haproxy_protocol; /* whether to send HAProxy protocol v1 */
! 279: bool disallow_username_in_url; /* disallow usernames in URLs */
! 280: struct GlobalConfig *global;
! 281: struct OperationConfig *prev;
! 282: struct OperationConfig *next; /* Always last in the struct */
! 283: struct State state; /* for create_transfer() */
! 284: };
! 285:
! 286: struct GlobalConfig {
! 287: int showerror; /* -1 == unset, default => show errors
! 288: 0 => -s is used to NOT show errors
! 289: 1 => -S has been used to show errors */
! 290: bool mute; /* don't show messages, --silent given */
! 291: bool noprogress; /* don't show progress bar --silent given */
! 292: bool isatty; /* Updated internally if output is a tty */
! 293: FILE *errors; /* Error stream, defaults to stderr */
! 294: bool errors_fopened; /* Whether error stream isn't stderr */
! 295: char *trace_dump; /* file to dump the network trace to */
! 296: FILE *trace_stream;
! 297: bool trace_fopened;
! 298: trace tracetype;
! 299: bool tracetime; /* include timestamp? */
! 300: int progressmode; /* CURL_PROGRESS_BAR / CURL_PROGRESS_STATS */
! 301: char *libcurl; /* Output libcurl code to this file name */
! 302: bool fail_early; /* exit on first transfer error */
! 303: bool styled_output; /* enable fancy output style detection */
! 304: #ifdef CURLDEBUG
! 305: bool test_event_based;
! 306: #endif
! 307: bool parallel;
! 308: long parallel_max;
! 309: bool parallel_connect;
! 310: struct OperationConfig *first;
! 311: struct OperationConfig *current;
! 312: struct OperationConfig *last; /* Always last in the struct */
! 313: };
! 314:
! 315: void config_init(struct OperationConfig *config);
! 316: void config_free(struct OperationConfig *config);
! 317:
! 318: #endif /* HEADER_CURL_TOOL_CFGABLE_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>