- 后台页面此前直接 Format 输出库内时间(服务器 UTC),比北京时间慢 8 小时 - 新增模板函数 time12/time12m:先按 Web 时区转换,输出「2026-08-20 下午 2:35:05」 - shortDate 改为 12 小时制且非今天的邮件也显示完整时间(今天「下午 2:35」, 今年「08-20 下午 2:35」,更早「2026-08-20 下午 2:35」) - 统一替换:admin/mails、admin/outbound 用 time12m;protocol-logs、 connections、bans、mail_view、banned、view 用 time12 - 时区修正:协议日志 from/to 筛选与「今日」统计边界按 Web 时区计算 (此前 time.Local 在服务器 UTC 时差 8 小时) - 邮件列表日期列自适应宽度适配更长格式;新增 timefmt_test.go 回归测试
78 lines
3.4 KiB
HTML
78 lines
3.4 KiB
HTML
{{define "banned"}}
|
|
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
<title>访问被禁止 - MailGo</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
|
|
"Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
|
background: linear-gradient(165deg, #fdecec 0%, #f6f8fc 55%, #eaf2ff 100%);
|
|
color: #1f2329; display: flex; justify-content: center; align-items: center; min-height: 100vh;
|
|
}
|
|
.banned-card {
|
|
background: #fff; border-radius: 14px;
|
|
box-shadow: 0 10px 40px rgba(227, 77, 89, 0.10);
|
|
padding: 48px; text-align: center; max-width: 480px; width: 100%;
|
|
}
|
|
.banned-icon {
|
|
width: 72px; height: 72px; margin: 0 auto 18px; border-radius: 50%;
|
|
background: #fde8e8; display: flex; align-items: center; justify-content: center;
|
|
font-size: 34px;
|
|
}
|
|
h1 { font-size: 22px; color: #e34d59; margin-bottom: 12px; }
|
|
p { color: #646a73; line-height: 1.7; margin-bottom: 8px; font-size: 14px; }
|
|
.detail {
|
|
background: #f8f9fb; border-radius: 10px; padding: 16px 18px;
|
|
margin: 18px 0; text-align: left;
|
|
}
|
|
.detail-row { display: flex; justify-content: space-between; padding: 7px 0; border-bottom: 1px solid #f0f1f3; }
|
|
.detail-row:last-child { border-bottom: none; }
|
|
.detail-label { color: #8f959e; font-size: 13px; }
|
|
.detail-value { color: #1f2329; font-weight: 600; font-size: 13px; }
|
|
.back-link {
|
|
display: inline-block; margin-top: 22px; color: #1677ff;
|
|
text-decoration: none; font-size: 14px;
|
|
}
|
|
.back-link:hover { text-decoration: underline; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="banned-card">
|
|
<div class="banned-icon">🚫</div>
|
|
<h1>您的 IP 已被暂时禁止访问</h1>
|
|
<p>由于登录失败次数过多,您的 IP 地址已被暂时封禁。</p>
|
|
{{if .entry}}
|
|
<div class="detail">
|
|
<div class="detail-row">
|
|
<span class="detail-label">IP 地址</span>
|
|
<span class="detail-value">{{.entry.IPAddress}}</span>
|
|
</div>
|
|
<div class="detail-row">
|
|
<span class="detail-label">封禁档位</span>
|
|
<span class="detail-value">{{if gt .entry.BanCount 3}}第 {{sub .entry.BanCount 3}} 次封禁{{else}}—{{end}}</span>
|
|
</div>
|
|
<div class="detail-row">
|
|
<span class="detail-label">原因</span>
|
|
<span class="detail-value">{{.entry.Reason}}</span>
|
|
</div>
|
|
<div class="detail-row">
|
|
<span class="detail-label">失败次数</span>
|
|
<span class="detail-value">{{.entry.FailCount}} 次</span>
|
|
</div>
|
|
<div class="detail-row">
|
|
<span class="detail-label">解封时间</span>
|
|
<span class="detail-value">{{time12 .entry.ExpiresAt}}</span>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<p style="font-size:13px;">请在解封时间后重试,或联系管理员。</p>
|
|
<a href="/login" class="back-link">返回登录页</a>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|