#!/usr/bin/python3 from http import server import json import socket import socketserver from systemd import journal class Handler(server.BaseHTTPRequestHandler): address_family = socket.AF_INET6 def log_request(self, code, size=None): pass def do_GET(self): self.send_response(200) self.end_headers() self.wfile.write(b"OK") def do_POST(self): length = int(self.headers['Content-Length']) post_data = json.loads(self.rfile.read(length).decode('utf-8')) self.forward_event(post_data) self.do_GET() def forward_event(self, event): level = str(getattr(journal, "LOG_" + event.get("level", "DEBUG"), journal.LOG_DEBUG)) journal.send( event['description'], PRIORITY=level, CURTIN_EVENT_TYPE=event["event_type"], CURTIN_NAME=event["name"], SYSLOG_IDENTIFIER="curtin_event", ) class HTTPServerV6(socketserver.TCPServer): address_family = socket.AF_INET6 def main(): """Return URL to pass to curtin.""" httpd = HTTPServerV6(("::", 0), Handler) port = httpd.server_address[1] print("http://[::1]:{}/".format(port), flush=True) httpd.serve_forever() if __name__ == '__main__': main()