{% extends "base.html" %} {% block title %}Dashboard · frp-jump{% endblock %} {% block content %}

Devices & tunnels

Wire up who can reach what. Changes apply next time each device's agent polls.

Devices

{% if devices %} {% if user.is_admin %}{% endif %} {% for d in devices %} {% if user.is_admin %} {% endif %} {% endfor %}
NameStatusEnrolledLast seenAgent
{{ d.name }} {% if d.revoked_at %}revoked {% else %}active{% endif %} {{ d.enrolled_at.strftime("%Y-%m-%d") }} {{ d.last_seen_at.strftime("%Y-%m-%d %H:%M") if d.last_seen_at else "never" }} {{ d.agent_version or "—" }} {% if not d.revoked_at %}
{% endif %}
{% else %}

No devices enrolled yet.

{% endif %} {% if user.is_admin %}

Add device

{% endif %}

Services exposed

{% if services %} {% for s in services %} {% endfor %}
NameDeviceProtocolPort
{{ s.name }} {{ s.device_name }} {{ s.protocol.value }} {{ s.target_port }}
{% else %}

No services yet.

{% endif %} {% if user.is_admin %} {% if devices %}

Add service

{% else %}

Add a device first.

{% endif %} {% endif %}

Access grants

{% if grants %} {% if user.is_admin %}{% endif %} {% for g in grants %} {% if user.is_admin %} {% endif %} {% endfor %}
ServiceExposed byGranted toStatus
{{ g.service_name }} {{ g.exposer_device_name }} {{ g.consumer_device_name }} {% if g.revoked %}revoked {% else %}active{% endif %} {% if not g.revoked %}
{% endif %}
{% else %}

No grants yet — nobody can reach anybody.

{% endif %} {% if user.is_admin %} {% if services and devices %}

Grant access

{% else %}

Add a device and a service first.

{% endif %} {% endif %}
{% if user.is_admin %}

Invite a user

{% endif %} {% endblock %}