fix: include hostname overrides in all queue endpoint responses
This commit is contained in:
@@ -161,7 +161,11 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
// Fetch all inserted rows
|
// Fetch all inserted rows
|
||||||
const placeholders = insertedIds.map(() => '?').join(',');
|
const placeholders = insertedIds.map(() => '?').join(',');
|
||||||
db.all(
|
db.all(
|
||||||
`SELECT * FROM ivanti_todo_queue WHERE id IN (${placeholders})`,
|
`SELECT q.*, o.value AS override_hostname
|
||||||
|
FROM ivanti_todo_queue q
|
||||||
|
LEFT JOIN ivanti_finding_overrides o
|
||||||
|
ON o.finding_id = q.finding_id AND o.field = 'hostName'
|
||||||
|
WHERE q.id IN (${placeholders})`,
|
||||||
insertedIds,
|
insertedIds,
|
||||||
(fetchErr, fetchedRows) => {
|
(fetchErr, fetchedRows) => {
|
||||||
if (fetchErr) {
|
if (fetchErr) {
|
||||||
@@ -169,10 +173,15 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
return res.status(500).json({ error: 'Internal server error.' });
|
return res.status(500).json({ error: 'Internal server error.' });
|
||||||
}
|
}
|
||||||
|
|
||||||
const items = (fetchedRows || []).map((r) => ({
|
const items = (fetchedRows || []).map((r) => {
|
||||||
|
const item = {
|
||||||
...r,
|
...r,
|
||||||
|
hostname: r.override_hostname || r.hostname,
|
||||||
cves: r.cves_json ? JSON.parse(r.cves_json) : [],
|
cves: r.cves_json ? JSON.parse(r.cves_json) : [],
|
||||||
}));
|
};
|
||||||
|
delete item.override_hostname;
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
|
||||||
// Audit log (fire-and-forget)
|
// Audit log (fire-and-forget)
|
||||||
logAudit(db, {
|
logAudit(db, {
|
||||||
@@ -255,13 +264,23 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
return res.status(500).json({ error: 'Internal server error.' });
|
return res.status(500).json({ error: 'Internal server error.' });
|
||||||
}
|
}
|
||||||
db.get(
|
db.get(
|
||||||
'SELECT * FROM ivanti_todo_queue WHERE id = ?',
|
`SELECT q.*, o.value AS override_hostname
|
||||||
|
FROM ivanti_todo_queue q
|
||||||
|
LEFT JOIN ivanti_finding_overrides o
|
||||||
|
ON o.finding_id = q.finding_id AND o.field = 'hostName'
|
||||||
|
WHERE q.id = ?`,
|
||||||
[this.lastID],
|
[this.lastID],
|
||||||
(err2, row) => {
|
(err2, row) => {
|
||||||
if (err2 || !row) {
|
if (err2 || !row) {
|
||||||
return res.status(201).json({ id: this.lastID, message: 'Added to queue.' });
|
return res.status(201).json({ id: this.lastID, message: 'Added to queue.' });
|
||||||
}
|
}
|
||||||
res.status(201).json({ ...row, cves: row.cves_json ? JSON.parse(row.cves_json) : [] });
|
const result = {
|
||||||
|
...row,
|
||||||
|
hostname: row.override_hostname || row.hostname,
|
||||||
|
cves: row.cves_json ? JSON.parse(row.cves_json) : [],
|
||||||
|
};
|
||||||
|
delete result.override_hostname;
|
||||||
|
res.status(201).json(result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -343,13 +362,23 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
return res.status(500).json({ error: 'Internal server error.' });
|
return res.status(500).json({ error: 'Internal server error.' });
|
||||||
}
|
}
|
||||||
db.get(
|
db.get(
|
||||||
'SELECT * FROM ivanti_todo_queue WHERE id = ?',
|
`SELECT q.*, o.value AS override_hostname
|
||||||
|
FROM ivanti_todo_queue q
|
||||||
|
LEFT JOIN ivanti_finding_overrides o
|
||||||
|
ON o.finding_id = q.finding_id AND o.field = 'hostName'
|
||||||
|
WHERE q.id = ?`,
|
||||||
[id],
|
[id],
|
||||||
(err3, row) => {
|
(err3, row) => {
|
||||||
if (err3 || !row) {
|
if (err3 || !row) {
|
||||||
return res.json({ message: 'Queue item updated.' });
|
return res.json({ message: 'Queue item updated.' });
|
||||||
}
|
}
|
||||||
res.json({ ...row, cves: row.cves_json ? JSON.parse(row.cves_json) : [] });
|
const result = {
|
||||||
|
...row,
|
||||||
|
hostname: row.override_hostname || row.hostname,
|
||||||
|
cves: row.cves_json ? JSON.parse(row.cves_json) : [],
|
||||||
|
};
|
||||||
|
delete result.override_hostname;
|
||||||
|
res.json(result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -426,7 +455,11 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
|
|
||||||
// --- Fetch the inserted row ---
|
// --- Fetch the inserted row ---
|
||||||
db.get(
|
db.get(
|
||||||
'SELECT * FROM ivanti_todo_queue WHERE id = ?',
|
`SELECT q.*, o.value AS override_hostname
|
||||||
|
FROM ivanti_todo_queue q
|
||||||
|
LEFT JOIN ivanti_finding_overrides o
|
||||||
|
ON o.finding_id = q.finding_id AND o.field = 'hostName'
|
||||||
|
WHERE q.id = ?`,
|
||||||
[newId],
|
[newId],
|
||||||
(fetchErr, row) => {
|
(fetchErr, row) => {
|
||||||
if (fetchErr || !row) {
|
if (fetchErr || !row) {
|
||||||
@@ -450,10 +483,13 @@ function createIvantiTodoQueueRouter(db, requireAuth) {
|
|||||||
ipAddress: req.ip,
|
ipAddress: req.ip,
|
||||||
});
|
});
|
||||||
|
|
||||||
return res.status(201).json({
|
const result = {
|
||||||
...row,
|
...row,
|
||||||
|
hostname: row.override_hostname || row.hostname,
|
||||||
cves: row.cves_json ? JSON.parse(row.cves_json) : [],
|
cves: row.cves_json ? JSON.parse(row.cves_json) : [],
|
||||||
});
|
};
|
||||||
|
delete result.override_hostname;
|
||||||
|
return res.status(201).json(result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user