{# Certificates. The one fact that matters here is how long is left, so it is what the rail encodes: green while there is time, amber inside certbot's own thirty day renewal window, red once the browser has already started refusing the site. Below the lineages sit the domains this machine serves without one. That is the whole issuing interface: the panel knows every domain it answers for, so the operator picks one instead of typing it and finding out afterwards that certbot disagreed about the spelling. #} {% extends "base.html" %} {% import "_macros.html" as m %} {% block title %}Certificates{% endblock %} {% block content %} {% set subtitle = (rows | length) ~ " on this machine, " ~ expiring ~ " needing attention" %} {% call m.page_head("Certificates", subtitle if rows else none) %} {% if rows %} {{ m.action_button("Renew all due", "/api/certs/renew-all", "Renew every certificate that is due? certbot contacts the certificate authority for each one and reloads the web server.", "Renewal started for every certificate that is due") }} {% endif %} {% endcall %} {% if problem %} {{ m.problem(problem.fix, problem.output) }} {% endif %} {% if rows %}
Nothing could be read from certbot, so this machine cannot say which domains are without a certificate.
{% else %}Every domain this machine serves is covered.
{% endif %}