URL sanitation.
This commit is contained in:
parent
32d62c2db4
commit
b5175238fb
@ -9,7 +9,7 @@ from typing import Any, Coroutine, Dict, Iterable, Optional, Union, cast
|
|||||||
from sanic.exceptions import SanicIsADirectoryError
|
from sanic.exceptions import SanicIsADirectoryError
|
||||||
from sanic.pages.autoindex import AutoIndex, FileInfo
|
from sanic.pages.autoindex import AutoIndex, FileInfo
|
||||||
from sanic.request import Request
|
from sanic.request import Request
|
||||||
from sanic.response import file, html
|
from sanic.response import file, html, redirect
|
||||||
from sanic.response.types import HTTPResponse
|
from sanic.response.types import HTTPResponse
|
||||||
|
|
||||||
|
|
||||||
@ -31,6 +31,10 @@ class DirectoryHandler:
|
|||||||
return file(index_file)
|
return file(index_file)
|
||||||
|
|
||||||
def index(self):
|
def index(self):
|
||||||
|
# Remove empty path elements, append slash
|
||||||
|
if "//" in self.url or not self.url.endswith("/"):
|
||||||
|
return redirect("/" + "".join([f"{p}/" for p in self.url.split("/") if p]))
|
||||||
|
# Render file browser
|
||||||
page = AutoIndex(self._iter_files(), self.url)
|
page = AutoIndex(self._iter_files(), self.url)
|
||||||
return html(page.render())
|
return html(page.render())
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user