You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
8.4 KiB
275 lines
8.4 KiB
1 year ago
|
<?php
|
||
|
/*
|
||
|
** Zabbix
|
||
|
** Copyright (C) 2001-2023 Zabbix SIA
|
||
|
**
|
||
|
** This program is free software; you can redistribute it and/or modify
|
||
|
** it under the terms of the GNU General Public License as published by
|
||
|
** the Free Software Foundation; either version 2 of the License, or
|
||
|
** (at your option) any later version.
|
||
|
**
|
||
|
** This program is distributed in the hope that it will be useful,
|
||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
** GNU General Public License for more details.
|
||
|
**
|
||
|
** You should have received a copy of the GNU General Public License
|
||
|
** along with this program; if not, write to the Free Software
|
||
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
**/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @var CView $this
|
||
|
*/
|
||
|
|
||
|
$this->includeJsFile('inventory.host.view.js.php');
|
||
|
|
||
|
// Overview tab.
|
||
|
$overviewFormList = new CFormList();
|
||
|
|
||
|
$host_name = (new CLinkAction($data['host']['host']))
|
||
|
->setMenuPopup(CMenuPopupHelper::getHost($data['host']['hostid'], false));
|
||
|
|
||
|
if ($data['host']['maintenance_status'] == HOST_MAINTENANCE_STATUS_ON) {
|
||
|
if (array_key_exists($data['host']['maintenanceid'], $data['maintenances'])) {
|
||
|
$maintenance = $data['maintenances'][$data['host']['maintenanceid']];
|
||
|
$maintenance_icon = makeMaintenanceIcon($data['host']['maintenance_type'], $maintenance['name'],
|
||
|
$maintenance['description']
|
||
|
);
|
||
|
}
|
||
|
else {
|
||
|
$maintenance_icon = makeMaintenanceIcon($data['host']['maintenance_type'], _('Inaccessible maintenance'),
|
||
|
''
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$host_name = (new CSpan([$host_name, $maintenance_icon]))->addClass(ZBX_STYLE_REL_CONTAINER);
|
||
|
}
|
||
|
|
||
|
$overviewFormList->addRow(_('Host name'), (new CDiv($host_name))->setWidth(ZBX_TEXTAREA_BIG_WIDTH));
|
||
|
|
||
|
if ($data['host']['host'] !== $data['host']['name']) {
|
||
|
$overviewFormList->addRow(_('Visible name'), (new CDiv($data['host']['name']))->setWidth(ZBX_TEXTAREA_BIG_WIDTH));
|
||
|
}
|
||
|
|
||
|
$interfaces = [
|
||
|
INTERFACE_TYPE_AGENT => [],
|
||
|
INTERFACE_TYPE_SNMP => [],
|
||
|
INTERFACE_TYPE_JMX => [],
|
||
|
INTERFACE_TYPE_IPMI => []
|
||
|
];
|
||
|
|
||
|
$interface_names = [
|
||
|
INTERFACE_TYPE_AGENT => _('Agent interfaces'),
|
||
|
INTERFACE_TYPE_SNMP => _('SNMP interfaces'),
|
||
|
INTERFACE_TYPE_JMX => _('JMX interfaces'),
|
||
|
INTERFACE_TYPE_IPMI => _('IPMI interfaces')
|
||
|
];
|
||
|
|
||
|
foreach ($data['host']['interfaces'] as $interface) {
|
||
|
$interfaces[$interface['type']][] = $interface;
|
||
|
}
|
||
|
|
||
|
$header_is_set = false;
|
||
|
|
||
|
foreach (CItem::INTERFACE_TYPES_BY_PRIORITY as $type) {
|
||
|
if ($interfaces[$type]) {
|
||
|
$ifTab = (new CTable());
|
||
|
|
||
|
if (!$header_is_set) {
|
||
|
$ifTab->setHeader([_('IP address'), _('DNS name'), _('Connect to'), _('Port'), _('Default')]);
|
||
|
$header_is_set = true;
|
||
|
}
|
||
|
|
||
|
foreach ($interfaces[$type] as $interface) {
|
||
|
$ifTab->addRow([
|
||
|
(new CTextBox('ip', $interface['ip'], true, 64))
|
||
|
->setWidth(ZBX_TEXTAREA_INTERFACE_IP_WIDTH)
|
||
|
->removeId(),
|
||
|
(new CTextBox('dns', $interface['dns'], true, 64))
|
||
|
->setWidth(ZBX_TEXTAREA_INTERFACE_DNS_WIDTH)
|
||
|
->removeId(),
|
||
|
(new CRadioButtonList('useip['.$interface['interfaceid'].']', (int) $interface['useip']))
|
||
|
->addValue('IP', INTERFACE_USE_IP)
|
||
|
->addValue('DNS', INTERFACE_USE_DNS)
|
||
|
->setModern(true)
|
||
|
->setEnabled(false),
|
||
|
(new CTextBox('port', $interface['port'], true, 64))
|
||
|
->setWidth(ZBX_TEXTAREA_INTERFACE_PORT_WIDTH)
|
||
|
->removeId(),
|
||
|
(new CRadioButtonList('main['.$interface['interfaceid'].']', (int) $interface['main']))
|
||
|
->addValue(null, INTERFACE_PRIMARY)
|
||
|
->setEnabled(false)
|
||
|
->removeId()
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
$overviewFormList->addRow($interface_names[$type],
|
||
|
(new CDiv($ifTab))
|
||
|
->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)
|
||
|
->setWidth(ZBX_HOST_INTERFACE_WIDTH)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// inventory (OS, Hardware, Software)
|
||
|
foreach (['os', 'hardware', 'software'] as $key) {
|
||
|
if (array_key_exists($key, $data['host']['inventory'])) {
|
||
|
if ($data['host']['inventory'][$key] !== '') {
|
||
|
$overviewFormList->addRow($data['tableTitles'][$key]['title'],
|
||
|
(new CDiv(zbx_str2links($data['host']['inventory'][$key])))->setWidth(ZBX_TEXTAREA_BIG_WIDTH)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// description
|
||
|
if ($data['host']['description'] !== '') {
|
||
|
$overviewFormList->addRow(_('Description'),
|
||
|
(new CDiv(zbx_str2links($data['host']['description'])))->setWidth(ZBX_TEXTAREA_BIG_WIDTH)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// latest data
|
||
|
$overviewFormList->addRow(_('Monitoring'),
|
||
|
new CHorList([
|
||
|
$data['allowed_ui_hosts']
|
||
|
? new CLink(_('Web'), (new CUrl('zabbix.php'))
|
||
|
->setArgument('action', 'web.view')
|
||
|
->setArgument('filter_hostids[]', $data['host']['hostid'])
|
||
|
->setArgument('filter_set', '1')
|
||
|
)
|
||
|
: _('Web'),
|
||
|
$data['allowed_ui_latest_data']
|
||
|
? new CLink(_('Latest data'), (new CUrl('zabbix.php'))
|
||
|
->setArgument('action', 'latest.view')
|
||
|
->setArgument('hostids[]', $data['host']['hostid'])
|
||
|
->setArgument('show_details', '1')
|
||
|
->setArgument('filter_set', '1')
|
||
|
)
|
||
|
: _('Latest data'),
|
||
|
$data['allowed_ui_problems']
|
||
|
? new CLink(_('Problems'), (new CUrl('zabbix.php'))
|
||
|
->setArgument('action', 'problem.view')
|
||
|
->setArgument('hostids', [$data['host']['hostid']])
|
||
|
->setArgument('filter_set', '1')
|
||
|
)
|
||
|
: _('Problems'),
|
||
|
$data['allowed_ui_hosts']
|
||
|
? new CLink(_('Graphs'),
|
||
|
(new CUrl('zabbix.php'))
|
||
|
->setArgument('action', 'charts.view')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('filter_set', '1')
|
||
|
)
|
||
|
: _('Graphs'),
|
||
|
$data['allowed_ui_hosts']
|
||
|
? new CLink(_('Dashboards'), (new CUrl('zabbix.php'))
|
||
|
->setArgument('action', 'host.dashboard.view')
|
||
|
->setArgument('hostid', $data['host']['hostid'])
|
||
|
)
|
||
|
: _('Dashboards')
|
||
|
])
|
||
|
);
|
||
|
|
||
|
// configuration
|
||
|
if ($data['allowed_ui_conf_hosts'] && $data['rwHost']) {
|
||
|
$hostLink = (new CLink(_('Host')))
|
||
|
->setAttribute('data-hostid', $data['host']['hostid'])
|
||
|
->onClick('view.editHost({hostid: this.dataset.hostid});');
|
||
|
$itemsLink = new CLink(_('Items'),
|
||
|
(new CUrl('items.php'))
|
||
|
->setArgument('filter_set', '1')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('context', 'host')
|
||
|
);
|
||
|
$triggersLink = new CLink(_('Triggers'),
|
||
|
(new CUrl('triggers.php'))
|
||
|
->setArgument('filter_set', '1')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('context', 'host')
|
||
|
);
|
||
|
$graphsLink = new CLink(_('Graphs'),
|
||
|
(new CUrl('graphs.php'))
|
||
|
->setArgument('filter_set', '1')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('context', 'host')
|
||
|
);
|
||
|
$discoveryLink = new CLink(_('Discovery'),
|
||
|
(new CUrl('host_discovery.php'))
|
||
|
->setArgument('filter_set', '1')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('context', 'host')
|
||
|
);
|
||
|
$webLink = new CLink(_('Web'),
|
||
|
(new CUrl('httpconf.php'))
|
||
|
->setArgument('filter_set', '1')
|
||
|
->setArgument('filter_hostids', [$data['host']['hostid']])
|
||
|
->setArgument('context', 'host')
|
||
|
);
|
||
|
}
|
||
|
else {
|
||
|
$hostLink = _('Host');
|
||
|
$itemsLink = _('Items');
|
||
|
$triggersLink = _('Triggers');
|
||
|
$graphsLink = _('Graphs');
|
||
|
$discoveryLink = _('Discovery');
|
||
|
$webLink = _('Web');
|
||
|
}
|
||
|
|
||
|
$overviewFormList->addRow(_('Configuration'),
|
||
|
new CHorList([
|
||
|
$hostLink,
|
||
|
(new CSpan([$itemsLink, CViewHelper::showNum($data['host']['items'])])),
|
||
|
(new CSpan([$triggersLink, CViewHelper::showNum($data['host']['triggers'])])),
|
||
|
(new CSpan([$graphsLink, CViewHelper::showNum($data['host']['graphs'])])),
|
||
|
(new CSpan([$discoveryLink, CViewHelper::showNum($data['host']['discoveries'])])),
|
||
|
(new CSpan([$webLink, CViewHelper::showNum($data['host']['httpTests'])]))
|
||
|
])
|
||
|
);
|
||
|
|
||
|
$hostInventoriesTab = (new CTabView(['remember' => true]))
|
||
|
->setSelected(0)
|
||
|
->addTab('overviewTab', _('Overview'), $overviewFormList);
|
||
|
|
||
|
/*
|
||
|
* Details tab
|
||
|
*/
|
||
|
$detailsFormList = new CFormList();
|
||
|
|
||
|
$inventoryValues = false;
|
||
|
foreach ($data['host']['inventory'] as $key => $value) {
|
||
|
if ($value !== '') {
|
||
|
$detailsFormList->addRow($data['tableTitles'][$key]['title'],
|
||
|
(new CDiv(zbx_str2links($value)))
|
||
|
->addClass(ZBX_STYLE_WORDWRAP)
|
||
|
->setWidth(ZBX_TEXTAREA_BIG_WIDTH)
|
||
|
);
|
||
|
|
||
|
$inventoryValues = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!$inventoryValues) {
|
||
|
$hostInventoriesTab->setDisabled([1]);
|
||
|
}
|
||
|
|
||
|
$hostInventoriesTab->addTab('detailsTab', _('Details'), $detailsFormList);
|
||
|
|
||
|
// append tabs and form
|
||
|
$hostInventoriesTab->setFooter(makeFormFooter(null, [new CButtonCancel()]));
|
||
|
|
||
|
$web_layout_mode = CViewHelper::loadLayoutMode();
|
||
|
|
||
|
(new CHtmlPage())
|
||
|
->setTitle(_('Host inventory'))
|
||
|
->setWebLayoutMode($web_layout_mode)
|
||
|
->setControls((new CList())->addItem(get_icon('kioskmode', ['mode' => $web_layout_mode])))
|
||
|
->addItem(
|
||
|
(new CForm())
|
||
|
->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
|
||
|
->addItem($hostInventoriesTab)
|
||
|
)
|
||
|
->show();
|