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