安全性能优化
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user