| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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()
|