{% extends "operator/base.html" %} {% load i18n %} {% block op_title %}{{ gateway.name }}{% endblock %} {% block op_content %} {% with gw=gateway %}

{{ gw.name }}

{% translate "Address" %}
https://{{ gw.fqdn }}
{% translate "Status" %}
{% include "gateways/_gw_status.html" %}{% if gw.online %}
{% blocktranslate trimmed with time=gw.last_seen|date:"SHORT_DATETIME_FORMAT" %}last heartbeat {{ time }}{% endblocktranslate %}{% endif %}
{% translate "Customer" %}
{{ org.name }}
{% translate "Version" %}
{{ gw.version|default:"–" }}{% if gw.uptime_s %} · {% blocktranslate trimmed with seconds=gw.uptime_s %}uptime {{ seconds }} s{% endblocktranslate %}{% endif %}
{% translate "Operating mode" %}
{{ gw.get_uplink_mode_display }}
{% translate "Tunnel to the server" %}
{% include "gateways/_uplink_status.html" %}{% if gw.uplink.endpoint %}
{% blocktranslate trimmed with endpoint=gw.uplink.endpoint %}from {{ endpoint }}{% endblocktranslate %}{% endif %}
{% translate "Uplink" %}
{{ gw.uplink_address }}{% if gw.uplink_last_handshake %} · {% blocktranslate trimmed with time=gw.uplink_last_handshake|date:"SHORT_DATETIME_FORMAT" %}handshake {{ time }}{% endblocktranslate %}{% endif %}
{{ gw.uplink_public_key }}{% if gw.uplink_key_changed %}
{% blocktranslate trimmed with time=gw.uplink_key_changed|date:"SHORT_DATETIME_FORMAT" %}Key replaced on {{ time }}{% endblocktranslate %}{% endif %}
{% translate "Phone side" %}
UDP {{ gw.phone_endpoint_port }}
{{ gw.phone_public_key }}
{% translate "Forwards" %}
{% for r in gw.effective_forwards %}{{ r.name }} ({{ r.port }} → {{ r.ip }}:{{ r.target_port }}{% if r.access == "service" %}, {% translate "service" context "access" %}{% endif %}){% if not forloop.last %}
{% endif %}{% empty %}{% translate "none" context "forwards" %}{% endfor %}
{% translate "Manage forwards" %}
{% translate "Phones" %}
{% blocktranslate trimmed with total=gw.phones_total enabled=gw.phones_enabled %}{{ total }} total · {{ enabled }} allowed{% endblocktranslate %}{% if gw.phones_active is not None %} · {% blocktranslate trimmed with n=gw.phones_active %}{{ n }} active{% endblocktranslate %}{% endif %} · {% blocktranslate trimmed with version=gw.peers_version %}list version {{ version }}{% endblocktranslate %}
{% translate "Show phones" %}{% if gw.is_active %} · {% translate "Add phone" %}{% endif %}
{% translate "Certificate" %}
{% if gw.cert_version_deployed %}{% blocktranslate trimmed with version=gw.cert_version_deployed %}Version {{ version }}{% endblocktranslate %}{% if gw.cert_not_after_deployed %}, {% blocktranslate trimmed with date=gw.cert_not_after_deployed|date:"SHORT_DATE_FORMAT" %}valid until {{ date }}{% endblocktranslate %}{% endif %}{% else %}{% translate "none yet (self-signed)" %}{% endif %} {% if cert_current %}{% translate "current" %}{% else %}· {% blocktranslate trimmed with version=gateway.organisation.cert_version %}Customer: version {{ version }}{% endblocktranslate %}{% endif %}
{% translate "Theme" %}
{% blocktranslate trimmed with version=gw.theme_version_deployed %}Version {{ version }}{% endblocktranslate %} · {% blocktranslate trimmed with name=zone.theme_version %}Organisation: {{ name }}{% endblocktranslate %}
{% translate "Registered" %}
{{ gw.created|date:"SHORT_DATETIME_FORMAT" }}
{% if heartbeats %}

{% translate "Recent heartbeats" %}

{% for h in heartbeats %}{% endfor %}
{% translate "Time" %}{% translate "Version" %}{% translate "Phones active/total" %}{% translate "Certificate" %}
{{ h.received_at|date:"SHORT_DATETIME_FORMAT" }}{{ h.version|default:"–" }} {{ h.phones_active }}/{{ h.phones_total }}{{ h.cert_version|default:"–" }}
{% endif %}

{% translate "Manage" %}

{% translate "Rename" %} {% translate "Display name only; the address stays." %}

{% if gw.is_active and gw.uplink_mode != "rivet" %}

{% translate "Generate router configuration …" %} {% translate "Mode C: new uplink key for the router, shown once." %}

{% endif %} {% if not gw.revoked %}

{% translate "Block …" %} {% translate "All phones lose access immediately." %}

{% translate "Remove …" %} {% translate "Blocks and deletes the gateway permanently." %}

{% else %}
{% csrf_token %}

{% translate "Remove …" %}

{% endif %}
{% if gateway.rivet_bound %}{% include "gateways/_services.html" %}{% include "gateways/_firewall.html" %}{% endif %} {% endwith %} {% endblock %}