server-tools/letsencrypt/controllers/main.py

31 lines
1.1 KiB
Python

# Copyright 2016,2022 Therp BV <https://therp.nl>.
# Copyright 2016 Antonio Espinosa <antonio.espinosa@tecnativa.com>.
# Copyright 2018 Ignacio Ibeas <ignacio@acysos.com>.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
# pylint: disable=too-few-public-methods,no-self-use
"""This controller handles the acme challenge call from Letsencrypt."""
import logging
import os
from odoo import _, http
from odoo.http import request
from ..models.letsencrypt import _get_challenge_dir
_logger = logging.getLogger(__name__)
class Letsencrypt(http.Controller):
"""This controller handles the acme challenge call from Letsencrypt."""
@http.route("/.well-known/acme-challenge/<filename>", auth="none")
def acme_challenge(self, filename):
"""Handle the acme challenge."""
path = os.path.join(_get_challenge_dir(), filename)
try:
with open(path, encoding="utf-8") as key:
return key.read()
except IOError:
_logger.exception(_("Error opening file %s"), path)
return request.not_found()