from http.server import BaseHTTPRequestHandler, HTTPServer from urllib.parse import parse_qs import json import logging from datetime import datetime # Configure logging logging.basicConfig( filename="duplicati_logs.log", level=logging.INFO, format="%(asctime)s - %(message)s", ) class DuplicatiLogHandler(BaseHTTPRequestHandler): def do_POST(self): # Get the length of the data content_length = int(self.headers["Content-Length"]) # Read the POST data post_data = self.rfile.read(content_length).decode("utf-8") # Parse the form-urlencoded data data = parse_qs(post_data) # Log the data self.log_data(data) # Send a response self.send_response(200) self.send_header("Content-type", "application/json") self.end_headers() response = {"status": "success", "message": "Log received"} self.wfile.write(json.dumps(response).encode("utf-8")) def log_data(self, data): """Log the received data to a file.""" log_entry = { "timestamp": datetime.now().isoformat(), "data": data, } logging.info(json.dumps(log_entry)) def run(server_class=HTTPServer, handler_class=DuplicatiLogHandler, port=8680): server_address = ("", port) httpd = server_class(server_address, handler_class) print(f"Starting Duplicati log server on port {port}...") httpd.serve_forever() if __name__ == "__main__": run()