Files
Website/webhook.py
2025-10-09 22:13:06 -05:00

39 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import subprocess
from http.server import BaseHTTPRequestHandler, HTTPServer
DEPLOY_SECRET = os.getenv("DEPLOY_SECRET", "supersecret")
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
auth = self.headers.get("Authorization")
if auth != f"Bearer {DEPLOY_SECRET}":
self.send_response(403)
self.end_headers()
self.wfile.write(b"unauthorized\n")
print("[!] Unauthorized webhook attempt")
return
print("[+] Authorized redeploy request received")
# Pull latest Website
subprocess.run(["git", "-C", "/site", "pull", "--recurse-submodules"], check=False)
# Rebuild site
subprocess.run(["zola", "build", "--force"], cwd="/site/src", check=False)
subprocess.run("cp -r /site/src/public/* /usr/share/nginx/html/", shell=True, check=False)
self.send_response(200)
self.end_headers()
self.wfile.write(b"OK\n")
print("Site rebuilt successfully")
def run():
server = HTTPServer(("0.0.0.0", 5001), Handler)
print("Listening on port 5001 for /hooks/redeploy ...")
server.serve_forever()
if __name__ == "__main__":
run()