it
This commit is contained in:
@@ -740,26 +740,21 @@ class DNSReconApp {
|
||||
this.elements.providerList.appendChild(providerItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show node details modal
|
||||
* @param {string} nodeId - Node identifier
|
||||
* @param {Object} node - Node data
|
||||
* Generates the HTML for the node details view.
|
||||
* @param {Object} node - The node object.
|
||||
* @returns {string} The HTML string for the node details.
|
||||
*/
|
||||
showNodeModal(nodeId, node) {
|
||||
if (!this.elements.nodeModal) return;
|
||||
|
||||
if (this.elements.modalTitle) {
|
||||
this.elements.modalTitle.textContent = `Node Details`;
|
||||
}
|
||||
|
||||
generateNodeDetailsHtml(node) {
|
||||
if(!node) return '<div class="detail-row"><span class="detail-value">Details not available.</span></div>';
|
||||
let detailsHtml = '';
|
||||
const createDetailRow = (label, value, statusIcon = '') => {
|
||||
const baseId = `detail-${label.replace(/[^a-zA-Z0-9]/g, '-')}`;
|
||||
const baseId = `detail-${node.id.replace(/[^a-zA-Z0-9]/g, '-')}-${label.replace(/[^a-zA-Z0-9]/g, '-')}`;
|
||||
|
||||
if (value === null || value === undefined ||
|
||||
(Array.isArray(value) && value.length === 0) ||
|
||||
(typeof value === 'object' && Object.keys(value).length === 0)) {
|
||||
(typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0)) {
|
||||
return `
|
||||
<div class="detail-row">
|
||||
<span class="detail-label">${label} <span class="status-icon text-warning">✗</span></span>
|
||||
@@ -794,11 +789,9 @@ class DNSReconApp {
|
||||
};
|
||||
|
||||
const metadata = node.metadata || {};
|
||||
|
||||
// General Node Info
|
||||
detailsHtml += createDetailRow('Node Descriptor', node.nodeId);
|
||||
|
||||
// Display data based on node type
|
||||
detailsHtml += createDetailRow('Node Descriptor', node.id);
|
||||
|
||||
switch (node.type) {
|
||||
case 'domain':
|
||||
detailsHtml += createDetailRow('DNS Records', metadata.dns_records);
|
||||
@@ -814,8 +807,7 @@ class DNSReconApp {
|
||||
detailsHtml += createDetailRow('VirusTotal Data', metadata.virustotal);
|
||||
break;
|
||||
}
|
||||
|
||||
// Special handling for certificate data
|
||||
|
||||
if (metadata.certificate_data && Object.keys(metadata.certificate_data).length > 0) {
|
||||
const cert = metadata.certificate_data;
|
||||
detailsHtml += `<div class="detail-section-header">Certificate Summary</div>`;
|
||||
@@ -832,8 +824,7 @@ class DNSReconApp {
|
||||
detailsHtml += createDetailRow('Valid Until', new Date(cert.latest_certificate.not_after).toLocaleString());
|
||||
}
|
||||
}
|
||||
|
||||
// Special handling for ASN data
|
||||
|
||||
if (metadata.asn_data && Object.keys(metadata.asn_data).length > 0) {
|
||||
detailsHtml += `<div class="detail-section-header">ASN Information</div>`;
|
||||
detailsHtml += createDetailRow('ASN', metadata.asn_data.asn);
|
||||
@@ -842,6 +833,44 @@ class DNSReconApp {
|
||||
detailsHtml += createDetailRow('Country', metadata.asn_data.country);
|
||||
}
|
||||
|
||||
return detailsHtml;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show node details modal
|
||||
* @param {string} nodeId - Node identifier
|
||||
* @param {Object} node - Node data
|
||||
*/
|
||||
showNodeModal(nodeId, node) {
|
||||
if (!this.elements.nodeModal) return;
|
||||
|
||||
if (this.elements.modalTitle) {
|
||||
this.elements.modalTitle.textContent = `Node Details`;
|
||||
}
|
||||
let detailsHtml = '';
|
||||
|
||||
if (node.type === 'large_entity') {
|
||||
const metadata = node.metadata || {};
|
||||
const nodes = metadata.nodes || [];
|
||||
const node_type = metadata.node_type || 'nodes';
|
||||
detailsHtml += `<div class="detail-section-header">Contains ${metadata.count} ${node_type}s</div>`;
|
||||
detailsHtml += '<div class="large-entity-nodes-list">';
|
||||
|
||||
for(const innerNodeId of nodes) {
|
||||
const innerNode = this.graphManager.nodes.get(innerNodeId);
|
||||
detailsHtml += `<details class="large-entity-node-details">`;
|
||||
detailsHtml += `<summary>${innerNodeId}</summary>`;
|
||||
detailsHtml += this.generateNodeDetailsHtml(innerNode);
|
||||
detailsHtml += `</details>`;
|
||||
}
|
||||
detailsHtml += '</div>';
|
||||
|
||||
} else {
|
||||
detailsHtml = this.generateNodeDetailsHtml(node);
|
||||
}
|
||||
|
||||
|
||||
if (this.elements.modalDetails) {
|
||||
this.elements.modalDetails.innerHTML = detailsHtml;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user