pandorafms/pandora_console/tools/merged_policies_conf_fixer.php

63 lines
1.6 KiB
PHP

<?php
require_once __DIR__.'/../include/config.php';
require_once __DIR__.'/../vendor/autoload.php';
if (file_exists(__DIR__.'/../'.ENTERPRISE_DIR.'/load_enterprise.php') === true) {
include_once __DIR__.'/../'.ENTERPRISE_DIR.'/load_enterprise.php';
}
if (isset($_SERVER['argc']) === false) {
exit(1);
}
global $config;
use PandoraFMS\Agent;
$ids = \db_get_all_rows_filter('tagente', [], ['id_agente']);
if ($ids === false) {
echo "Unable to find agents\n";
$ids = [];
}
$policies = \db_get_all_rows_filter('tpolicies', [], 'id,name');
$policies = array_reduce(
$policies,
function ($carry, $item) {
$carry[$item['name']] = $item['id'];
return $carry;
},
[]
);
foreach ($ids as $a) {
try {
$agent = new Agent($a['id_agente']);
if ($agent->hasRemoteCapabilities() === true) {
$agent_policies = $agent->getConfPolicies();
$oldIds = [];
$newIds = [];
foreach ($agent_policies as $oldId => $name) {
$oldIds[] = $oldId;
$newIds[] = $policies[io_safe_input($name)];
}
$res_update_con_policy = $agent->updatePolicyIds(
$oldIds,
$newIds
);
if ($res_update_con_policy === false) {
echo 'Failed ['.$agent->name()."]\n";
} else {
echo 'Agent '.io_safe_output($agent->alias())." updated successfully\n";
}
} else {
echo 'Agent '.io_safe_output($agent->alias())." skipped\n";
}
} catch (Exception $e) {
echo $e->getMessage()."\n";
}
}