{% extends "simple_service.html" %}
{% comment %}
#
# This file is part of Plinth.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
{% endcomment %}

{% load bootstrap %}
{% load i18n %}

{% block page_head %}
<style type="text/css">
 .table .form .btn {
     width: 7em;
 }

 .form-inline {
     display: inline;
 }
</style>
{% endblock %}

{% block configuration %}
  {% if status.domains %}
    <div class="row">
      <div class="col-lg-12">
        <table class="table table-bordered table-condensed table-striped">
          <thead>
            <tr>
              <th>{% trans "Domain" %}</th>
              <th>{% trans "Certificate Status" %}</th>
              <th>{% trans "Website Security" %}</th>
              <th>{% trans "Actions" %}</th>
            </tr>
          </thead>
          <tbody>
            {% for domain, domain_status in status.domains.items %}
              <tr>
                <td>
                  {% if domain == status.current_domain.name %}
                    <b>{{ domain }}</b>
                  {% else %}
                    {{ domain }}
                  {% endif %}
                </td>
                <td>
                  {% if domain_status.certificate_available and domain_status.validity == "valid" %}
                    <span class="label label-success">
                      {% blocktrans trimmed with expiry_date=domain_status.expiry_date %}
                        Valid, expires on {{ expiry_date }}
                      {% endblocktrans %}
                    </span>
                  {% elif domain_status.certificate_available and not domain_status.validity == "valid" %}
                    <span class="label label-warning">
                      {% if "revoked" in domain_status.validity %}
                        {% blocktrans trimmed %}
                          Revoked
                        {% endblocktrans %}
                      {% elif "expired" in domain_status.validity %}
                        {% blocktrans trimmed with expiry_date=domain_status.expiry_date %}
                          Expired on {{ expiry_date }}
                        {% endblocktrans %}
                      {% elif "test" in domain_status.validity %}
                        {% blocktrans trimmed %}
                          Invalid test certificate
                        {% endblocktrans %}
                      {% else %}
                        {% blocktrans trimmed with reason=domain_status.validity %}
                          Invalid ({{ reason }})
                        {% endblocktrans %}
                      {% endif %}
                    </span>
                  {% else %}
                    <span class="label label-warning">
                      {% trans "No certificate" %}
                    </span>
                  {% endif %}
                </td>
                <td>
                  {% if domain_status.web_enabled %}
                    <span class="label label-success">{% trans "Enabled" %}</span>
                  {% else %}
                    <span class="label label-warning">{% trans "Disabled" %}</span>
                  {% endif %}
                </td>
                <td>
                  {% if domain_status.certificate_available %}
                    <form class="form form-inline" method="post"
                          action="{% url 'letsencrypt:obtain' domain %}">
                      {% csrf_token %}
                      <button class="btn btn-sm btn-default" type="submit">
                        {% trans "Re-obtain" %}</button>
                    </form>
                    <form class="form form-inline" method="post"
                          action="{% url 'letsencrypt:delete' domain %}">
                      {% csrf_token %}
                      <button class="btn btn-sm btn-default" type="submit">
                        {% trans "Delete" %}</button>
                    </form>
                    {% if "revoked" not in domain_status.validity %}
                      <form class="form form-inline" method="post"
                            action="{% url 'letsencrypt:revoke' domain %}">
                        {% csrf_token %}
                        <button class="btn btn-sm btn-default" type="submit">
                          {% trans "Revoke" %}</button>
                      </form>
                    {% endif %}
                  {% else %}
                    <form class="form form-inline" method="post"
                          action="{% url 'letsencrypt:obtain' domain %}">
                      {% csrf_token %}
                      <button class="btn btn-sm btn-primary" type="submit">
                        {% trans "Obtain" %}</button>
                    </form>
                  {% endif %}
                </td>
              </tr>
            {% endfor %}
          </tbody>
        </table>
      </div>
    </div>

    <form class="form" method="post"
          action="{% url 'letsencrypt:toggle_hooks' status.current_domain.name %}">
      {% csrf_token %}
      <div class="checkbox">
        <label>
          {% if status.current_domain.name and status.current_domain.has_cert %}
            <input type="checkbox" name="toggle_hooks" id="id_toggle_hooks"
                   {% if status.current_domain.manage_hooks_enabled %}checked{% endif %}
                   onchange="this.form.submit();">
            </input>
            <noscript>
              <button class="btn btn-sm btn-default" type="submit">
                {% trans "Update config" %}</button>
            </noscript>
          {% else %}
            <input type="checkbox" name="toggle_hooks" id="id_toggle_hooks"
                   class="disabled"></input>
            <noscript>
              <button class="btn btn-sm btn-default disabled" type="submit">
                {% trans "Update config" %}</button>
            </noscript>
          {% endif %}
          <span>
            {% if status.current_domain.name %}
              {% blocktrans with current_domain=status.current_domain.name %}
                Let Plinth manage certificate renewal of
                <b>{{ current_domain }}</b> (recommended)
              {% endblocktrans %}
            {% else %}
              {% blocktrans with current_domain=status.current_domain.name %}
                Let Plinth manage certificate renewal of the current domain (recommended)
              {% endblocktrans %}
            {% endif %}
          </span>
        </label>
      </div>
      <p class="help-block">
        {% if status.current_domain.name and status.current_domain.has_cert %}
          {% blocktrans trimmed %}
            If {{ box_name }} manages the certificate renewal for the current domain,
            it will ensure that all apps that use the certificate can use it, as soon
            as it gets renewed.
          {% endblocktrans %}
        {% elif not status.current_domain.has_cert %}
          {% blocktrans trimmed %}
            <b>No certificate available for the current domain.</b>
            First obtain a certificate to enable management of its renewal.
          {% endblocktrans %}
        {% else %}
          {% blocktrans trimmed %}
            <b>No current domain is configured.</b>
            First configure a domain to enable management of its certificates.
          {% endblocktrans %}
        {% endif %}
      </p>
    </form>
    {% include "diagnostics_button.html" with module="letsencrypt" enabled=True %}
  {% else %}
    {% blocktrans trimmed %}
      No domains have been configured. Configure domains to be able to
      obtain certificates for them.
    {% endblocktrans %}
  {% endif %}
{% endblock %}
