aa8af6c2e0
Flask + SQLite + Bootstrap5 暗色主题 - 仪表盘: 在线/离线统计 + 最近代理 + 操作日志 - 代理 CRUD: 增删改 + 启用/禁用 + 单/批量健康检测(SOCKS5) - 分组管理: 创建/删除/筛选 - 操作日志: 分页查询 - RESTful API + Web 界面 - 管理员登录认证 (SM_ADMIN_PASSWORD 环境变量)
44 lines
1.8 KiB
HTML
44 lines
1.8 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}日志 · SOCKS Manager{% endblock %}
|
|
|
|
{% block content %}
|
|
<h4 class="mb-4"><i class="bi bi-journal-text"></i> 操作日志</h4>
|
|
|
|
<div class="card">
|
|
<div class="card-body p-0">
|
|
<table class="table table-dark table-hover mb-0 table-sm">
|
|
<thead><tr><th>时间</th><th>级别</th><th>操作</th><th>目标</th><th>详情</th></tr></thead>
|
|
<tbody>
|
|
{% for l in pages.items %}
|
|
<tr>
|
|
<td>{{ l.timestamp.strftime('%Y-%m-%d %H:%M:%S') }}</td>
|
|
<td><span class="badge bg-{{ 'success' if l.level=='INFO' else 'warning' if l.level=='WARN' else 'danger' }}">{{ l.level }}</span></td>
|
|
<td>{{ l.action }}</td>
|
|
<td>{{ l.target or '-' }}</td>
|
|
<td>{{ l.detail or '-' }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="card-footer d-flex justify-content-between align-items-center" style="border-color:#2a2d3a">
|
|
<span class="text-muted small">共 {{ pages.total }} 条</span>
|
|
<nav>
|
|
<ul class="pagination pagination-sm mb-0">
|
|
{% if pages.has_prev %}
|
|
<li class="page-item"><a class="page-link" href="?page={{ pages.prev_num }}" style="color:#818cf8">上一页</a></li>
|
|
{% endif %}
|
|
{% for n in range(page_start, page_end + 1) %}
|
|
<li class="page-item {% if n==pages.page %}active{% endif %}">
|
|
<a class="page-link" href="?page={{ n }}" style="color:#818cf8;background:{{ 'transparent' if n!=pages.page else '#818cf8' }};border-color:#2a2d3a">{{ n }}</a></li>
|
|
{% endfor %}
|
|
{% if pages.has_next %}
|
|
<li class="page-item"><a class="page-link" href="?page={{ pages.next_num }}" style="color:#818cf8">下一页</a></li>
|
|
{% endif %}
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|