diff options
author | Guido van Rossum <guido@python.org> | 2001-12-28 20:54:28 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-12-28 20:54:28 (GMT) |
commit | c33e077838c8fee729c726f59c441555847b07e6 (patch) | |
tree | 7ad1855e814fcaa9e7f0a0130680de9f574a5dc4 | |
parent | 556026967563ca59a0531bcb8a510dfc00a86635 (diff) | |
download | cpython-c33e077838c8fee729c726f59c441555847b07e6.zip cpython-c33e077838c8fee729c726f59c441555847b07e6.tar.gz cpython-c33e077838c8fee729c726f59c441555847b07e6.tar.bz2 |
SF patch #497420 (Eduardo PĂ©rez): ftplib: ftp anonymous password
Instead of sending the real user and host, use "anonymous@" (i.e. no
host name at all!) as the default anonymous FTP password. This avoids
privacy violations.
-rw-r--r-- | Doc/lib/libftplib.tex | 7 | ||||
-rw-r--r-- | Lib/ftplib.py | 21 | ||||
-rw-r--r-- | Misc/ACKS | 1 |
3 files changed, 11 insertions, 18 deletions
diff --git a/Doc/lib/libftplib.tex b/Doc/lib/libftplib.tex index 0d0d700..d4851ab 100644 --- a/Doc/lib/libftplib.tex +++ b/Doc/lib/libftplib.tex @@ -20,7 +20,7 @@ Here's a sample session using the \module{ftplib} module: \begin{verbatim} >>> from ftplib import FTP >>> ftp = FTP('ftp.cwi.nl') # connect to host, default port ->>> ftp.login() # user anonymous, passwd user@hostname +>>> ftp.login() # user anonymous, passwd anonymous@ >>> ftp.retrlines('LIST') # list directory contents total 24418 drwxrwsr-x 5 ftp-usr pdmaint 1536 Mar 20 09:48 . @@ -121,10 +121,7 @@ Log in as the given \var{user}. The \var{passwd} and \var{acct} parameters are optional and default to the empty string. If no \var{user} is specified, it defaults to \code{'anonymous'}. If \var{user} is \code{'anonymous'}, the default \var{passwd} is -\samp{\var{realuser}@\var{host}} where \var{realuser} is the real user -name (glanced from the \envvar{LOGNAME} or \envvar{USER} environment -variable) and \var{host} is the hostname as returned by -\function{socket.gethostname()}. This function should be called only +\code{'anonymous@'}. This function should be called only once for each instance, after a connection has been established; it should not be called at all if a host and user were given when the instance was created. Most FTP commands are only allowed after the diff --git a/Lib/ftplib.py b/Lib/ftplib.py index a176a87..cf1f32f 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -351,19 +351,14 @@ class FTP: if not passwd: passwd = '' if not acct: acct = '' if user == 'anonymous' and passwd in ('', '-'): - # get fully qualified domain name of local host - thishost = socket.getfqdn() - try: - if os.environ.has_key('LOGNAME'): - realuser = os.environ['LOGNAME'] - elif os.environ.has_key('USER'): - realuser = os.environ['USER'] - else: - realuser = 'anonymous' - except AttributeError: - # Not all systems have os.environ.... - realuser = 'anonymous' - passwd = passwd + realuser + '@' + thishost + # If there is no anonymous ftp password specified + # then we'll just use anonymous@ + # We don't send any other thing because: + # - We want to remain anonymous + # - We want to stop SPAM + # - We don't want to let ftp sites to discriminate by the user, + # host or country. + passwd = passwd + 'anonymous@' resp = self.sendcmd('USER ' + user) if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd) if resp[0] == '3': resp = self.sendcmd('ACCT ' + acct) @@ -330,6 +330,7 @@ Randy Pausch Marcel van der Peijl Samuele Pedroni Steven Pemberton +Eduardo Pérez Tim Peters Chris Petrilli Geoff Philbrick |