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>