mirror of
https://github.com/mirror/wget.git
synced 2025-01-21 09:41:06 +08:00
[svn] Change default anonymous FTP password to "-wget@".
Published in <sxsu239htnl.fsf@florida.arsdigita.de>.
This commit is contained in:
parent
b44f1701b0
commit
dfc1eb5766
@ -1,3 +1,17 @@
|
|||||||
|
2001-04-28 Hrvoje Niksic <hniksic@arsdigita.com>
|
||||||
|
|
||||||
|
* main.c (main): Removed undocumented option `--email-address'.
|
||||||
|
|
||||||
|
* netrc.c: Use the latest read_whole_line.
|
||||||
|
|
||||||
|
* init.c (defaults): Set opt.ftp_pass to "-wget@".
|
||||||
|
|
||||||
|
* mswindows.c (pwd_cuserid): Ditto.
|
||||||
|
|
||||||
|
* utils.c (pwd_cuserid): Removed.
|
||||||
|
|
||||||
|
* host.c (ftp_getaddress): Removed.
|
||||||
|
|
||||||
2001-04-28 Hrvoje Niksic <hniksic@arsdigita.com>
|
2001-04-28 Hrvoje Niksic <hniksic@arsdigita.com>
|
||||||
|
|
||||||
(http_loop): Allocate space for filename_plus_orig_suffix with
|
(http_loop): Allocate space for filename_plus_orig_suffix with
|
||||||
|
@ -133,8 +133,6 @@ getftp (struct urlinfo *u, long *len, long restval, ccon *con)
|
|||||||
passwd = u->passwd;
|
passwd = u->passwd;
|
||||||
search_netrc (u->host, (const char **)&user, (const char **)&passwd, 1);
|
search_netrc (u->host, (const char **)&user, (const char **)&passwd, 1);
|
||||||
user = user ? user : opt.ftp_acc;
|
user = user ? user : opt.ftp_acc;
|
||||||
if (!opt.ftp_pass)
|
|
||||||
opt.ftp_pass = ftp_getaddress ();
|
|
||||||
passwd = passwd ? passwd : opt.ftp_pass;
|
passwd = passwd ? passwd : opt.ftp_pass;
|
||||||
assert (user && passwd);
|
assert (user && passwd);
|
||||||
|
|
||||||
|
124
src/host.c
124
src/host.c
@ -360,130 +360,6 @@ sufmatch (const char **list, const char *what)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return email address of the form username@FQDN suitable for
|
|
||||||
anonymous FTP passwords. This process is error-prone, and the
|
|
||||||
escape hatch is the MY_HOST preprocessor constant, which can be
|
|
||||||
used to hard-code either your hostname or FQDN at compile-time.
|
|
||||||
|
|
||||||
If the FQDN cannot be determined, a warning is printed, and the
|
|
||||||
function returns a short `username@' form, accepted by most
|
|
||||||
anonymous servers.
|
|
||||||
|
|
||||||
The returned string is generated by malloc() and should be freed
|
|
||||||
using free().
|
|
||||||
|
|
||||||
If not even the username cannot be divined, it means things are
|
|
||||||
seriously fucked up, and Wget exits. */
|
|
||||||
char *
|
|
||||||
ftp_getaddress (void)
|
|
||||||
{
|
|
||||||
static char *address;
|
|
||||||
|
|
||||||
/* Do the drill only the first time, as it won't change. */
|
|
||||||
if (!address)
|
|
||||||
{
|
|
||||||
char userid[32]; /* 9 should be enough for Unix, but
|
|
||||||
I'd rather be on the safe side. */
|
|
||||||
char *host, *fqdn;
|
|
||||||
|
|
||||||
if (!pwd_cuserid (userid))
|
|
||||||
{
|
|
||||||
logprintf (LOG_ALWAYS, _("%s: Cannot determine user-id.\n"),
|
|
||||||
exec_name);
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
#ifdef MY_HOST
|
|
||||||
STRDUP_ALLOCA (host, MY_HOST);
|
|
||||||
#else /* not MY_HOST */
|
|
||||||
#ifdef HAVE_UNAME
|
|
||||||
{
|
|
||||||
struct utsname ubuf;
|
|
||||||
if (uname (&ubuf) < 0)
|
|
||||||
{
|
|
||||||
logprintf (LOG_ALWAYS, _("%s: Warning: uname failed: %s\n"),
|
|
||||||
exec_name, strerror (errno));
|
|
||||||
fqdn = "";
|
|
||||||
goto giveup;
|
|
||||||
}
|
|
||||||
STRDUP_ALLOCA (host, ubuf.nodename);
|
|
||||||
}
|
|
||||||
#else /* not HAVE_UNAME */
|
|
||||||
#ifdef HAVE_GETHOSTNAME
|
|
||||||
host = alloca (256);
|
|
||||||
if (gethostname (host, 256) < 0)
|
|
||||||
{
|
|
||||||
logprintf (LOG_ALWAYS, _("%s: Warning: gethostname failed\n"),
|
|
||||||
exec_name);
|
|
||||||
fqdn = "";
|
|
||||||
goto giveup;
|
|
||||||
}
|
|
||||||
#else /* not HAVE_GETHOSTNAME */
|
|
||||||
#error Cannot determine host name.
|
|
||||||
#endif /* not HAVE_GETHOSTNAME */
|
|
||||||
#endif /* not HAVE_UNAME */
|
|
||||||
#endif /* not MY_HOST */
|
|
||||||
/* If the address we got so far contains a period, don't bother
|
|
||||||
anymore. */
|
|
||||||
if (strchr (host, '.'))
|
|
||||||
fqdn = host;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* #### I've seen the following scheme fail on at least one
|
|
||||||
system! Do we care? */
|
|
||||||
char *tmpstore;
|
|
||||||
/* According to Richard Stevens, the correct way to find the
|
|
||||||
FQDN is to (1) find the host name, (2) find its IP
|
|
||||||
address using gethostbyname(), and (3) get the FQDN using
|
|
||||||
gethostbyaddr(). So that's what we'll do. Step one has
|
|
||||||
been done above. */
|
|
||||||
/* (2) */
|
|
||||||
struct hostent *hp = gethostbyname (host);
|
|
||||||
if (!hp || !hp->h_addr_list)
|
|
||||||
{
|
|
||||||
logprintf (LOG_ALWAYS, _("\
|
|
||||||
%s: Warning: cannot determine local IP address.\n"),
|
|
||||||
exec_name);
|
|
||||||
fqdn = "";
|
|
||||||
goto giveup;
|
|
||||||
}
|
|
||||||
/* Copy the argument, so the call to gethostbyaddr doesn't
|
|
||||||
clobber it -- just in case. */
|
|
||||||
tmpstore = (char *)alloca (hp->h_length);
|
|
||||||
memcpy (tmpstore, *hp->h_addr_list, hp->h_length);
|
|
||||||
/* (3) */
|
|
||||||
hp = gethostbyaddr (tmpstore, hp->h_length, hp->h_addrtype);
|
|
||||||
if (!hp || !hp->h_name)
|
|
||||||
{
|
|
||||||
logprintf (LOG_ALWAYS, _("\
|
|
||||||
%s: Warning: cannot reverse-lookup local IP address.\n"),
|
|
||||||
exec_name);
|
|
||||||
fqdn = "";
|
|
||||||
goto giveup;
|
|
||||||
}
|
|
||||||
if (!strchr (hp->h_name, '.'))
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
/* This gets ticked pretty often. Karl Berry reports
|
|
||||||
that there can be valid reasons for the local host
|
|
||||||
name not to be an FQDN, so I've decided to remove the
|
|
||||||
annoying warning. */
|
|
||||||
logprintf (LOG_ALWAYS, _("\
|
|
||||||
%s: Warning: reverse-lookup of local address did not yield FQDN!\n"),
|
|
||||||
exec_name);
|
|
||||||
#endif
|
|
||||||
fqdn = "";
|
|
||||||
goto giveup;
|
|
||||||
}
|
|
||||||
/* Once we're here, hp->h_name contains the correct FQDN. */
|
|
||||||
STRDUP_ALLOCA (fqdn, hp->h_name);
|
|
||||||
}
|
|
||||||
giveup:
|
|
||||||
address = (char *)xmalloc (strlen (userid) + 1 + strlen (fqdn) + 1);
|
|
||||||
sprintf (address, "%s@%s", userid, fqdn);
|
|
||||||
}
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print error messages for host errors. */
|
/* Print error messages for host errors. */
|
||||||
char *
|
char *
|
||||||
herrmsg (int error)
|
herrmsg (int error)
|
||||||
|
@ -227,8 +227,8 @@ defaults (void)
|
|||||||
opt.ntry = 20;
|
opt.ntry = 20;
|
||||||
opt.reclevel = 5;
|
opt.reclevel = 5;
|
||||||
opt.add_hostdir = 1;
|
opt.add_hostdir = 1;
|
||||||
opt.ftp_acc = xstrdup ("anonymous");
|
opt.ftp_acc = xstrdup ("anonymous");
|
||||||
/*opt.ftp_pass = xstrdup (ftp_getaddress ());*/
|
opt.ftp_pass = xstrdup ("-wget@");
|
||||||
opt.netrc = 1;
|
opt.netrc = 1;
|
||||||
opt.ftp_glob = 1;
|
opt.ftp_glob = 1;
|
||||||
opt.htmlify = 1;
|
opt.htmlify = 1;
|
||||||
|
@ -251,7 +251,6 @@ main (int argc, char *const *argv)
|
|||||||
{ "debug", no_argument, NULL, 'd' },
|
{ "debug", no_argument, NULL, 'd' },
|
||||||
{ "delete-after", no_argument, NULL, 136 },
|
{ "delete-after", no_argument, NULL, 136 },
|
||||||
{ "dont-remove-listing", no_argument, NULL, 149 },
|
{ "dont-remove-listing", no_argument, NULL, 149 },
|
||||||
{ "email-address", no_argument, NULL, 154 }, /* undocumented (debug) */
|
|
||||||
{ "follow-ftp", no_argument, NULL, 142 },
|
{ "follow-ftp", no_argument, NULL, 142 },
|
||||||
{ "force-directories", no_argument, NULL, 'x' },
|
{ "force-directories", no_argument, NULL, 'x' },
|
||||||
{ "force-hier", no_argument, NULL, 'x' }, /* obsolete */
|
{ "force-hier", no_argument, NULL, 'x' }, /* obsolete */
|
||||||
@ -400,11 +399,6 @@ hpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:",
|
|||||||
case 150:
|
case 150:
|
||||||
setval ("simplehostcheck", "on");
|
setval ("simplehostcheck", "on");
|
||||||
break;
|
break;
|
||||||
case 154:
|
|
||||||
/* For debugging purposes. */
|
|
||||||
printf ("%s\n", ftp_getaddress ());
|
|
||||||
exit (0);
|
|
||||||
break;
|
|
||||||
case 155:
|
case 155:
|
||||||
setval ("bindaddress", optarg);
|
setval ("bindaddress", optarg);
|
||||||
break;
|
break;
|
||||||
|
@ -63,32 +63,6 @@ read_registry (HKEY hkey, char *subkey, char *valuename, char *buf, int *len)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
|
||||||
pwd_cuserid (char *where)
|
|
||||||
{
|
|
||||||
char buf[32], *ptr;
|
|
||||||
int len = sizeof (buf);
|
|
||||||
if (GetUserName (buf, (LPDWORD) &len) == TRUE)
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
else if (!!(ptr = getenv ("USERNAME")))
|
|
||||||
{
|
|
||||||
strcpy (buf, ptr);
|
|
||||||
}
|
|
||||||
else if (!read_registry (HKEY_LOCAL_MACHINE, "Network\\Logon",
|
|
||||||
"username", buf, &len))
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (where)
|
|
||||||
{
|
|
||||||
strncpy (where, buf, len);
|
|
||||||
return where;
|
|
||||||
}
|
|
||||||
return xstrdup (buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
windows_main_junk (int *argc, char **argv, char **exec_name)
|
windows_main_junk (int *argc, char **argv, char **exec_name)
|
||||||
{
|
{
|
||||||
|
63
src/netrc.c
63
src/netrc.c
@ -67,7 +67,7 @@ search_netrc (const char *host, const char **acc, const char **passwd,
|
|||||||
/* Find ~/.netrc. */
|
/* Find ~/.netrc. */
|
||||||
if (!processed_netrc)
|
if (!processed_netrc)
|
||||||
{
|
{
|
||||||
char *home = home_dir();
|
char *home = home_dir ();
|
||||||
|
|
||||||
netrc_list = NULL;
|
netrc_list = NULL;
|
||||||
processed_netrc = 1;
|
processed_netrc = 1;
|
||||||
@ -140,51 +140,58 @@ search_netrc (const char *host, const char **acc, const char **passwd,
|
|||||||
|
|
||||||
|
|
||||||
#ifdef STANDALONE
|
#ifdef STANDALONE
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
/* Normally, these functions would be defined by your package. */
|
/* Normally, these functions would be defined by your package. */
|
||||||
# define xmalloc malloc
|
# define xmalloc malloc
|
||||||
# define xfree free
|
# define xfree free
|
||||||
# define xstrdup strdup
|
# define xstrdup strdup
|
||||||
|
|
||||||
/* The function reads a whole line. It reads the line realloc-ing the
|
|
||||||
storage exponentially, doubling the storage after each overflow to
|
|
||||||
minimize the number of calls to realloc().
|
|
||||||
|
|
||||||
It is not an exemplary of correctness, since it kills off the
|
|
||||||
newline (and no, there is no way to know if there was a newline at
|
|
||||||
EOF). */
|
|
||||||
# define xrealloc realloc
|
# define xrealloc realloc
|
||||||
# define DYNAMIC_LINE_BUFFER 40
|
|
||||||
|
/* Read a line from FP. The function reallocs the storage as needed
|
||||||
|
to accomodate for any length of the line. Reallocs are done
|
||||||
|
storage exponentially, doubling the storage after each overflow to
|
||||||
|
minimize the number of calls to realloc() and fgets(). The newline
|
||||||
|
character at the end of line is retained.
|
||||||
|
|
||||||
|
After end-of-file is encountered without anything being read, NULL
|
||||||
|
is returned. NULL is also returned on error. To distinguish
|
||||||
|
between these two cases, use the stdio function ferror(). */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
read_whole_line (FILE *fp)
|
read_whole_line (FILE *fp)
|
||||||
{
|
{
|
||||||
char *line;
|
int length = 0;
|
||||||
int i, bufsize, c;
|
int bufsize = 81;
|
||||||
|
char *line = (char *)xmalloc (bufsize);
|
||||||
|
|
||||||
i = 0;
|
while (fgets (line + length, bufsize - length, fp))
|
||||||
bufsize = DYNAMIC_LINE_BUFFER;
|
|
||||||
line = xmalloc(bufsize);
|
|
||||||
/* Construct the line. */
|
|
||||||
while ((c = getc(fp)) != EOF && c != '\n')
|
|
||||||
{
|
{
|
||||||
if (i > bufsize - 1)
|
length += strlen (line + length);
|
||||||
line = (char *)xrealloc(line, (bufsize <<= 1));
|
assert (length > 0);
|
||||||
line[i++] = c;
|
if (line[length - 1] == '\n')
|
||||||
|
break;
|
||||||
|
/* fgets() guarantees to read the whole line, or to use up the
|
||||||
|
space we've given it. We can double the buffer
|
||||||
|
unconditionally. */
|
||||||
|
bufsize <<= 1;
|
||||||
|
line = xrealloc (line, bufsize);
|
||||||
}
|
}
|
||||||
if (c == EOF && !i)
|
if (length == 0 || ferror (fp))
|
||||||
{
|
{
|
||||||
xfree(line);
|
xfree (line);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (length + 1 < bufsize)
|
||||||
/* Check for overflow at zero-termination (no need to double the
|
/* Relieve the memory from our exponential greediness. We say
|
||||||
buffer in this case. */
|
`length + 1' because the terminating \0 is not included in
|
||||||
if (i == bufsize)
|
LENGTH. We don't need to zero-terminate the string ourselves,
|
||||||
line = (char *)xrealloc(line, i + 1);
|
though, because fgets() does that. */
|
||||||
line[i] = '\0';
|
line = xrealloc (line, length + 1);
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* STANDALONE */
|
#endif /* STANDALONE */
|
||||||
|
|
||||||
/* Maybe add NEWENTRY to the account information list, LIST. NEWENTRY is
|
/* Maybe add NEWENTRY to the account information list, LIST. NEWENTRY is
|
||||||
|
24
src/utils.c
24
src/utils.c
@ -431,31 +431,7 @@ uerrmsg (uerr_t errnum)
|
|||||||
/* The Windows versions of the following two functions are defined in
|
/* The Windows versions of the following two functions are defined in
|
||||||
mswindows.c. */
|
mswindows.c. */
|
||||||
|
|
||||||
/* A cuserid() immitation using getpwuid(), to avoid hassling with
|
|
||||||
utmp. Besides, not all systems have cuesrid(). Under Windows, it
|
|
||||||
is defined in mswindows.c.
|
|
||||||
|
|
||||||
If WHERE is non-NULL, the username will be stored there.
|
|
||||||
Otherwise, it will be returned as a static buffer (as returned by
|
|
||||||
getpwuid()). In the latter case, the buffer should be copied
|
|
||||||
before calling getpwuid() or pwd_cuserid() again. */
|
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
char *
|
|
||||||
pwd_cuserid (char *where)
|
|
||||||
{
|
|
||||||
struct passwd *pwd;
|
|
||||||
|
|
||||||
if (!(pwd = getpwuid (getuid ())) || !pwd->pw_name)
|
|
||||||
return NULL;
|
|
||||||
if (where)
|
|
||||||
{
|
|
||||||
strcpy (where, pwd->pw_name);
|
|
||||||
return where;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return pwd->pw_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
fork_to_background (void)
|
fork_to_background (void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user