1999-12-02 02:42:23 -05:00
|
|
|
/* struct options.
|
2009-09-04 03:13:47 -04:00
|
|
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
2015-03-09 11:32:01 -04:00
|
|
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2015 Free Software
|
|
|
|
Foundation, Inc.
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2001-05-27 15:35:15 -04:00
|
|
|
This file is part of GNU Wget.
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2001-05-27 15:35:15 -04:00
|
|
|
GNU Wget is free software; you can redistribute it and/or modify
|
1999-12-02 02:42:23 -05:00
|
|
|
it under the terms of the GNU General Public License as published by
|
2007-07-10 01:53:22 -04:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
1999-12-02 02:42:23 -05:00
|
|
|
(at your option) any later version.
|
|
|
|
|
2001-05-27 15:35:15 -04:00
|
|
|
GNU Wget is distributed in the hope that it will be useful,
|
1999-12-02 02:42:23 -05:00
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2007-07-10 01:53:22 -04:00
|
|
|
along with Wget. If not, see <http://www.gnu.org/licenses/>.
|
2002-05-17 22:16:36 -04:00
|
|
|
|
2007-11-28 03:05:33 -05:00
|
|
|
Additional permission under GNU GPL version 3 section 7
|
|
|
|
|
|
|
|
If you modify this program, or any covered work, by linking or
|
|
|
|
combining it with the OpenSSL project's OpenSSL library (or a
|
|
|
|
modified version of that library), containing parts covered by the
|
|
|
|
terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
|
|
|
|
grants you additional permission to convey the resulting work.
|
|
|
|
Corresponding Source for a non-source form of such a combination
|
|
|
|
shall include the source code for the parts of OpenSSL used as well
|
|
|
|
as that of the covered work. */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2015-12-03 05:49:55 -05:00
|
|
|
enum CHECK_CERT_MODES
|
|
|
|
{
|
|
|
|
CHECK_CERT_OFF,
|
|
|
|
CHECK_CERT_ON,
|
2015-12-08 15:17:54 -05:00
|
|
|
CHECK_CERT_QUIET
|
2015-12-03 05:49:55 -05:00
|
|
|
};
|
|
|
|
|
1999-12-02 02:42:23 -05:00
|
|
|
struct options
|
|
|
|
{
|
2014-05-26 05:51:58 -04:00
|
|
|
int verbose; /* Are we verbose? (First set to -1,
|
2005-06-24 07:44:38 -04:00
|
|
|
hence not boolean.) */
|
2014-05-26 05:51:58 -04:00
|
|
|
bool quiet; /* Are we quiet? */
|
|
|
|
int ntry; /* Number of tries per URL */
|
|
|
|
bool retry_connrefused; /* Treat CONNREFUSED as non-fatal. */
|
|
|
|
bool background; /* Whether we should work in background. */
|
|
|
|
bool ignore_length; /* Do we heed content-length at all? */
|
|
|
|
bool recursive; /* Are we recursive? */
|
|
|
|
bool spanhost; /* Do we span across hosts in
|
|
|
|
recursion? */
|
2007-07-28 22:37:14 -04:00
|
|
|
int max_redirect; /* Maximum number of times we'll allow
|
|
|
|
a page to redirect. */
|
2014-05-26 05:51:58 -04:00
|
|
|
bool relative_only; /* Follow only relative links. */
|
|
|
|
bool no_parent; /* Restrict access to the parent
|
|
|
|
directory. */
|
|
|
|
int reclevel; /* Maximum level of recursion */
|
|
|
|
bool dirstruct; /* Do we build the directory structure
|
|
|
|
as we go along? */
|
|
|
|
bool no_dirstruct; /* Do we hate dirstruct? */
|
|
|
|
int cut_dirs; /* Number of directory components to cut. */
|
|
|
|
bool add_hostdir; /* Do we add hostname directory? */
|
|
|
|
bool protocol_directories; /* Whether to prepend "http"/"ftp" to dirs. */
|
|
|
|
bool noclobber; /* Disables clobbering of existing data. */
|
|
|
|
bool unlink; /* remove file before clobbering */
|
|
|
|
char *dir_prefix; /* The top of directory tree */
|
|
|
|
char *lfilename; /* Log filename */
|
|
|
|
char *input_filename; /* Input filename */
|
2015-05-30 17:51:55 -04:00
|
|
|
#ifdef HAVE_METALINK
|
|
|
|
char *input_metalink; /* Input metalink file */
|
|
|
|
bool metalink_over_http; /* Use Metalink if present in HTTP response */
|
2015-07-02 18:21:35 -04:00
|
|
|
char *preferred_location; /* Preferred location for Metalink resources */
|
2015-05-30 17:51:55 -04:00
|
|
|
#endif
|
2014-05-26 05:51:58 -04:00
|
|
|
char *choose_config; /* Specified config file */
|
|
|
|
bool noconfig; /* Ignore all config files? */
|
|
|
|
bool force_html; /* Is the input file an HTML file? */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2008-08-04 01:12:34 -04:00
|
|
|
char *default_page; /* Alternative default page (index file) */
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool spider; /* Is Wget in spider mode? */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char **accepts; /* List of patterns to accept. */
|
|
|
|
char **rejects; /* List of patterns to reject. */
|
|
|
|
const char **excludes; /* List of excluded FTP directories. */
|
|
|
|
const char **includes; /* List of FTP directories to
|
|
|
|
follow. */
|
|
|
|
bool ignore_case; /* Whether to ignore case when
|
|
|
|
matching dirs and files */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char *acceptregex_s; /* Patterns to accept (a regex string). */
|
|
|
|
char *rejectregex_s; /* Patterns to reject (a regex string). */
|
|
|
|
void *acceptregex; /* Patterns to accept (a regex struct). */
|
|
|
|
void *rejectregex; /* Patterns to reject (a regex struct). */
|
2012-05-09 15:18:23 -04:00
|
|
|
enum {
|
|
|
|
#ifdef HAVE_LIBPCRE
|
|
|
|
regex_type_pcre,
|
|
|
|
#endif
|
|
|
|
regex_type_posix
|
2014-05-26 05:51:58 -04:00
|
|
|
} regex_type; /* The regex library. */
|
|
|
|
void *(*regex_compile_fun)(const char *); /* Function to compile a regex. */
|
2012-05-09 15:18:23 -04:00
|
|
|
bool (*regex_match_fun)(const void *, const char *); /* Function to match a string to a regex. */
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char **domains; /* See host.c */
|
1999-12-02 02:42:23 -05:00
|
|
|
char **exclude_domains;
|
2014-05-26 05:51:58 -04:00
|
|
|
bool dns_cache; /* whether we cache DNS lookups. */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2000-03-11 01:48:06 -05:00
|
|
|
char **follow_tags; /* List of HTML tags to recursively follow. */
|
|
|
|
char **ignore_tags; /* List of HTML tags to ignore if recursing. */
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool follow_ftp; /* Are FTP URL-s followed in recursive
|
|
|
|
retrieving? */
|
|
|
|
bool retr_symlinks; /* Whether we retrieve symlinks in
|
|
|
|
FTP. */
|
|
|
|
char *output_document; /* The output file to which the
|
|
|
|
documents will be printed. */
|
|
|
|
char *warc_filename; /* WARC output filename */
|
|
|
|
char *warc_tempdir; /* WARC temp dir */
|
|
|
|
char *warc_cdx_dedup_filename;/* CDX file to be used for deduplication. */
|
2011-11-04 17:25:00 -04:00
|
|
|
wgint warc_maxsize; /* WARC max archive size */
|
2014-05-26 05:51:58 -04:00
|
|
|
bool warc_compression_enabled;/* For GZIP compression. */
|
|
|
|
bool warc_digests_enabled; /* For SHA1 digests. */
|
|
|
|
bool warc_cdx_enabled; /* Create CDX files? */
|
|
|
|
bool warc_keep_log; /* Store the log file in a WARC record. */
|
|
|
|
char **warc_user_headers; /* User-defined WARC header(s). */
|
|
|
|
|
|
|
|
char *user; /* Generic username */
|
|
|
|
char *passwd; /* Generic password */
|
2008-04-30 18:28:23 -04:00
|
|
|
bool ask_passwd; /* Ask for password? */
|
2009-09-21 23:39:44 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool always_rest; /* Always use REST. */
|
|
|
|
wgint start_pos; /* Start position of a download. */
|
|
|
|
char *ftp_user; /* FTP username */
|
|
|
|
char *ftp_passwd; /* FTP password */
|
|
|
|
bool netrc; /* Whether to read .netrc. */
|
|
|
|
bool ftp_glob; /* FTP globbing */
|
|
|
|
bool ftp_pasv; /* Passive FTP. */
|
|
|
|
|
|
|
|
char *http_user; /* HTTP username. */
|
|
|
|
char *http_passwd; /* HTTP password. */
|
|
|
|
char **user_headers; /* User-defined header(s). */
|
|
|
|
bool http_keep_alive; /* whether we use keep-alive */
|
|
|
|
|
|
|
|
bool use_proxy; /* Do we use proxy? */
|
|
|
|
bool allow_cache; /* Do we allow server-side caching? */
|
2000-12-05 18:09:41 -05:00
|
|
|
char *http_proxy, *ftp_proxy, *https_proxy;
|
1999-12-02 02:42:23 -05:00
|
|
|
char **no_proxy;
|
|
|
|
char *base_href;
|
2014-05-26 05:51:58 -04:00
|
|
|
char *progress_type; /* progress indicator type. */
|
2015-01-18 04:48:14 -05:00
|
|
|
int show_progress; /* Show only the progress bar */
|
2014-05-26 05:51:58 -04:00
|
|
|
bool noscroll; /* Don't scroll the filename in the progressbar */
|
1999-12-02 02:42:23 -05:00
|
|
|
char *proxy_user; /*oli*/
|
|
|
|
char *proxy_passwd;
|
2003-09-21 00:41:55 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
double read_timeout; /* The read/write timeout. */
|
|
|
|
double dns_timeout; /* The DNS timeout. */
|
|
|
|
double connect_timeout; /* The connect timeout. */
|
2003-09-21 00:41:55 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool random_wait; /* vary from 0 .. wait secs by random()? */
|
|
|
|
double wait; /* The wait period between retrievals. */
|
|
|
|
double waitretry; /* The wait period between retries. - HEH */
|
|
|
|
bool use_robots; /* Do we heed robots.txt? */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
wgint limit_rate; /* Limit the download rate to this
|
|
|
|
many bps. */
|
|
|
|
SUM_SIZE_INT quota; /* Maximum file size to download and
|
|
|
|
store. */
|
2005-06-22 15:38:10 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool server_response; /* Do we print server response? */
|
|
|
|
bool save_headers; /* Do we save headers together with
|
|
|
|
file? */
|
|
|
|
bool content_on_error; /* Do we output the content when the HTTP
|
|
|
|
status code indicates a server error */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool debug; /* Debugging on/off */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2009-09-05 14:27:52 -04:00
|
|
|
#ifdef USE_WATT32
|
2007-09-28 17:47:46 -04:00
|
|
|
bool wdebug; /* Watt-32 tcp/ip debugging on/off */
|
|
|
|
#endif
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool timestamping; /* Whether to use time-stamping. */
|
2015-05-05 13:33:02 -04:00
|
|
|
bool if_modified_since; /* Whether to use conditional get requests. */
|
2000-02-29 19:17:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool backup_converted; /* Do we save pre-converted files as *.orig? */
|
|
|
|
int backups; /* Are numeric backups made? */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char *useragent; /* User-Agent string, which can be set
|
|
|
|
to something other than Wget. */
|
|
|
|
char *referer; /* Naughty Referer, which can be
|
|
|
|
set to something other than
|
|
|
|
NULL. */
|
|
|
|
bool convert_links; /* Will the links be converted
|
|
|
|
locally? */
|
2015-09-22 15:10:38 -04:00
|
|
|
bool convert_file_only; /* Convert only the file portion of the URI (i.e. basename).
|
|
|
|
Leave everything else untouched. */
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool remove_listing; /* Do we remove .listing files
|
|
|
|
generated by FTP? */
|
|
|
|
bool htmlify; /* Do we HTML-ify the OS-dependent
|
|
|
|
listings? */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2001-11-27 21:44:18 -05:00
|
|
|
char *dot_style;
|
2014-05-26 05:51:58 -04:00
|
|
|
wgint dot_bytes; /* How many bytes in a printing
|
|
|
|
dot. */
|
|
|
|
int dots_in_line; /* How many dots in one line. */
|
|
|
|
int dot_spacing; /* How many dots between spacings. */
|
1999-12-02 02:42:23 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool delete_after; /* Whether the files will be deleted
|
|
|
|
after download. */
|
2000-08-30 07:26:21 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool adjust_extension; /* Use ".html" extension on all text/html? */
|
2000-10-20 01:55:46 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool page_requisites; /* Whether we need to download all files
|
|
|
|
necessary to display a page properly. */
|
|
|
|
char *bind_address; /* What local IP address to bind to. */
|
2005-04-26 13:22:56 -04:00
|
|
|
|
2001-02-10 17:33:31 -05:00
|
|
|
#ifdef HAVE_SSL
|
2005-04-26 13:22:56 -04:00
|
|
|
enum {
|
|
|
|
secure_protocol_auto,
|
|
|
|
secure_protocol_sslv2,
|
|
|
|
secure_protocol_sslv3,
|
2013-09-03 05:49:01 -04:00
|
|
|
secure_protocol_tlsv1,
|
2014-10-23 15:16:37 -04:00
|
|
|
secure_protocol_tlsv1_1,
|
|
|
|
secure_protocol_tlsv1_2,
|
2013-09-03 05:49:01 -04:00
|
|
|
secure_protocol_pfs
|
2014-05-26 05:51:58 -04:00
|
|
|
} secure_protocol; /* type of secure protocol to use. */
|
2015-12-03 05:49:55 -05:00
|
|
|
int check_cert; /* whether to validate the server's cert */
|
2014-05-26 05:51:58 -04:00
|
|
|
char *cert_file; /* external client certificate to use. */
|
|
|
|
char *private_key; /* private key file (if not internal). */
|
2005-04-27 13:15:10 -04:00
|
|
|
enum keyfile_type {
|
|
|
|
keyfile_pem,
|
|
|
|
keyfile_asn1
|
2014-05-26 05:51:58 -04:00
|
|
|
} cert_type; /* type of client certificate file */
|
2005-04-27 13:15:10 -04:00
|
|
|
enum keyfile_type
|
2014-05-26 05:51:58 -04:00
|
|
|
private_key_type; /* type of private key file */
|
2005-04-26 13:22:56 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char *ca_directory; /* CA directory (hash files) */
|
|
|
|
char *ca_cert; /* CA certificate file to use */
|
2014-11-06 11:53:44 -05:00
|
|
|
char *crl_file; /* file with CRLs */
|
2005-04-26 13:22:56 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char *random_file; /* file with random data to seed the PRNG */
|
|
|
|
char *egd_file; /* file name of the egd daemon socket */
|
|
|
|
bool https_only; /* whether to follow HTTPS only */
|
2015-08-27 10:32:36 -04:00
|
|
|
bool ftps_resume_ssl;
|
|
|
|
bool ftps_fallback_to_ftp;
|
|
|
|
bool ftps_implicit;
|
|
|
|
bool ftps_clear_data_connection;
|
2001-02-10 17:33:31 -05:00
|
|
|
#endif /* HAVE_SSL */
|
2001-04-08 18:25:24 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool cookies; /* whether cookies are used. */
|
|
|
|
char *cookies_input; /* file we're loading the cookies from. */
|
|
|
|
char *cookies_output; /* file we're saving the cookies to. */
|
|
|
|
bool keep_session_cookies; /* whether session cookies should be
|
|
|
|
saved and loaded. */
|
2002-04-14 00:22:47 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
char *post_data; /* POST query string */
|
|
|
|
char *post_file_name; /* File to post */
|
2013-04-12 14:14:32 -04:00
|
|
|
char *method; /* HTTP Method to use in Header */
|
|
|
|
char *body_data; /* HTTP Method Data String */
|
|
|
|
char *body_file; /* HTTP Method File */
|
2003-09-14 18:04:13 -04:00
|
|
|
|
|
|
|
enum {
|
2003-09-16 21:32:05 -04:00
|
|
|
restrict_unix,
|
2015-04-02 09:36:42 -04:00
|
|
|
restrict_vms,
|
2003-09-14 18:04:13 -04:00
|
|
|
restrict_windows
|
2014-05-26 05:51:58 -04:00
|
|
|
} restrict_files_os; /* file name restriction ruleset. */
|
|
|
|
bool restrict_files_ctrl; /* non-zero if control chars in URLs
|
|
|
|
are restricted from appearing in
|
|
|
|
generated file names. */
|
2009-07-28 02:41:26 -04:00
|
|
|
bool restrict_files_nonascii; /* non-zero if bytes with values greater
|
|
|
|
than 127 are restricted. */
|
2006-06-13 09:58:33 -04:00
|
|
|
enum {
|
|
|
|
restrict_no_case_restriction,
|
|
|
|
restrict_lowercase,
|
|
|
|
restrict_uppercase
|
2014-05-26 05:51:58 -04:00
|
|
|
} restrict_files_case; /* file name case restriction. */
|
2003-09-18 20:33:22 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool strict_comments; /* whether strict SGML comments are
|
|
|
|
enforced. */
|
2003-11-06 15:33:20 -05:00
|
|
|
|
2005-06-22 15:38:10 -04:00
|
|
|
bool preserve_perm; /* whether remote permissions are used
|
2014-05-26 05:51:58 -04:00
|
|
|
or that what is set by umask. */
|
2003-11-11 16:48:35 -05:00
|
|
|
|
|
|
|
#ifdef ENABLE_IPV6
|
2014-05-26 05:51:58 -04:00
|
|
|
bool ipv4_only; /* IPv4 connections have been requested. */
|
|
|
|
bool ipv6_only; /* IPv4 connections have been requested. */
|
2003-11-11 16:48:35 -05:00
|
|
|
#endif
|
2005-04-24 16:00:19 -04:00
|
|
|
enum {
|
|
|
|
prefer_ipv4,
|
|
|
|
prefer_ipv6,
|
|
|
|
prefer_none
|
2014-05-26 05:51:58 -04:00
|
|
|
} prefer_family; /* preferred address family when more
|
|
|
|
than one type is available */
|
2009-09-21 23:39:44 -04:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool content_disposition; /* Honor HTTP Content-Disposition header. */
|
2008-02-10 20:31:27 -05:00
|
|
|
bool auth_without_challenge; /* Issue Basic authentication creds without
|
|
|
|
waiting for a challenge. */
|
2008-05-24 21:34:28 -04:00
|
|
|
|
|
|
|
bool enable_iri;
|
|
|
|
char *encoding_remote;
|
|
|
|
char *locale;
|
2008-04-22 17:48:36 -04:00
|
|
|
|
2010-07-28 15:22:22 -04:00
|
|
|
bool trustservernames;
|
2008-04-22 17:48:36 -04:00
|
|
|
#ifdef __VMS
|
|
|
|
int ftp_stmlf; /* Force Stream_LF format for binary FTP. */
|
|
|
|
#endif /* def __VMS */
|
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool useservertimestamps; /* Update downloaded files' timestamps to
|
|
|
|
match those on server? */
|
2010-01-09 21:57:18 -05:00
|
|
|
|
2014-05-26 05:51:58 -04:00
|
|
|
bool show_all_dns_entries; /* Show all the DNS entries when resolving a
|
|
|
|
name. */
|
2012-06-06 08:10:07 -04:00
|
|
|
bool report_bps; /*Output bandwidth in bits format*/
|
2015-06-30 18:21:05 -04:00
|
|
|
|
2015-07-31 09:41:36 -04:00
|
|
|
char *rejected_log; /* The file to log rejected URLS to. */
|
|
|
|
|
2015-06-30 18:21:05 -04:00
|
|
|
#ifdef HAVE_HSTS
|
|
|
|
bool hsts;
|
|
|
|
char *hsts_file;
|
|
|
|
#endif
|
1999-12-02 02:42:23 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
extern struct options opt;
|