From 45156ab4aebbfad8464d33fac3fda9a0462fb5d7 Mon Sep 17 00:00:00 2001 From: pablusha Date: Thu, 7 Aug 2025 19:41:38 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=BD=D0=BE=20=D0=B2=D1=81=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 91cbae3..0a6e740 100644 --- a/main.py +++ b/main.py @@ -44,8 +44,8 @@ class WebServer: async def handle(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None: addr = writer.get_extra_info("peername") await self.log(self.conn_msg, addr) - data = await reader.read(self._read_buffer) - data = unquote(data.decode()) + rdata = await reader.read(self._read_buffer) + data = rdata.decode() if not data: return real_addr = None @@ -56,9 +56,14 @@ class WebServer: if real_addr and self.proxied: addr = (real_addr, addr[1]) + request = data.split("\n")[0] - file_name = request.split()[1][1:] - file_path = os.path.join(self.directory, file_name) + parts = request.split() + if len(parts) < 2: return + + path = unquote(parts[1]) + file_name = path[1:] if path.startswith('/') else path + file_path = os.path.abspath(os.path.join(self.directory, file_name)) if os.path.isfile(file_path): mime, _ = mimetypes.guess_type(file_path) @@ -113,7 +118,7 @@ class WebServer: modify_datetime = datetime.datetime.fromtimestamp(modify_time) formatted_time = modify_datetime.strftime("%d.%m.%Y %H:%M:%S") - files += f'{item} | {formatted_time}
' + files += f'{item} | {formatted_time}
\n' resp = resp.replace("", files) resp = resp.encode()