安全性能优化

This commit is contained in:
CN-JS-HuiBai
2026-04-10 22:16:43 +08:00
parent 66b5702d03
commit 710b6a719e

View File

@@ -158,6 +158,8 @@ async function getSiteSettingsRow() {
async function requireServerDetailsAccess(req, res, next) { async function requireServerDetailsAccess(req, res, next) {
try { try {
const settings = await getSiteSettingsRow(); const settings = await getSiteSettingsRow();
req.siteSettings = settings; // Store for later use (e.g. IP stripping)
const requiresLogin = settings.require_login_for_server_details !== undefined const requiresLogin = settings.require_login_for_server_details !== undefined
? !!settings.require_login_for_server_details ? !!settings.require_login_for_server_details
: true; : true;
@@ -1216,6 +1218,13 @@ app.get('/api/metrics/server-details', requireServerDetailsAccess, async (req, r
// Fetch detailed metrics // Fetch detailed metrics
const details = await prometheusService.getServerDetails(sourceUrl, instance, job); const details = await prometheusService.getServerDetails(sourceUrl, instance, job);
// Dynamic field removal based on security settings: PHYSICAL DATA STRIPPING
if (!req.siteSettings || !req.siteSettings.show_server_ip) {
delete details.ipv4;
delete details.ipv6;
}
res.json(details); res.json(details);
} catch (err) { } catch (err) {
console.error(`Error fetching server details for ${instance}:`, err.message); console.error(`Error fetching server details for ${instance}:`, err.message);