обнова 1.1.1 #2
28
main.py
28
main.py
@@ -53,7 +53,7 @@ class WebServer:
|
|||||||
addr = (real_addr, addr[1])
|
addr = (real_addr, addr[1])
|
||||||
request = data.split("\n")[0]
|
request = data.split("\n")[0]
|
||||||
file_name = request.split()[1][1:]
|
file_name = request.split()[1][1:]
|
||||||
file_path = self.directory + file_name
|
file_path = os.path.join(self.directory, file_name)
|
||||||
|
|
||||||
if os.path.isfile(file_path):
|
if os.path.isfile(file_path):
|
||||||
mime, _ = mimetypes.guess_type(file_path)
|
mime, _ = mimetypes.guess_type(file_path)
|
||||||
@@ -90,20 +90,24 @@ class WebServer:
|
|||||||
resp = await f.read()
|
resp = await f.read()
|
||||||
|
|
||||||
files = ""
|
files = ""
|
||||||
for file_name in sorted(os.listdir(file_path)): # TODO: добавить настройки отображения файла
|
base_path = file_name.strip('/')
|
||||||
file = "/".join(file_path.split("/")[1:]) +"/" + file_name
|
|
||||||
|
for item in sorted(os.listdir(file_path)):
|
||||||
if os.path.isdir(file_path + "/" + file_name):
|
item_path = os.path.join(file_path, item)
|
||||||
file_name = "/" + file_name
|
is_dir = os.path.isdir(item_path)
|
||||||
|
|
||||||
modify_time = (os.path.getmtime(file_path + "/" + file_name))
|
if base_path: rel_path = f"{base_path}/{item}"
|
||||||
|
else: rel_path = item
|
||||||
|
|
||||||
|
if is_dir: rel_path += "/"
|
||||||
|
|
||||||
|
modify_time = os.path.getmtime(item_path)
|
||||||
modify_datetime = datetime.datetime.fromtimestamp(modify_time)
|
modify_datetime = datetime.datetime.fromtimestamp(modify_time)
|
||||||
formatted_time = modify_datetime.strftime("%d.%m.%Y %H:%M:%S")
|
formatted_time = modify_datetime.strftime("%d.%m.%Y %H:%M:%S")
|
||||||
|
|
||||||
files += f'<a href="/{file}">{file_name}</a> | {formatted_time}<br>'
|
files += f'<a href="/{rel_path}">{item}</a> | {formatted_time}<br>' # TODO: добавить кастом для инфы про файлики
|
||||||
|
|
||||||
resp = resp.replace("<FILES>", files)
|
resp = resp.replace("<FILES>", files)
|
||||||
resp = resp.replace("//", "/")
|
|
||||||
resp = resp.encode()
|
resp = resp.encode()
|
||||||
headers = (
|
headers = (
|
||||||
"HTTP/1.1 200 OK\r\n"
|
"HTTP/1.1 200 OK\r\n"
|
||||||
@@ -113,7 +117,7 @@ class WebServer:
|
|||||||
"\r\n"
|
"\r\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
writer.write("".join(headers).encode() + resp)
|
writer.write(headers + resp)
|
||||||
else:
|
else:
|
||||||
await self.log(self.e404_msg, addr, file_path)
|
await self.log(self.e404_msg, addr, file_path)
|
||||||
response = (
|
response = (
|
||||||
|
Reference in New Issue
Block a user