{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import field, checkbox, alert, pill, empty_state %} {% block page_title %}Eigene Lizenz{% endblock %} {% block page_sub %} {% if state and state.valid and state.activated %} aktiv · Rolle {{ role_labels.get(state.role, state.role) }} {% elif state and state.valid %}gültig, nicht aktiviert {% elif state and state.present %}ungültig {% else %}keine Lizenz installiert{% endif %} {% endblock %} {% block topbar_extra %} {{ icon('key', size=15) }} Signaturschlüssel {% endblock %} {% block content %} {% if signing_key_health.problems %} {% for problem in signing_key_health.problems %}{{ alert(problem, 'danger') }}{% endfor %} {% endif %} {% if state and state.error %}{{ alert(state.error, 'danger') }}{% endif %} {% if state and state.role == 'master' %} {{ alert('Diese Instanz ist die Wurzelinstanz. Nur sie darf Lizenzen für weitere Lizenzserver ausstellen -- diese Grenze hängt an der signierten Rolle dieser Lizenzdatei, nicht an einem Gruppenrecht. Ein lokaler Administrator eines Sub-Lizenzservers kann sie sich damit nicht selbst einräumen.', 'info', 'Rolle: Master') }} {% elif state and state.role == 'license_server' %} {{ alert('Diese Instanz ist ein Sub-Lizenzserver. Sie darf eigene Kunden, Tickets und Lizenzen verwalten -- aber keine weiteren Lizenzserver-Lizenzen ausstellen. Der eigene Bestand wird automatisch an den übergeordneten Master gemeldet.', 'info', 'Rolle: Lizenzserver') }} {% endif %}
{% if state and state.valid and state.status %}
{{ icon('key', size=17) }} Installierte Lizenz {% if state.activated %}{{ pill('aktiviert', 'online') }} {% else %}{{ pill('nicht aktiviert', 'warning') }}{% endif %} {% if state.issuer_pinned %}{{ pill('Aussteller gepinnt', 'info') }}{% endif %}
{{ type_labels.get(state.status.type, state.status.type) }} · {{ role_labels.get(state.role, state.role) }}
Inhaber
{{ state.customer_name or '–' | safe }}
Lizenz-ID
{{ state.status.license_id }}
Revision
{{ state.status.seq }}
Läuft ab
{% if state.status.lifetime %}{{ pill('unbefristet', 'online') }} {% else %} {{ state.status.expires_at | dt }} {% if state.status.expired %} {{ pill('abgelaufen', 'danger') }} {% if state.status.grace_active %}
Kulanzfrist läuft ({{ grace_days }} Tage).
{% endif %} {% elif state.status.expiring_soon %} {{ pill('in ' ~ state.status.days_left ~ ' Tagen', 'warning') }} {% else %} {{ pill('in ' ~ state.status.days_left ~ ' Tagen', 'online') }} {% endif %} {% endif %}
Übergeordneter Server
{{ state.status.master_endpoint or 'keiner (Wurzelinstanz oder Offline-Betrieb)' }}
Letzter Heartbeat
{{ state.last_heartbeat_at | dt }} {% if state.heartbeat_error %}
{{ state.heartbeat_error }}
{% endif %}
{% if current_user.has('settings_license.edit') %} {% endif %}
{% else %} {{ empty_state('Keine gültige Lizenz', 'Spielen Sie eine Lizenzdatei ein oder erzeugen Sie mit "tesm-license-admin bootstrap" die eigene Lizenz der Wurzelinstanz.', 'key') }} {% endif %} {% if pending %}
{{ icon('transfer', size=17) }} Offene Anfrage (Offline-Weg)
Aktion: {{ pending.action }}
{% endif %} {% if current_user.has('settings_license.edit') %}
{{ icon('upload', size=17) }} Lizenzdatei einspielen
Für einen Sub-Lizenzserver: die Datei, die der Master ausgestellt hat
{% if trusted_keys and current_user.is_admin %} {{ checkbox('allow_new_issuer', 'Wechsel des Ausstellers ausdrücklich zulassen') }} {% endif %}
{% endif %}
{{ icon('hard-drive', size=17) }} Diese Maschine
Hostname
{{ hostname }}
Fingerprint
{{ fingerprint }}
Signaturschlüssel
{{ signing_key_health.get('key_id') or 'fehlt' }}
{{ icon('shield', size=17) }} Vertrauenswürdige Aussteller
{{ trusted_keys | length }} gepinnte Schlüssel
{% if trusted_keys %}
{% for key in trusted_keys %}
{{ key.key_id }}
{{ key.label }} ({{ key.source | issuer_source }}, {{ key.added_at | date }})
{% endfor %}
{% else %}

Noch kein Aussteller gepinnt.

{% endif %}
{{ icon('puzzle', size=17) }} Was die Lizenz freischaltet
    {% for key, label in features.items() %}
  • {% if feature_allowed(key) %} {{ icon('check', size=14) }} {% else %} {{ icon('lock', size=14) }} {% endif %} {{ label }}
  • {% endfor %}
{% if may_issue_license_server %}

{{ icon('check', size=14) }} Diese Instanz darf Lizenzserver-Lizenzen ausstellen.

{% endif %}
{% endblock %}