Files
MC_Report/public/index.html
canglan 257cd14051 feat: external API for QQ bot - client id+secret auth, ticket tracking, bans, per-server data
- db: api_clients table + server_groups.alias + tickets/bans server_name (auto-migrate)
- external.js: client_id+secret auth (multi-client, bcrypt, show-once secret),
  legacy x-external-key compat, JWT pass-through
  - POST /tickets (optional server), GET /tickets/track?token= (full lifecycle)
  - GET/POST /bans, reported-players/stats/all-tickets with server filter
  - GET /servers (alias list), client CRUD (owner/admin, audit logged)
  - resolveServer: alias | 分组/子服 | server_name
- polls.js: server_groups CRUD with alias (add/edit, dup check)
- servers page: alias display + edit; new 外部API page: client mgmt + quick docs
- API.md: full external API section (auth matrix, server param syntax)
- verified: 37 checks incl. resolveServer sandbox (alias/group/fallback)
2026-08-19 19:12:34 +08:00

84 lines
3.2 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title id="site-title">MC举报系统</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
</head>
<body>
<div id="top-bar">
<div class="top-bar-inner">
<a href="#/home" class="top-logo"><i class="fas fa-shield-halved"></i><span id="logo-text">MC举报系统</span></a>
<div id="top-auth">
<a href="#/login" class="btn btn-o btn-sm"><i class="fas fa-sign-in-alt"></i> 登录</a>
<a href="#/register" class="btn btn-p btn-sm"><i class="fas fa-user-plus"></i> 注册</a>
</div>
</div>
</div>
<div id="app">
<div id="public-page" class="page hidden"></div>
<div id="main-layout" class="hidden">
<aside id="sidebar">
<div class="sidebar-header"><i class="fas fa-shield-halved"></i><span id="sidebar-title">举报系统</span></div>
<nav id="sidebar-nav"></nav>
<div class="sidebar-footer">
<div id="user-info"></div>
<button class="btn btn-sm btn-outline w-full" id="sidebar-logout"><i class="fas fa-sign-out-alt"></i> 退出</button>
</div>
</aside>
<main id="main-content">
<header id="page-header"><h1 id="page-title"></h1><div id="page-actions"></div></header>
<div id="page-alert"></div>
<div id="page-content"></div>
</main>
</div>
</div>
<footer id="page-footer">
<div class="footer-inner">
<span id="footer-copyright">&copy; 2024 MC举报系统</span>
<span id="footer-icp"></span>
</div>
</footer>
<div id="modal-overlay" class="hidden">
<div class="modal-box">
<div class="modal-h"><h3 id="modal-title"></h3><button id="modal-close-btn">&times;</button></div>
<div class="modal-b" id="modal-body"></div>
</div>
</div>
<script src="js/utils.js"></script>
<script src="js/api.js"></script>
<script src="js/auth.js"></script>
<script src="js/pages/install.js"></script>
<script src="js/pages/login.js"></script>
<script src="js/pages/register.js"></script>
<script src="js/pages/forgot.js"></script>
<script src="js/pages/verify.js"></script>
<script src="js/pages/home.js"></script>
<script src="js/pages/dashboard.js"></script>
<script src="js/pages/tickets.js"></script>
<script src="js/pages/ticket-create.js"></script>
<script src="js/pages/ticket-detail.js"></script>
<script src="js/pages/tracking.js"></script>
<script src="js/pages/unclaimed.js"></script>
<script src="js/pages/users.js"></script>
<script src="js/pages/templates.js"></script>
<script src="js/pages/notifications.js"></script>
<script src="js/pages/external-api.js"></script>
<script src="js/pages/settings-page.js"></script>
<script src="js/pages/export-page.js"></script>
<script src="js/pages/polls.js"></script>
<script src="js/pages/servers.js"></script>
<script src="js/pages/bans.js"></script>
<script src="js/pages/logs.js"></script>
<script src="js/pages/features.js"></script>
<script src="js/pages/feature-detail.js"></script>
<script src="js/app.js"></script>
</body>
</html>