diff --git a/src/server.py b/src/server.py index 0b93716..7b7c40f 100755 --- a/src/server.py +++ b/src/server.py @@ -2,6 +2,7 @@ import argparse import json +import logging import os import socketserver from http import HTTPStatus @@ -39,12 +40,18 @@ class MyHandler(SimpleHTTPRequestHandler): def __init__(self, *args, **kwargs): super().__init__( *args, - directory="public", + directory=os.path.join(os.path.dirname(__file__), "public"), **kwargs ) self.query: dict = {} self.data: Optional[dict|list] = None + def log_message(self, format, *args): + logging.info("%s - %s" % ( + self.client_address[0], + format % args + )) + def read_body_data(self): try: size: int = int(self.headers["Content-Length"]) @@ -206,9 +213,21 @@ def main(): MyHandler.MAX_PAYLOAD_SIZE = args.max_payload_size MyHandler.DATA_DIR = args.metadata_dir - with socketserver.TCPServer(("", port), MyHandler) as httpd: - print(f"Serving on port {port}") - httpd.serve_forever() + if not os.path.exists(args.metadata_dir): + os.mkdir(args.metadata_dir) + + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt=r"%Y-%m-%d %H:%M:%S" + ) + + try: + with socketserver.TCPServer(("", port), MyHandler) as httpd: + logging.info(f"Serving on port {port}") + httpd.serve_forever() + except KeyboardInterrupt: + pass if __name__ == "__main__":