feat: add hostname and IP display to Ivanti queue panel
- Add migration to add hostname column to ivanti_todo_queue table - Update POST and batch POST endpoints to accept and store hostname - Pass hostName from findings data when adding items to queue - Display hostname and IP address in CARD queue section - Display hostname and IP address in vendor (FP/Archer) queue sections
This commit is contained in:
@@ -1430,28 +1430,62 @@ function QueuePanel({ open, items, onClose, onUpdate, onDelete, onDeleteMany, on
|
||||
{item.finding_id}
|
||||
</div>
|
||||
{isCardItem ? (
|
||||
item.ip_address && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.68rem', fontWeight: '600',
|
||||
color: done ? '#334155' : '#10B981',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
marginTop: '2px',
|
||||
}}>
|
||||
{item.ip_address}
|
||||
</div>
|
||||
)
|
||||
<>
|
||||
{item.hostname && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.68rem', fontWeight: '600',
|
||||
color: done ? '#334155' : '#94A3B8',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
marginTop: '2px',
|
||||
}}>
|
||||
{item.hostname}
|
||||
</div>
|
||||
)}
|
||||
{item.ip_address && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.68rem', fontWeight: '600',
|
||||
color: done ? '#334155' : '#10B981',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
marginTop: '2px',
|
||||
}}>
|
||||
{item.ip_address}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
) : (
|
||||
cves.length > 0 && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.62rem',
|
||||
color: done ? '#334155' : '#64748B',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',
|
||||
marginTop: '1px',
|
||||
}} title={cves.join(', ')}>
|
||||
{cveDisplay}
|
||||
</div>
|
||||
)
|
||||
<>
|
||||
{cves.length > 0 && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.62rem',
|
||||
color: done ? '#334155' : '#64748B',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',
|
||||
marginTop: '1px',
|
||||
}} title={cves.join(', ')}>
|
||||
{cveDisplay}
|
||||
</div>
|
||||
)}
|
||||
{item.hostname && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.62rem',
|
||||
color: done ? '#334155' : '#94A3B8',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
marginTop: '1px',
|
||||
}}>
|
||||
{item.hostname}
|
||||
</div>
|
||||
)}
|
||||
{item.ip_address && (
|
||||
<div style={{
|
||||
fontFamily: 'monospace', fontSize: '0.68rem', fontWeight: '600',
|
||||
color: done ? '#334155' : '#10B981',
|
||||
textDecoration: done ? 'line-through' : 'none',
|
||||
marginTop: '1px',
|
||||
}}>
|
||||
{item.ip_address}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -2484,6 +2518,7 @@ export default function VulnerabilityTriagePage({ filterDate, filterEXC }) {
|
||||
finding_title: finding.title || null,
|
||||
cves: finding.cves || [],
|
||||
ip_address: finding.ipAddress || null,
|
||||
hostname: finding.hostName || null,
|
||||
vendor: queueForm.vendor.trim(),
|
||||
workflow_type: queueForm.workflowType,
|
||||
}),
|
||||
@@ -2536,6 +2571,7 @@ export default function VulnerabilityTriagePage({ filterDate, filterEXC }) {
|
||||
finding_title: f.title || null,
|
||||
cves: f.cves || [],
|
||||
ip_address: f.ipAddress || null,
|
||||
hostname: f.hostName || null,
|
||||
} : { finding_id: id };
|
||||
});
|
||||
const res = await fetch(`${API_BASE}/ivanti/todo-queue/batch`, {
|
||||
|
||||
Reference in New Issue
Block a user