57 lines
2.4 KiB
HTML
57 lines
2.4 KiB
HTML
{{define "admin/settings.html"}}{{template "admin/layout" .}}{{end}}
|
|
{{define "admin_content_settings"}}
|
|
<div class="admin-page-head">
|
|
<div>
|
|
<h1>系统设置</h1>
|
|
<p>数据目录、敏感词配置与数据库备份</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-3">
|
|
<div class="col-lg-6">
|
|
<div class="admin-card">
|
|
<div class="admin-card-head">运行信息</div>
|
|
<div class="admin-card-body">
|
|
<div class="info-row"><div class="info-label">数据目录</div><div class="info-value"><code>{{.DataDir}}</code></div></div>
|
|
<div class="info-row"><div class="info-label">数据库文件</div><div class="info-value"><code>{{.DBPath}}</code></div></div>
|
|
<div class="info-row"><div class="info-label">监听端口</div><div class="info-value">{{.Port}}</div></div>
|
|
<div class="info-row"><div class="info-label">敏感词配置</div><div class="info-value"><code>{{.FilterPath}}</code></div></div>
|
|
<p class="text-muted small mt-3 mb-0">敏感词文件每行一个词,<code>#</code> 开头为注释,修改后需重启服务生效。</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6">
|
|
<div class="admin-card">
|
|
<div class="admin-card-head">数据库备份</div>
|
|
<div class="admin-card-body">
|
|
<p class="text-muted small">将 SQLite 数据库复制到数据目录,生成带时间戳的备份文件。</p>
|
|
<button class="btn btn-success" id="backupBtn" onclick="doBackup()">一键导出备份</button>
|
|
<div id="backupResult" class="mt-3"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{define "admin_scripts_settings"}}
|
|
<script>
|
|
function doBackup() {
|
|
var btn = document.getElementById('backupBtn');
|
|
setBtnLoading(btn, true);
|
|
adminFetch('/admin/api/backup', { method: 'POST' })
|
|
.then(function(d) {
|
|
showToast(d.message);
|
|
var html = '<div class="alert alert-success small mb-0">';
|
|
html += '<div>备份文件:<code>' + d.filename + '</code></div>';
|
|
if (d.download) {
|
|
html += '<a href="' + d.download + '" class="btn btn-sm btn-outline-success mt-2">下载备份文件</a>';
|
|
}
|
|
html += '<div class="text-muted mt-2">存储路径:' + d.path + '</div></div>';
|
|
document.getElementById('backupResult').innerHTML = html;
|
|
})
|
|
.catch(function(e) { showToast(e.message, 'danger'); })
|
|
.finally(function() { setBtnLoading(btn, false); });
|
|
}
|
|
</script>
|
|
{{end}}
|