Ports, addresses and what each is plugged into. The primary is the address shown on the left.
interfaceIsSfp($b['interface_type']);
});
foreach ($interfaces as $interface_id => $row) {
if (!$port_map_sfp && interfaceIsSfp($row['interface_type'])) {
$port_map_sfp = true;
echo '
';
}
$link = $interface_links[$interface_id] ?? null;
$states = array_filter([$link ? 'is-connected' : '', trim((string) $row['interface_ip']) !== '' ? 'is-addressed' : '', intval($row['interface_primary']) ? 'is-primary' : '']);
$tip = implode("\n", array_filter([
$row['interface_name'] . ($row['interface_description'] ? ' - ' . $row['interface_description'] : ''),
$link ? 'To ' . $link['asset_name'] . ' ' . $link['interface_name'] : 'Not connected',
$row['network_name'] ? $row['network_name'] . ($row['interface_vlans'] ? ' · VLAN ' . $row['interface_vlans'] : '') : ($row['interface_vlans'] ? 'VLAN ' . $row['interface_vlans'] : ''),
$row['interface_ip'],
])); ?>
= escapeHtml(preg_match('/(\d+)$/', $row['interface_name'], $m) && strlen($row['interface_name']) > 5 ? $m[1] : $row['interface_name']) ?>
Connected
Has an address
Free
= count($interface_links) ?> of = $interface_count ?> connected
No interfaces yet= $can_edit ? ' - add its ports, or one for its network card' : '' ?>.
Logins for this asset. Passwords and codes are fetched only when you ask for them.
= credentialTableHtml($related_credentials, [
'for' => false,
'unlink' => function ($row) use ($asset_id, $can_edit) {
return $can_edit && credentialCan(2) ? "post.php?unlink_credential_from_asset&asset_id=$asset_id&credential_id=" . intval($row['credential_id']) . "&csrf_token=" . $_SESSION['csrf_token'] : '';
},
]) ?>
No credentials for this asset.
Open tickets first. Includes tickets where this is one of several assets.
= ticketTableHtml($related_tickets) ?>
No tickets have mentioned this asset.
Scheduled work - patching, checks, maintenance visits.
| Subject |
Priority |
Frequency |
Next Run |
|
|
= $recurring_ticket_subject ?>
= $recurring_ticket_subject ?>
|
= ticketPriorityHtml($row['recurring_ticket_priority'], 'detail') ?> |
= $recurring_ticket_frequency ?> |
= recurringTicketNextRunPill($row) ?> = $recurring_ticket_next_run ?> |
|
Nothing scheduled for this asset.
Licenses this asset holds a seat on, and the key to install.
= softwareHeldTable($held_software, 'asset', $asset_id, $can_edit) ?>
No licenses linked.
Runbooks, configs and how-tos for this asset.
| Document |
By |
Updated |
|
|
|
= $document_created_by ?> |
= timeAgo($document_updated_at) ?> |
|
No documents linked.
Configs, photos, invoices, exports.
| Name |
Uploaded |
|
= fileTypeTile($row['file_ext'], 'sm') ?>
|
= timeAgo($file_created_at) ?> |
|
No files linked.
Services that run on it - when it is down, so are they.
= serviceRowsHtml($linked_services, $can_edit ? function ($row) use ($asset_id) {
return "post.php?unlink_item&from=asset&id=$asset_id&to=service&other=" . intval($row['service_id']) . "&csrf_token=" . $_SESSION['csrf_token'];
} : null) ?>
Not part of any service.
Changes, moves and notes - newest first.
= auditLogHistoryHtml($history, ['client_id' => $client_id]) ?>
A dated log - visits, changes, findings.
= $asset_note_type ?>
· = $note_by ?> · = timeAgo($asset_note_created_at) ?>
= $asset_note ?>
No notes yet.