From 2de3558925042506fe5694ba3b92ca6c5c59ce0f Mon Sep 17 00:00:00 2001 From: Izalia Mae Date: Mon, 18 Mar 2024 23:12:27 -0400 Subject: [PATCH] h --- gemi/server.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/gemi/server.py b/gemi/server.py index deaf10d..947b68a 100644 --- a/gemi/server.py +++ b/gemi/server.py @@ -10,6 +10,7 @@ from asyncio.exceptions import CancelledError from OpenSSL import crypto from pathlib import Path +from . import logger as logging from .error import GeminiError from .message import Request, Response from .router import Router, route @@ -17,6 +18,7 @@ from .transport import AsyncTransport if typing.TYPE_CHECKING: from asyncio import StreamReader, StreamWriter + from collections.abc import Callable from .router import RouteHandler @@ -94,7 +96,7 @@ class AsyncServer(dict): SERVERS[server.name] = server - def add_route(path: str, handler: RouteHandler) -> None: + def add_route(self, path: str, handler: RouteHandler) -> None: self.router.add_route(path, handler) @@ -139,7 +141,7 @@ class AsyncServer(dict): if self._server is not None: return - print(f"Starting server @ gemini://{self.host}:{self.port}") + logging.info(f"Starting server @ gemini://{self.host}:{self.port}") loop = asyncio.get_event_loop() @@ -148,7 +150,7 @@ class AsyncServer(dict): loop.add_signal_handler(sig, self.stop) except ValueError: - print(f"Cannot handle signal: {sig}") + logging.warning(f"Cannot handle signal: {sig}") self._server = await asyncio.start_server( client_connected_cb = self.handle_client, @@ -173,11 +175,11 @@ class AsyncServer(dict): loop.add_signal_handler(sig, signal.SIG_DFL) # type: ignore except ValueError: - print(f"Cannot handle signal: {sig}") + logging.warning(f"Cannot handle signal: {sig}") await self._server.wait_closed() - print("Shutting down...") + logging.info("Shutting down...") self._server = None @@ -202,8 +204,11 @@ class AsyncServer(dict): raise GeminiError(50, "Invalid response") except GeminiError as error: - traceback.print_exc() - response = Response(error.status, error.message.encode("utf-8"), "text/plain") + response = Response( + error.status, + (f"{error.status.reason}: {error.message}").encode("utf-8"), + "text/plain" + ) except Exception: response = Response(50, b"Server Error :/", "text/plain") @@ -211,7 +216,13 @@ class AsyncServer(dict): try: await transport.write(response.build()) - print(f"{transport.remote_address} {request.path} {response.status} {len(response.body)}") + logging.info( + "ip: %s, path: %s, status: %i, length: %i", + transport.remote_address, + request.path, + response.status, + len(response.body) + ) except Exception: traceback.print_exc() @@ -225,8 +236,8 @@ class AsyncServer(dict): name: str, context: ssl.SSLContext) -> int | None: - print(ssl_object) - print(name) + logging.debug(ssl_object) + logging.debug(name) return None