#!/usr/bin/env python3
from functools import partial
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
import os


ROOT = os.environ.get("HAPP_SUB_ROOT", "/srv/happ-subscription")
HOST = os.environ.get("HAPP_SUB_HOST", "s1.ptiz.org")
BIND = os.environ.get("HAPP_HTTP_BIND", "0.0.0.0")
PORT = int(os.environ.get("HAPP_HTTP_PORT", "80"))


class Handler(SimpleHTTPRequestHandler):
    def do_HEAD(self):
        self._handle()

    def do_GET(self):
        self._handle()

    def _handle(self):
        if self.path.startswith("/.well-known/acme-challenge/"):
            if self.command == "HEAD":
                return super().do_HEAD()
            return super().do_GET()

        self.send_response(301)
        self.send_header("Location", f"https://{HOST}{self.path}")
        self.send_header("Cache-Control", "no-store")
        self.end_headers()


def main():
    handler = partial(Handler, directory=ROOT)
    server = ThreadingHTTPServer((BIND, PORT), handler)
    server.serve_forever()


if __name__ == "__main__":
    main()
