{# fragment — injiceres i #opscontent og pollers hvert 10s fra admin_ops.html #} {% set updates = versions|selectattr('status','equalto','update')|list %} {% set eol_now = versions|selectattr('eol')|selectattr('eol.state','equalto','eol')|list %} {% set eol_soon = versions|selectattr('eol')|selectattr('eol.state','equalto','soon')|list %}

Versioner & opdateringer

{% if updates %}{{ updates|length }} opdatering{{ 'er' if updates|length != 1 }} klar {% else %}alt opdateret{% endif %} {% if eol_now %}{{ eol_now|length }} EOL{% endif %} {% if eol_soon %}{{ eol_soon|length }} EOL snart{% endif %}
{% for v in versions %} {% set ec = v.eol.state if v.eol else 'none' %} {% set near3 = v.eol and v.eol.state == 'soon' and v.eol.days is defined and v.eol.days < 92 %} {% set rowclass = 'eolrow' if ec == 'eol' else ('eolsoon' if near3 else ('eolnear' if ec == 'soon' else ('updrow' if v.status == 'update' else ''))) %} {% endfor %}
TjenesteDin versionNyesteStatusSupport (EOL)
{{ v.name }} {{ v.current or '—' }} {{ v.latest or '—' }} {% if v.status == 'ok' %}✓ opdateret {% elif v.status == 'update' %}↑ {{ v.level or 'opdatering' }}: {{ v.latest }} {% elif v.status == 'latest-only' %}nyeste: {{ v.latest or '—' }} {% else %}ukendt{% endif %} {% if not v.eol %}— {% elif v.eol.state == 'eol' %}⚠ EOL{% if v.eol.date %} siden {{ v.eol.date }}{% endif %} {% elif v.eol.state == 'soon' %}EOL {{ v.eol.date }}{% if v.eol.days is defined %} ({{ v.eol.days }}d){% endif %} {% else %}{% if v.eol.date %}✓ til {{ v.eol.date }}{% else %}✓ supporteret{% endif %}{% endif %} {% if v.eol and v.eol.state in ('eol','soon') and v.eol.next %}→ {{ v.eol.next.cycle }}{% if v.eol.next.latest %} ({{ v.eol.next.latest }}){% endif %}{% endif %}

Static-assets

{{ version if version else '—' }}
deployet version (assets.weircon.dk)

Random-proxy egress {% if rp and not rp.error %} {{ rp.available }}/{{ rp.proxies_total }} live · {{ rp.inflight_total }} inflight i alt{% endif %}

{% if rp.error %}
Kunne ikke nå random-proxy: {{ rp.error }}
{% else %} {% set rot = rp.rotation %} {% if rot %}
Næste rollover
slot {{ rot.next_slot }} — {{ rot.next_egress_ip }} {% if rot.geo and rot.geo.flag %}{{ rot.geo.flag }} {{ rot.geo.iso }}{% endif %} ruller af om {{ '%d:%02d'|format(rot.eta_sec//60, rot.eta_sec%60) }} (interval {{ rot.interval_sec }}s · sidst: slot {{ rot.last_slot }} for {{ rot.last_rotated_age_sec }}s siden)
{% endif %}
{% for p in rp.proxies %}
#{{ p.id }} {{ '⚠ down' if not p.reachable else (p.state or 'live') }}
{{ p.egress_ip or '–' }}
{% if p.geo and p.geo.flag %}{{ p.geo.flag }} {{ p.geo.iso }} · {% endif %}{{ p.inflight or 0 }} inflight {% if p.latency_ms %}· {{ p.latency_ms }}ms{% endif %}
{% if rot and p.id == rot.next_slot %}
↻ ruller af næst
{% endif %}
{% endfor %}
{% endif %}