Force directory paths to end with a trailing slash
This commit is contained in:
parent
c626494bfc
commit
371b7dd01d
|
@ -1,5 +1,10 @@
|
|||
# Jetforce Changelog
|
||||
|
||||
### Unreleased
|
||||
|
||||
- Force URLs to always end in trailing slashes when serving a directory. This
|
||||
reduces duplicate selectors and makes resolving relative links more reliable.
|
||||
|
||||
### v0.0.7 (2019-08-30)
|
||||
|
||||
- Added support for a primitive version of CGI scripting.
|
||||
|
|
19
jetforce.py
19
jetforce.py
|
@ -235,20 +235,23 @@ class StaticDirectoryApplication(JetforceApplication):
|
|||
if is_cgi and is_exe:
|
||||
return self.run_cgi_script(filesystem_path, request.environ)
|
||||
|
||||
else:
|
||||
mimetype = self.guess_mimetype(filesystem_path.name)
|
||||
generator = self.load_file(filesystem_path)
|
||||
return Response(Status.SUCCESS, mimetype, generator)
|
||||
mimetype = self.guess_mimetype(filesystem_path.name)
|
||||
generator = self.load_file(filesystem_path)
|
||||
return Response(Status.SUCCESS, mimetype, generator)
|
||||
|
||||
elif filesystem_path.is_dir():
|
||||
if request.path and not request.path.endswith("/"):
|
||||
url_parts = urllib.parse.urlparse(request.url)
|
||||
url_parts = url_parts._replace(path=request.path + "/")
|
||||
return Response(Status.REDIRECT_PERMANENT, url_parts.geturl())
|
||||
|
||||
index_file = filesystem_path / self.index_file
|
||||
if index_file.exists():
|
||||
generator = self.load_file(index_file)
|
||||
return Response(Status.SUCCESS, "text/gemini", generator)
|
||||
|
||||
else:
|
||||
generator = self.list_directory(url_path, filesystem_path)
|
||||
return Response(Status.SUCCESS, "text/gemini", generator)
|
||||
generator = self.list_directory(url_path, filesystem_path)
|
||||
return Response(Status.SUCCESS, "text/gemini", generator)
|
||||
|
||||
else:
|
||||
return Response(Status.NOT_FOUND, "Not Found")
|
||||
|
@ -310,7 +313,7 @@ class StaticDirectoryApplication(JetforceApplication):
|
|||
# Skip hidden and temporary files for security reasons
|
||||
continue
|
||||
elif file.is_dir():
|
||||
yield f"=>/{url_path / file.name}\t{file.name}/\r\n".encode()
|
||||
yield f"=>/{url_path / file.name}/\t{file.name}/\r\n".encode()
|
||||
else:
|
||||
yield f"=>/{url_path / file.name}\t{file.name}\r\n".encode()
|
||||
|
||||
|
|
Loading…
Reference in New Issue