mirror of
https://github.com/python/cpython.git
synced 2025-11-25 21:11:09 +00:00
Issue10063 - file:// scheme will stop accessing remote hosts via ftp protocol
This commit is contained in:
parent
6d7be5f86c
commit
383c32dd38
4 changed files with 17 additions and 7 deletions
|
|
@ -1004,8 +1004,12 @@ FileHandler Objects
|
||||||
.. method:: FileHandler.file_open(req)
|
.. method:: FileHandler.file_open(req)
|
||||||
|
|
||||||
Open the file locally, if there is no host name, or the host name is
|
Open the file locally, if there is no host name, or the host name is
|
||||||
``'localhost'``. Change the protocol to ``ftp`` otherwise, and retry opening it
|
``'localhost'``.
|
||||||
using :attr:`parent`.
|
|
||||||
|
This method is applicable only for local hostnames. When a remote hostname
|
||||||
|
is given, an :exc:`URLError` is raised.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.2
|
||||||
|
|
||||||
|
|
||||||
.. _ftp-handler-objects:
|
.. _ftp-handler-objects:
|
||||||
|
|
|
||||||
|
|
@ -731,11 +731,11 @@ class HandlerTests(unittest.TestCase):
|
||||||
# file:///blah.txt (a file)
|
# file:///blah.txt (a file)
|
||||||
# file://ftp.example.com/blah.txt (an ftp URL)
|
# file://ftp.example.com/blah.txt (an ftp URL)
|
||||||
for url, ftp in [
|
for url, ftp in [
|
||||||
("file://ftp.example.com//foo.txt", True),
|
("file://ftp.example.com//foo.txt", False),
|
||||||
("file://ftp.example.com///foo.txt", False),
|
("file://ftp.example.com///foo.txt", False),
|
||||||
# XXXX bug: fails with OSError, should be URLError
|
# XXXX bug: fails with OSError, should be URLError
|
||||||
("file://ftp.example.com/foo.txt", False),
|
("file://ftp.example.com/foo.txt", False),
|
||||||
("file://somehost//foo/something.txt", True),
|
("file://somehost//foo/something.txt", False),
|
||||||
("file://localhost//foo/something.txt", False),
|
("file://localhost//foo/something.txt", False),
|
||||||
]:
|
]:
|
||||||
req = Request(url)
|
req = Request(url)
|
||||||
|
|
|
||||||
|
|
@ -1228,8 +1228,8 @@ class FileHandler(BaseHandler):
|
||||||
url = req.selector
|
url = req.selector
|
||||||
if url[:2] == '//' and url[2:3] != '/' and (req.host and
|
if url[:2] == '//' and url[2:3] != '/' and (req.host and
|
||||||
req.host != 'localhost'):
|
req.host != 'localhost'):
|
||||||
req.type = 'ftp'
|
if not req.host is self.get_names():
|
||||||
return self.parent.open(req)
|
raise URLError("file:// scheme is supported only on localhost")
|
||||||
else:
|
else:
|
||||||
return self.open_local_file(req)
|
return self.open_local_file(req)
|
||||||
|
|
||||||
|
|
@ -1712,7 +1712,7 @@ class URLopener:
|
||||||
if not isinstance(url, str):
|
if not isinstance(url, str):
|
||||||
raise URLError('file error', 'proxy support for file protocol currently not implemented')
|
raise URLError('file error', 'proxy support for file protocol currently not implemented')
|
||||||
if url[:2] == '//' and url[2:3] != '/' and url[2:12].lower() != 'localhost/':
|
if url[:2] == '//' and url[2:3] != '/' and url[2:12].lower() != 'localhost/':
|
||||||
return self.open_ftp(url)
|
raise ValueError("file:// scheme is supported only on localhost")
|
||||||
else:
|
else:
|
||||||
return self.open_local_file(url)
|
return self.open_local_file(url)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,12 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #Issue10063: file:// scheme will stop accessing remote hosts via ftp
|
||||||
|
protocol. file:// urls had fallback to access remote hosts via ftp. This was
|
||||||
|
not correct, change is made to raise a URLError when a remote host is tried
|
||||||
|
to access via file:// scheme.
|
||||||
|
|
||||||
|
|
||||||
- Issue #1710703: Write structures for an empty ZIP archive when a ZipFile is
|
- Issue #1710703: Write structures for an empty ZIP archive when a ZipFile is
|
||||||
created in modes 'a' or 'w' and then closed without adding any files. Raise
|
created in modes 'a' or 'w' and then closed without adding any files. Raise
|
||||||
BadZipfile (rather than IOError) when opening small non-ZIP files.
|
BadZipfile (rather than IOError) when opening small non-ZIP files.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue