71214524f4
- Multi-tenant client/proxy management with Flask+SQLite - Frps server control (start/restart/token rotation) - Generate frpc.ini with shared server token + admin API - Dashboard API integration (live client/proxy status) - RBAC: admin/tenant_admin/user roles - Audit logging for all operations - Systemd service files included - Requires legacy INI format (frp 0.70 TOML auth broken)
33 lines
1.1 KiB
HTML
33 lines
1.1 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}审计日志 · frps-manager{% endblock %}
|
|
{% block content %}
|
|
<h1>审计日志</h1>
|
|
<p class="muted small">共 {{ total }} 条</p>
|
|
<table class="table">
|
|
<thead>
|
|
<tr><th>时间</th><th>用户</th><th>动作</th><th>对象</th><th>详情</th><th>IP</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for e in items %}
|
|
<tr>
|
|
<td>{{ e.created_at|fmt_dt }}</td>
|
|
<td>{{ e.username or '-' }}</td>
|
|
<td><span class="action-tag">{{ e.action }}</span></td>
|
|
<td>
|
|
{{ e.target_type or '-' }}
|
|
{% if e.target_label %}<br><code>{{ e.target_label }}</code>{% endif %}
|
|
</td>
|
|
<td>{{ e.detail or '' }}</td>
|
|
<td><code>{{ e.ip or '-' }}</code></td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% if total > per %}
|
|
<div class="pagination">
|
|
{% if page > 1 %}<a href="?page={{ page-1 }}">上一页</a>{% endif %}
|
|
<span class="muted">第 {{ page }} 页 / 共 {{ ((total + per - 1) // per) }} 页</span>
|
|
{% if page * per < total %}<a href="?page={{ page+1 }}">下一页</a>{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %} |