Upload files to "/"

File was missing fro git.EWG so I pulled it from GH.
This commit is contained in:
2026-02-13 12:00:45 +00:00
parent 163f07e52c
commit 0a81a37327

154
saturationreport.inc.php Normal file
View File

@@ -0,0 +1,154 @@
<?php
//
// Storage Saturation Report Component
//
require_once(dirname(__FILE__) . '/../componenthelper.inc.php');
$saturationreport_component_name = "saturationreport";
saturationreport_init();
/*
* Initialize component
*/
function saturationreport_init()
{
global $saturationreport_component_name;
$desc = _('Storage Saturation Report - Display volumes that are close to total capacity.');
if ( !saturationreport_check_version() ) {
$desc = "<b>" . _('Error: This component requires Nagios XI 1.1.4 or later.') . "</b>";
}
$args = array(
COMPONENT_NAME => $saturationreport_component_name,
COMPONENT_AUTHOR => "snapier",
COMPONENT_DESCRIPTION => $desc,
COMPONENT_TITLE => _('Storage Saturation Report'),
COMPONENT_VERSION => '1.0.0',
COMPONENT_DATE => '01/18/2026',
);
register_component($saturationreport_component_name, $args);
if ( saturationreport_check_version() ) {
register_callback(CALLBACK_MENUS_INITIALIZED, 'saturationreport_component_addmenu');
}
}
/*
* Checks to see if the component is compatible with the version of XI
*/
function saturationreport_check_version()
{
if ( function_exists('get_product_release') ) {
if (get_product_release() >= 5600) {
return true;
}
}
return false;
}
/*
* Check Python dependencies for export functionality
*/
function saturationreport_check_python_dependencies()
{
// Try to detect Python 3
$python_commands = array('python3', '/usr/bin/python3', 'python', '/usr/bin/python');
$python_cmd = null;
foreach ($python_commands as $cmd) {
$versionString = @shell_exec($cmd . ' -c "import sys; print(sys.version_info[0])" 2>/dev/null');
if ($versionString !== null && trim($versionString) !== '') {
$pythonVersion = (int) trim($versionString);
if ($pythonVersion >= 3) {
$python_cmd = $cmd;
break;
}
}
}
if (!$python_cmd) {
return array(
'python_available' => false,
'error' => 'Python 3 not found. Export functionality will not work.'
);
}
// Check for required modules
$weasyprint_ok = false;
$pillow_ok = false;
$pdf2image_ok = false;
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import weasyprint; print('OK')") . ' 2>/dev/null';
$check_output = @shell_exec($check_cmd);
if ($check_output !== null && trim($check_output) === 'OK') {
$weasyprint_ok = true;
}
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import PIL; print('OK')") . ' 2>/dev/null';
$check_output = @shell_exec($check_cmd);
if ($check_output !== null && trim($check_output) === 'OK') {
$pillow_ok = true;
}
$check_cmd = escapeshellarg($python_cmd) . ' -c ' . escapeshellarg("import pdf2image; print('OK')") . ' 2>/dev/null';
$check_output = @shell_exec($check_cmd);
if ($check_output !== null && trim($check_output) === 'OK') {
$pdf2image_ok = true;
}
$all_ok = $weasyprint_ok && $pillow_ok && $pdf2image_ok;
return array(
'python_available' => true,
'python_cmd' => $python_cmd,
'weasyprint_installed' => $weasyprint_ok,
'pillow_installed' => $pillow_ok,
'pdf2image_installed' => $pdf2image_ok,
'all_dependencies_ok' => $all_ok,
'error' => $all_ok ? null : 'Some Python packages are missing. Install with: pip3 install weasyprint Pillow pdf2image'
);
}
/*
* Adds the index page to the menu
*/
function saturationreport_component_addmenu()
{
global $saturationreport_component_name;
$component_url = get_component_url_base($saturationreport_component_name);
// find the location of menu of network status map
$menu_section = find_menu_item(MENU_HOME, "menu-home-section-maps", "id");
if ($menu_section == null) {
return false;
}
$order = grab_array_var($menu_section, "order", "");
// Make this the top item in the maps section
$new_order = $order + 0.1;
if ($new_order < 0) {
return false;
}
add_menu_item(MENU_HOME, array(
"type" => "link",
"title" => _("Storage Saturation Report"),
"id" => "menu-home-section-saturationreport",
"order" => $new_order,
"opts" => array(
"href" => $component_url . "/index.php",
"icon" => "fa-file-text-o",
)
));
add_menu_item(MENU_HOME, array(
"type" => "linkspacer",
"id" => "menu-home-section-saturationreport-spacer",
"order" => $new_order+0.1
));
}