{% extends "base.html" %} {% block title %}Kerbside consoles{% endblock %} {% block styles %} {% endblock %} {% block content %} {# Ten columns of names, ids, ports and counts: scroll the table rather than squash it. #}
{# Fields are named one by one, never iterated: the view passes db.get_consoles() dicts unfiltered, and they carry the hypervisor ticket alongside what is rendered here. #} {% for console in consoles %} {# The disclosure ids are derived from the row, not generated, so a later polling phase can morph the table and leave an operator's open disclosure open. #} {# Real anchors: both are GET downloads of a .vv file, so middle click, "copy link address" and a page with no JavaScript all keep working. #} {# Nothing to disclose when there is nothing to terminate: a dim zero says so without offering a control that does nothing. #} {% endfor %}
Name Source UUID Hypervisor Insecure Port Secure Port Admin
{{ console.name }} {{ console.source }} {{ console.uuid }} {% if console.hypervisor %} {{ console.hypervisor }} ({{ console.hypervisor_ip }}) {% else %} {{ console.hypervisor_ip }} {% endif %} {{ console.insecure_port }} {{ console.secure_port }}
{% include 'icons/audit.svg' %}Audit

Here are the 20 most recent audit events for this console.

    {% for event in console.audit %}
  • {{ event.timestamp.strftime('%Y-%m-%d %H:%M:%S') }}: {% if event.session_id %}{{ event.session_id }}{% endif %} {% if event.channel %}{{ event.channel }}{% endif %} {{ event.message }}
  • {% endfor %}

See more events.

{# Labelled because the visible summary is a bare number and the icon beside it is aria-hidden, so nothing else says what the number counts. #} {{ console.token_count }}{% include 'icons/tokens.svg' %}

There are {{ console.token_count }} active authentication tokens for this console.

An active authentication token is an opportunity to connect to the console. Sessions which were already open survive the expiration of their authentication token.

{% if console.sessions %}
{{ console.sessions | length }}{% include 'icons/sessions.svg' %}
{% for session_id in console.sessions %} {% endfor %}
{% else %} 0 {% endif %}
{% endblock %} {% block scripts %} {% include 'includes/two-step-terminate.html' %} {% endblock %}