{% extends "base.html" %} {% block content %}

License

Activation status, last contact with vendorawifi.com, and grace window remaining. The vendora-license daemon polls every {{ data.next_poll_secs // 60 }} minutes by default; use Refresh below to trigger an immediate retry (e.g. after fixing credentials).

{% if flash_msg %}
{{ flash_msg }}
{% endif %} {% if error_msg %}
{{ error_msg }}
{% endif %}
{# Top stat cards #}
Status
{% if data.status == 'active' %}Active {% elif data.status == 'awaiting_first_contact' %}Awaiting Activation {% elif data.status == 'grace_expired' %}Grace Expired {% elif data.status == 'unlicensed' %}Unlicensed {% else %}{{ data.status }}{% endif %}
{% if data.licensed %}server says: licensed{% else %}server says: not licensed{% endif %}
Last Contact
{% if data.last_contact_at %}{{ data.last_contact_age_s // 60 }}m ago {% else %}never{% endif %}
{% if data.last_contact_at %}successful round-trip {% else %}no successful round-trip yet{% endif %}
Grace Remaining
{% if data.grace_remaining_s < 0 %}expired {% else %}{{ (data.grace_remaining_s // 60) | duration }}{% endif %}
cache_max_age {{ data.cache_max_age_secs // 86400 }}d
Next Poll
{{ (data.next_poll_secs // 60) }}m
server-tuned cadence

Identity

VND-ID {% if data.vnd_id %} {{ data.vnd_id }} {% else %} — not yet generated {% endif %}

Server Contact

Last successful contact {% if data.last_contact_at %} {{ data.last_contact_at }} ({{ (data.last_contact_age_s // 60) | duration }} ago) {% else %} never {% endif %}
Last attempt {% if data.last_attempt_at %} {{ data.last_attempt_at }} ({{ (data.last_attempt_age_s // 60) | duration }} ago) {% else %} never {% endif %}
Last server time {% if data.last_server_time_unix %} {{ data.last_server_time_unix }} (anti-replay ratchet) {% else %} {% endif %}
Last error {% if data.last_error %} {{ data.last_error }} {% else %} {% endif %}

Cached credentials

Activation token {% if data.token_present %} cached {% else %} — not yet cached {% endif %}
Signature {% if data.signature_present %} verified {% else %} {% endif %}

Token and signature values are persisted internally but not displayed here — they're sensitive credentials. The status badges above confirm whether the daemon has them and whether the most recent verification check passed.

{% endblock %}