{{ pageTitles[view] }}
{{ userRole }} {{ loginForm.username?.[0]?.toUpperCase() || 'A' }}
{{ dashboardState.loaded ? '正在刷新仪表盘数据...' : '正在加载仪表盘数据...' }}
授权汇总
按正式 MEM 授权口径统计,点击应用可直接进入对应授权列表。
进入授权中心
授权总数{{ dashboardMetric('total') }}
已绑定账号{{ dashboardMetric('bound_accounts') }}
未使用授权{{ dashboardMetric('unused') }}
客户端授权失败(24 小时)
这里只统计已到达服务器的授权拒绝;网络断开不会被误算。
共 {{ stats.mem_authorization.auth_failures_24h?.total || 0 }} 次
最近 24 小时没有授权拒绝
{{ item.label }}
{{ item.error_code }}
{{ item.count }}
最近:{{ formatDate(item.last_seen_at) }}
操作日志
统计数据加载成功后显示操作日志
暂无操作日志
{{ formatDate(log.created_at) }}
{{ log.action }}
{{ log.details }}
我的应用
新建应用
机器黑名单 (硬件指纹)
5 个独立指纹任一命中即拒 手动封禁
运行时资源
上传新变体
{{ group.resource_id }} {{ resourceKindLabel(group.items[0]) }} {{ group.items.length }} 个变体
管理员列表
新增管理员
站点配置
刷新
这里的内容会被客户端读取后展示在卡密对话框 / 主面板顶栏 / 关于页等位置. 改完立即生效, 客户端下次启动时拉到新值.
修改密码
当前账号
{{ loginForm.username }} {{ userRole }}
保存更改
授权中心
{{ currentMemApp.display_name }}
按应用拆分授权,当前应用的卡密、绑定账号和在线人数只在本页内聚合。
搜索 批量加时 ({{ memSelectedLicenses.length }}) 批量删除 ({{ memSelectedLicenses.length }}) 清理过期 ({{ memSummary.expired }}) 生成授权
授权总数
{{ memSummary.total }}
有效授权
{{ memSummary.active }}
在线账号
{{ memSummary.online_accounts }}
已绑账号
{{ memSummary.bound_accounts }}
封禁授权
{{ memSummary.banned }}
未发放
{{ memSummary.unused }}
机器码有效
{{ memSummary.profile_feature_active || 0 }}
当前只显示 {{ currentMemApp?.display_name || '-' }} 的授权数据;新增应用后可在右上角切换,避免不同产品的卡密混在一起。
搜索 封禁角色 ID
搜索 批量解绑 ({{ memArchiveSelected.length }})
搜索 未使用 {{ memUnbindCardSummary.unused }} · 已使用 {{ memUnbindCardSummary.used }}
用户报错日志
这里只展示客户端已签名上报的崩溃、后台任务异常和突然终止诊断,不触发封卡、封设备或 IP 限制。
刷新
安全中心
MEM 防护
先按结论处理:强证据再复核封禁,旧版本先通知更新,过期卡密和弱信号只记录。
只看崩溃 刷新
IP、加速器、虚拟机和共享机器码只作为辅助证据,不单独封禁。旧版本、未登记包、哈希不匹配优先按“需要更新”处理;过期卡密不当作攻击事件。
需要处理
{{ securityDecisionCount('handle') }}
强证据或已执行封禁,打开详情复核对象和原因。
需要更新
{{ securityDecisionCount('update') }}
旧版本、发布包不一致,先通知客户更新,不直接封禁。
仅观察
{{ securityDecisionCount('observe') }}
过期卡密、单次失败和弱信号,仅保留记录。
高级筛选与技术统计
应用筛选
事件 {{ memSecuritySummary.total }} · 严重 {{ memSecuritySummary.critical }} · 自动封禁 {{ memSecuritySummary.auto_bans }} · 只记录 {{ memSecuritySummary.record_only }} · 生效设备拒绝 {{ memSecuritySummary.active_denied_devices }} · IP 策略:仅审计
默认只显示时间、对象、结论和建议;点击行左侧箭头查看“为什么”和完整证据。
刷新
刷新 登记发布包
发布门禁状态 当前运行 {{ memReadinessLoading ? '检查中' : (!memReadinessLoaded ? (memReadinessError ? '读取失败' : '未检查') : (memReadiness.runtime_ok ? '正常' : '异常')) }} {{ memReadinessLoading ? '正在读取现网运行条件' : (memReadinessLoaded ? (memReadinessError ? '本次复查未完成,继续显示上次结果' : (memReadiness.runtime_ok ? '现网运行条件已满足' : '存在影响现网运行的阻断项')) : (memReadinessError ? '未取得当前状态' : '尚未执行现网门禁检查')) }} 严格模式 {{ memReadinessLoading ? '检查中' : (!memReadinessLoaded ? (memReadinessError ? '读取失败' : '未检查') : (memReadiness.commercial_strict ? (memReadiness.strict_ready ? '正常' : '阻断') : '未启用')) }} {{ memReadinessLoading ? '正在读取 strict 预检结果' : (memReadinessLoaded ? (memReadinessError ? '本次复查未完成,继续显示上次结果' : (memReadiness.commercial_strict ? '当前按严格门禁执行' : ((memReadiness.strict_blockers || []).length ? `预检发现 ${(memReadiness.strict_blockers || []).length} 项,展开查看` : '启用前仍需执行正式全量预检'))) : (memReadinessError ? '请点击复查重新读取' : '检查完成后显示严格模式状态')) }} 复查 最近检查:{{ formatDate(memReadinessCheckedAt) }}
当前运行问题
- {{ item }}
运行提醒
- {{ item }}
strict 配置参考与技术明细
这里展示当前配置的参考检查;严格模式关闭时不代表已经通过完整启用验收。正式启用时会重新检查保护器、发布门禁、运行自测和最终逆向复查是否形成同一 Build 的证明闭环;缺少门禁/运行自测/最终逆向复查证明会阻断部署。
严格模式 {{ memReadiness.commercial_strict ? '开' : '关' }} 告警 {{ memReadiness.security_alert_webhook_configured ? '开' : '关' }} 告警签名 {{ memReadiness.security_alert_webhook_signed ? '开' : '关' }} 中继认证 {{ memReadiness.relay_internal_auth_configured ? '开' : '关' }} 热路径索引 {{ memReadiness.hot_path_indexes_ok ? '正常' : '缺失' }} 后台资源 {{ memReadiness.admin_frontend_assets_ok ? '正常' : '异常' }} 操作审计 {{ memReadiness.operation_audit_log_ok ? '正常' : '破损' }} 篡改审计 {{ memReadiness.tamper_event_audit_ok ? '正常' : '破损' }} SQLite 残留 {{ !memReadiness.runtime_sqlite_artifacts_checked ? '未检查' : (memReadiness.runtime_sqlite_artifacts_ok ? '已清理' : '有残留') }} DB {{ memReadiness.db_backend || '-' }} pool {{ memReadiness.db_pool_capacity || 0 }}/{{ memReadiness.db_min_pool_capacity || 0 }} 生效发布 {{ memReadiness.active_release_builds || 0 }}/{{ memReadiness.release_builds || 0 }}
允许名单: {{ (memReadiness.allowlist_hashes || []).length }}
生效哈希: {{ (memReadiness.active_release_hashes || []).length }}
期望签名主体: {{ (memReadiness.expected_release_signers || []).length }}
生效签名主体: {{ (memReadiness.active_release_signers || []).length }}
保护器: {{ (memReadiness.active_release_protector_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}
商业门禁: {{ (memReadiness.active_release_gate_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}
运行自测: {{ (memReadiness.active_release_runtime_smoke_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}
最终逆向复查: {{ (memReadiness.active_release_final_reverse_audit_statuses || []).map(v => securityLabel(v, 'release_status')).join(',') || '-' }}
数据库连接池: {{ memReadiness.db_pool_size || 0 }} + {{ memReadiness.db_pool_max_overflow || 0 }} = {{ memReadiness.db_pool_capacity || 0 }} / 最小 {{ memReadiness.db_min_pool_capacity || 0 }}
中继内部认证: {{ memReadiness.relay_internal_auth_configured ? '已配置' : '缺失' }}
设备拒绝策略: {{ securityLabel(memReadiness.device_deny_hit_action, 'action') }}, 公共机器码阈值 {{ memReadiness.device_deny_common_hwid_threshold || 0 }}, IP {{ securityLabel(memReadiness.device_deny_ip_policy || 'audit_only', 'policy') }}
强制告警: {{ memReadiness.security_alert_require_webhook ? '是' : '否' }}
热路径索引: {{ (memReadiness.present_hot_path_indexes || []).length }}/{{ ((memReadiness.present_hot_path_indexes || []).length + (memReadiness.missing_hot_path_indexes || []).length) }}
后台资源: {{ (memReadiness.admin_frontend_external_refs || []).length }} 外链 / {{ (memReadiness.admin_frontend_missing_assets || []).length }} 缺失 / {{ (memReadiness.admin_frontend_invalid_assets || []).length }} 无效
操作审计: {{ memReadiness.operation_audit_log_checked_rows || 0 }}/{{ memReadiness.operation_audit_log_rows || 0 }} 已检查, {{ memReadiness.operation_audit_log_broken_rows || 0 }} 破损
篡改审计: {{ memReadiness.tamper_event_audit_checked_rows || 0 }}/{{ memReadiness.tamper_event_audit_rows || 0 }} 已检查, {{ memReadiness.tamper_event_audit_broken_rows || 0 }} 破损
SQLite 残留: {{ (memReadiness.runtime_sqlite_artifacts || []).join(',') || (memReadiness.runtime_sqlite_artifacts_checked ? '已清理' : '未检查') }}
严格模式阻断项
- {{ item }}
警告项
- {{ item }}