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.
150 lines
6.7 KiB
150 lines
6.7 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.
|
||
|
**/
|
||
|
?>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
const view = new class {
|
||
|
|
||
|
init() {
|
||
|
this.filter_actions_checkboxes = document.querySelectorAll('#filter-actions input[type="checkbox"]');
|
||
|
|
||
|
this.filter_resource_select = document.getElementById('resourcetype-select');
|
||
|
this.filter_resource_select.addEventListener('change', () => this._update());
|
||
|
|
||
|
this._update();
|
||
|
|
||
|
for (const details_link of document.forms['auditForm'].querySelectorAll('[data-details]')) {
|
||
|
details_link.addEventListener('click', (e) => {
|
||
|
this._openAuditDetails(JSON.parse(e.target.dataset.details))
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_update() {
|
||
|
const enabled_actions = this.filter_resource_select.value !== '-1'
|
||
|
? this._getActionsByResource(this.filter_resource_select.value)
|
||
|
: null;
|
||
|
|
||
|
for (const checkbox of this.filter_actions_checkboxes) {
|
||
|
checkbox.disabled = enabled_actions !== null && !enabled_actions.includes(checkbox.value);
|
||
|
|
||
|
if (checkbox.disabled) {
|
||
|
checkbox.checked = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_getActionsByResource(resource) {
|
||
|
// [Action => [Resources]]
|
||
|
const resources = <?php echo json_encode([
|
||
|
CAudit::ACTION_ADD => [
|
||
|
CAudit::RESOURCE_ACTION, CAudit::RESOURCE_AUTH_TOKEN, CAudit::RESOURCE_CONNECTOR,
|
||
|
CAudit::RESOURCE_CORRELATION, CAudit::RESOURCE_DASHBOARD, CAudit::RESOURCE_DISCOVERY_RULE,
|
||
|
CAudit::RESOURCE_GRAPH, CAudit::RESOURCE_GRAPH_PROTOTYPE, CAudit::RESOURCE_HA_NODE,
|
||
|
CAudit::RESOURCE_HOST, CAudit::RESOURCE_HOST_GROUP, CAudit::RESOURCE_HOST_PROTOTYPE,
|
||
|
CAudit::RESOURCE_ICON_MAP, CAudit::RESOURCE_IMAGE, CAudit::RESOURCE_IT_SERVICE,
|
||
|
CAudit::RESOURCE_ITEM, CAudit::RESOURCE_ITEM_PROTOTYPE, CAudit::RESOURCE_LLD_RULE,
|
||
|
CAudit::RESOURCE_MACRO, CAudit::RESOURCE_MAINTENANCE, CAudit::RESOURCE_MAP,
|
||
|
CAudit::RESOURCE_MEDIA_TYPE, CAudit::RESOURCE_MODULE, CAudit::RESOURCE_PROXY,
|
||
|
CAudit::RESOURCE_REGEXP, CAudit::RESOURCE_SCENARIO, CAudit::RESOURCE_SCHEDULED_REPORT,
|
||
|
CAudit::RESOURCE_SCRIPT, CAudit::RESOURCE_SLA, CAudit::RESOURCE_TEMPLATE,
|
||
|
CAudit::RESOURCE_TEMPLATE_DASHBOARD, CAudit::RESOURCE_TEMPLATE_GROUP, CAudit::RESOURCE_TRIGGER,
|
||
|
CAudit::RESOURCE_TRIGGER_PROTOTYPE, CAudit::RESOURCE_USER, CAudit::RESOURCE_USERDIRECTORY,
|
||
|
CAudit::RESOURCE_USER_GROUP, CAudit::RESOURCE_USER_ROLE, CAudit::RESOURCE_VALUE_MAP
|
||
|
],
|
||
|
CAudit::ACTION_UPDATE => [
|
||
|
CAudit::RESOURCE_ACTION, CAudit::RESOURCE_AUTHENTICATION, CAudit::RESOURCE_AUTH_TOKEN,
|
||
|
CAudit::RESOURCE_AUTOREGISTRATION, CAudit::RESOURCE_CONNECTOR, CAudit::RESOURCE_CORRELATION,
|
||
|
CAudit::RESOURCE_DASHBOARD, CAudit::RESOURCE_DISCOVERY_RULE, CAudit::RESOURCE_GRAPH,
|
||
|
CAudit::RESOURCE_GRAPH_PROTOTYPE, CAudit::RESOURCE_HA_NODE, CAudit::RESOURCE_HOST,
|
||
|
CAudit::RESOURCE_HOST_GROUP, CAudit::RESOURCE_HOST_PROTOTYPE, CAudit::RESOURCE_HOUSEKEEPING,
|
||
|
CAudit::RESOURCE_ICON_MAP, CAudit::RESOURCE_IMAGE, CAudit::RESOURCE_IT_SERVICE,
|
||
|
CAudit::RESOURCE_ITEM, CAudit::RESOURCE_ITEM_PROTOTYPE, CAudit::RESOURCE_LLD_RULE,
|
||
|
CAudit::RESOURCE_MACRO, CAudit::RESOURCE_MAINTENANCE, CAudit::RESOURCE_MAP,
|
||
|
CAudit::RESOURCE_MEDIA_TYPE, CAudit::RESOURCE_MODULE, CAudit::RESOURCE_PROXY,
|
||
|
CAudit::RESOURCE_REGEXP, CAudit::RESOURCE_SCENARIO, CAudit::RESOURCE_SCHEDULED_REPORT,
|
||
|
CAudit::RESOURCE_SCRIPT, CAudit::RESOURCE_SETTINGS, CAudit::RESOURCE_SLA, CAudit::RESOURCE_TEMPLATE,
|
||
|
CAudit::RESOURCE_TEMPLATE_DASHBOARD, CAudit::RESOURCE_TEMPLATE_GROUP, CAudit::RESOURCE_TRIGGER,
|
||
|
CAudit::RESOURCE_TRIGGER_PROTOTYPE, CAudit::RESOURCE_USER, CAudit::RESOURCE_USERDIRECTORY,
|
||
|
CAudit::RESOURCE_USER_GROUP, CAudit::RESOURCE_USER_ROLE, CAudit::RESOURCE_VALUE_MAP
|
||
|
],
|
||
|
CAudit::ACTION_DELETE => [
|
||
|
CAudit::RESOURCE_ACTION, CAudit::RESOURCE_AUTH_TOKEN, CAudit::RESOURCE_CONNECTOR,
|
||
|
CAudit::RESOURCE_CORRELATION, CAudit::RESOURCE_DASHBOARD, CAudit::RESOURCE_DISCOVERY_RULE,
|
||
|
CAudit::RESOURCE_GRAPH, CAudit::RESOURCE_GRAPH_PROTOTYPE, CAudit::RESOURCE_HA_NODE,
|
||
|
CAudit::RESOURCE_HOST, CAudit::RESOURCE_HOST_GROUP, CAudit::RESOURCE_HOST_PROTOTYPE,
|
||
|
CAudit::RESOURCE_ICON_MAP, CAudit::RESOURCE_IMAGE, CAudit::RESOURCE_IT_SERVICE,
|
||
|
CAudit::RESOURCE_ITEM, CAudit::RESOURCE_ITEM_PROTOTYPE, CAudit::RESOURCE_LLD_RULE,
|
||
|
CAudit::RESOURCE_MACRO, CAudit::RESOURCE_MAINTENANCE, CAudit::RESOURCE_MAP,
|
||
|
CAudit::RESOURCE_MEDIA_TYPE, CAudit::RESOURCE_MODULE, CAudit::RESOURCE_PROXY,
|
||
|
CAudit::RESOURCE_REGEXP, CAudit::RESOURCE_SCENARIO, CAudit::RESOURCE_SCHEDULED_REPORT,
|
||
|
CAudit::RESOURCE_SCRIPT, CAudit::RESOURCE_SLA, CAudit::RESOURCE_TEMPLATE,
|
||
|
CAudit::RESOURCE_TEMPLATE_DASHBOARD, CAudit::RESOURCE_TEMPLATE_GROUP, CAudit::RESOURCE_TRIGGER,
|
||
|
CAudit::RESOURCE_TRIGGER_PROTOTYPE, CAudit::RESOURCE_USER, CAudit::RESOURCE_USERDIRECTORY,
|
||
|
CAudit::RESOURCE_USER_GROUP, CAudit::RESOURCE_USER_ROLE, CAudit::RESOURCE_VALUE_MAP
|
||
|
],
|
||
|
CAudit::ACTION_LOGOUT => [CAudit::RESOURCE_USER],
|
||
|
CAudit::ACTION_EXECUTE => [CAudit::RESOURCE_SCRIPT],
|
||
|
CAudit::ACTION_LOGIN_SUCCESS => [CAudit::RESOURCE_USER],
|
||
|
CAudit::ACTION_LOGIN_FAILED => [CAudit::RESOURCE_USER],
|
||
|
CAudit::ACTION_HISTORY_CLEAR => [CAudit::RESOURCE_ITEM],
|
||
|
CAudit::ACTION_CONFIG_REFRESH => [CAudit::RESOURCE_PROXY],
|
||
|
CAudit::ACTION_PUSH => [CAudit::RESOURCE_HISTORY]
|
||
|
]); ?>
|
||
|
|
||
|
const actions = [];
|
||
|
|
||
|
for (let action in resources) {
|
||
|
if (resources.hasOwnProperty(action) && resources[action].includes(parseInt(resource))) {
|
||
|
actions.push(action);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return actions;
|
||
|
}
|
||
|
|
||
|
_openAuditDetails(details) {
|
||
|
const wrapper = document.createElement('div');
|
||
|
wrapper.classList.add('audit-details-popup-wrapper');
|
||
|
|
||
|
const textarea = document.createElement('textarea');
|
||
|
textarea.readOnly = true;
|
||
|
textarea.innerHTML = details;
|
||
|
textarea.classList.add('audit-details-popup-textarea', 'active-readonly');
|
||
|
|
||
|
wrapper.appendChild(textarea)
|
||
|
|
||
|
overlayDialogue({
|
||
|
title: <?= json_encode(_('Details')) ?>,
|
||
|
content: wrapper,
|
||
|
class: 'modal-popup modal-popup-generic',
|
||
|
buttons: [
|
||
|
{
|
||
|
title: <?= json_encode(_('Ok')) ?>,
|
||
|
cancel: true,
|
||
|
action: () => true
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
</script>
|