#!/usr/bin/env python3 import os import json from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.parse import urlparse, parse_qs class WebhookHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/plain') self.end_headers() self.wfile.write(b'Webhook server is running') def do_POST(self): content_length = int(self.headers.get('Content-Length', 0)) if content_length > 0: post_data = self.rfile.read(content_length) else: post_data = b'' # Log the webhook request print(f"Webhook received: {self.path}") print(f"Headers: {dict(self.headers)}") if post_data: print(f"Body: {post_data.decode('utf-8', errors='ignore')}") # Try to parse as JSON try: data = json.loads(post_data.decode('utf-8')) print(f"JSON data: {json.dumps(data, indent=2)}") except: pass # Respond with 200 OK self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(b'{"status": "ok"}') def log_message(self, format, *args): # Suppress default logging pass def run_server(port=8787, host='0.0.0.0'): server_address = (host, port) httpd = HTTPServer(server_address, WebhookHandler) print(f"Webhook server running on {host}:{port}") try: httpd.serve_forever() except KeyboardInterrupt: print("\nShutting down webhook server") httpd.shutdown() if __name__ == '__main__': run_server()