mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 08:45:12 +02:00
Merge branch 'develop' into 2290-seguridad-en-la-api-3
This commit is contained in:
commit
c11a8b3d2e
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-agent-unix
|
package: pandorafms-agent-unix
|
||||||
Version: 7.0NG.724-180618
|
Version: 7.0NG.724-180619
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.724-180618"
|
pandora_version="7.0NG.724-180619"
|
||||||
|
|
||||||
echo "Test if you has the tools for to make the packages."
|
echo "Test if you has the tools for to make the packages."
|
||||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||||
|
@ -42,7 +42,7 @@ my $Sem = undef;
|
|||||||
my $ThreadSem = undef;
|
my $ThreadSem = undef;
|
||||||
|
|
||||||
use constant AGENT_VERSION => '7.0NG.724';
|
use constant AGENT_VERSION => '7.0NG.724';
|
||||||
use constant AGENT_BUILD => '180618';
|
use constant AGENT_BUILD => '180619';
|
||||||
|
|
||||||
# Agent log default file size maximum and instances
|
# Agent log default file size maximum and instances
|
||||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.724"
|
PI_VERSION="7.0NG.724"
|
||||||
PI_BUILD="180618"
|
PI_BUILD="180619"
|
||||||
OS_NAME=`uname -s`
|
OS_NAME=`uname -s`
|
||||||
|
|
||||||
FORCE=0
|
FORCE=0
|
||||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Version
|
Version
|
||||||
{180618}
|
{180619}
|
||||||
|
|
||||||
ViewReadme
|
ViewReadme
|
||||||
{Yes}
|
{Yes}
|
||||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||||||
using namespace Pandora_Strutils;
|
using namespace Pandora_Strutils;
|
||||||
|
|
||||||
#define PATH_SIZE _MAX_PATH+1
|
#define PATH_SIZE _MAX_PATH+1
|
||||||
#define PANDORA_VERSION ("7.0NG.724(Build 180618)")
|
#define PANDORA_VERSION ("7.0NG.724(Build 180619)")
|
||||||
|
|
||||||
string pandora_path;
|
string pandora_path;
|
||||||
string pandora_dir;
|
string pandora_dir;
|
||||||
|
@ -11,7 +11,7 @@ BEGIN
|
|||||||
VALUE "LegalCopyright", "Artica ST"
|
VALUE "LegalCopyright", "Artica ST"
|
||||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||||
VALUE "ProductVersion", "(7.0NG.724(Build 180618))"
|
VALUE "ProductVersion", "(7.0NG.724(Build 180619))"
|
||||||
VALUE "FileVersion", "1.0.0.0"
|
VALUE "FileVersion", "1.0.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-console
|
package: pandorafms-console
|
||||||
Version: 7.0NG.724-180618
|
Version: 7.0NG.724-180619
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.724-180618"
|
pandora_version="7.0NG.724-180619"
|
||||||
|
|
||||||
package_pear=0
|
package_pear=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
/**
|
/**
|
||||||
* Pandora build version and version
|
* Pandora build version and version
|
||||||
*/
|
*/
|
||||||
$build_version = 'PC180618';
|
$build_version = 'PC180619';
|
||||||
$pandora_version = 'v7.0NG.724';
|
$pandora_version = 'v7.0NG.724';
|
||||||
|
|
||||||
// Do not overwrite default timezone set if defined.
|
// Do not overwrite default timezone set if defined.
|
||||||
|
@ -176,7 +176,11 @@ function returnData($returnType, $data, $separator = ';') {
|
|||||||
case 'json':
|
case 'json':
|
||||||
$data = array_apply_io_safe_output($data);
|
$data = array_apply_io_safe_output($data);
|
||||||
header('Content-type: application/json');
|
header('Content-type: application/json');
|
||||||
echo json_encode ($data);
|
// Allows extra parameters to json_encode, like JSON_FORCE_OBJECT
|
||||||
|
if ($separator == ";") {
|
||||||
|
$separator = null;
|
||||||
|
}
|
||||||
|
echo json_encode ($data, $separator);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10811,9 +10815,11 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
|
|||||||
$description = $other['data'][2];
|
$description = $other['data'][2];
|
||||||
$idGroup = $other['data'][3];
|
$idGroup = $other['data'][3];
|
||||||
|
|
||||||
if(!check_acl($config['id_user'], $idGroup, "AW")) {
|
if (!users_is_admin($config['id_user'])) {
|
||||||
returnError('forbidden', 'string');
|
if(!check_acl($config['id_user'], $idGroup, "AW")) {
|
||||||
return;
|
returnError('forbidden', 'string');
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$name_exist = db_process_sql('select count(name) as already_exist from tcluster as already_exist where name = "'.$name.'"');
|
$name_exist = db_process_sql('select count(name) as already_exist from tcluster as already_exist where name = "'.$name.'"');
|
||||||
@ -10837,43 +10843,57 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
|
|||||||
'modo' => 1
|
'modo' => 1
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!isset($name)) { // avoid warnings
|
||||||
|
$name = "";
|
||||||
|
}
|
||||||
|
|
||||||
if (trim($name) != "") {
|
if (trim($name) != "") {
|
||||||
$id_agent = agents_create_agent($values_agent['nombre'],$values_agent['id_grupo'],300,'',$values_agent);
|
$id_agent = agents_create_agent($values_agent['nombre'],$values_agent['id_grupo'],300,'',$values_agent);
|
||||||
|
|
||||||
// Create cluster
|
if ($id_agent !== false) {
|
||||||
$values_cluster = array(
|
// Create cluster
|
||||||
'name' => $name,
|
$values_cluster = array(
|
||||||
'cluster_type' => $cluster_type,
|
'name' => $name,
|
||||||
'description' => $description,
|
'cluster_type' => $cluster_type,
|
||||||
'group' => $idGroup,
|
'description' => $description,
|
||||||
'id_agent' => $id_agent
|
'group' => $idGroup,
|
||||||
);
|
'id_agent' => $id_agent
|
||||||
|
|
||||||
$id_cluster = db_process_sql_insert('tcluster', $values_cluster);
|
|
||||||
|
|
||||||
$values_module = array(
|
|
||||||
'nombre' => 'Cluster status',
|
|
||||||
'id_modulo' => 5,
|
|
||||||
'prediction_module' => 5,
|
|
||||||
'id_agente' =>$id_agent,
|
|
||||||
'custom_integer_1' =>$id_cluster,
|
|
||||||
'id_tipo_modulo' => 1,
|
|
||||||
'descripcion' => 'Cluster status information module',
|
|
||||||
'min_warning' => 1,
|
|
||||||
'min_critical' => 2
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$id_module = modules_create_agent_module($values_module['id_agente'],$values_module['nombre'],$values_module);
|
$id_cluster = db_process_sql_insert('tcluster', $values_cluster);
|
||||||
|
|
||||||
|
if ($id_cluster === false) {
|
||||||
|
// failed to create cluster, rollback previously created agent
|
||||||
|
agents_delete_agent($id_agent, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$values_module = array(
|
||||||
|
'nombre' => io_safe_input('Cluster status'),
|
||||||
|
'id_modulo' => 5,
|
||||||
|
'prediction_module' => 5,
|
||||||
|
'id_agente' => $id_agent,
|
||||||
|
'custom_integer_1' => $id_cluster,
|
||||||
|
'id_tipo_modulo' => 1,
|
||||||
|
'descripcion' => io_safe_input('Cluster status information module'),
|
||||||
|
'min_warning' => 1,
|
||||||
|
'min_critical' => 2
|
||||||
|
);
|
||||||
|
|
||||||
|
$id_module = modules_create_agent_module($id_agent, $values_module['nombre'], $values_module, true);
|
||||||
|
if ($id_module === false) {
|
||||||
|
db_pandora_audit("Report management", "Failed to create cluster status module in cluster $name (#$id_agent)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($id_cluster !== false)
|
if ($id_cluster !== false)
|
||||||
db_pandora_audit("Report management", "Create cluster #$id_cluster");
|
db_pandora_audit("Report management", "Created cluster $name (#$id_cluster)");
|
||||||
else
|
else
|
||||||
db_pandora_audit("Report management", "Fail try to create cluster");
|
db_pandora_audit("Report management", "Failed to create cluster $name");
|
||||||
|
|
||||||
if ($id_agent !== false)
|
if ($id_agent !== false)
|
||||||
db_pandora_audit("Report management", "Create cluster #$id_agent");
|
db_pandora_audit("Report management", "Created new cluster agent $name (#$id_agent)");
|
||||||
else
|
else
|
||||||
db_pandora_audit("Report management", "Fail try to create agent");
|
db_pandora_audit("Report management", "Failed to create cluster agent $name");
|
||||||
|
|
||||||
returnData('string',
|
returnData('string',
|
||||||
array('type' => 'string', 'data' => (int)$id_cluster));
|
array('type' => 'string', 'data' => (int)$id_cluster));
|
||||||
@ -10883,282 +10903,281 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function api_set_add_cluster_agent($thrash1, $thrash2, $other, $thrash3) {
|
function api_set_add_cluster_agent($thrash1, $thrash2, $other, $thrash3) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$array_json = json_decode(base64_decode(io_safe_output($other['data'][0])), true);
|
$array_json = json_decode(base64_decode(io_safe_output($other['data'][0])), true);
|
||||||
if(!empty($array_json)){
|
if(!empty($array_json)){
|
||||||
$results = false;
|
foreach ($array_json as $key => $element) {
|
||||||
|
$check_cluster_group = clusters_get_group ($element['id']);
|
||||||
foreach ($array_json as $key => $element) {
|
if (!users_is_admin($config['id_user'])) {
|
||||||
$check_cluster_group = clusters_get_group ($element['id']);
|
if (!$check_cluster_group
|
||||||
if(!$check_cluster_group ||
|
|| (!check_acl($config['id_user'], $check_cluster_group, "AW"))
|
||||||
!check_acl($config['id_user'], $check_cluster_group, "AW") ||
|
|| (!agents_check_access_agent($element['id_agent'], "AW"))) {
|
||||||
!agents_check_access_agent($element['id_agent'], "AW")
|
|
||||||
){
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tcluster_agent = db_process_sql('insert into tcluster_agent values ('.$element["id"].','.$element["id_agent"].')');
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
$tcluster_agent = db_process_sql('insert into tcluster_agent values ('.$element["id"].','.$element["id_agent"].')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($result && !$results){
|
if($tcluster_agent !== false){
|
||||||
$results = $result;
|
returnData('string', array('type' => 'string', 'data' => 1));
|
||||||
|
} else {
|
||||||
|
returnError('error_add_cluster_element', __('Error adding elements to cluster'));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function api_set_add_cluster_item($thrash1, $thrash2, $other, $thrash3) {
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (defined ('METACONSOLE')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$array_json = json_decode(base64_decode(io_safe_output($other['data'][0])), true);
|
||||||
|
if (is_array($array_json)) {
|
||||||
|
foreach ($array_json as $key => $element) {
|
||||||
|
$cluster_group = clusters_get_group ($element['id']);
|
||||||
|
if (!users_is_admin($config["id_user"])) {
|
||||||
|
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AW")){
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($element["type"] == "AA"){
|
||||||
|
$tcluster_module = db_process_sql_insert('tcluster_item',array('name'=>io_safe_input($element["name"]),'id_cluster'=>$element["id_cluster"],'critical_limit'=>$element["critical_limit"],'warning_limit'=>$element["warning_limit"]));
|
||||||
|
|
||||||
if($tcluster_agent){
|
$id_agent = db_process_sql('select id_agent from tcluster where id = '.$element["id_cluster"]);
|
||||||
returnData('string', array('type' => 'string', 'data' => 1));
|
|
||||||
} else {
|
|
||||||
returnError('error_add_cluster_element', __('Error adding elements to cluster'));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
$id_parent_modulo = db_process_sql('select id_agente_modulo from tagente_modulo where id_agente = ' . $id_agent[0]['id_agent']
|
||||||
|
. ' and nombre = "' . io_safe_input("Cluster status") . '"');
|
||||||
|
|
||||||
function api_set_add_cluster_item($thrash1, $thrash2, $other, $thrash3) {
|
$get_module_type = db_process_sql('select id_tipo_modulo,descripcion,min_warning,min_critical,module_interval from tagente_modulo where nombre = "'.io_safe_input($element["name"]).'" limit 1');
|
||||||
|
|
||||||
$array_json = json_decode(base64_decode(io_safe_output($other['data'][0])), true);
|
$get_module_type_value = $get_module_type[0]['id_tipo_modulo'];
|
||||||
|
$get_module_description_value = $get_module_type[0]['descripcion'];
|
||||||
|
$get_module_warning_value = $get_module_type[0]['min_warning'];
|
||||||
|
$get_module_critical_value = $get_module_type[0]['min_critical'];
|
||||||
|
$get_module_interval_value = $get_module_type[0]['module_interval'];
|
||||||
|
|
||||||
if(!empty($array_json)){
|
$values_module = array(
|
||||||
$results = false;
|
'nombre' => io_safe_input($element["name"]),
|
||||||
}
|
'id_modulo' => 0,
|
||||||
|
'prediction_module' => 6,
|
||||||
|
'id_agente' => $id_agent[0]['id_agent'],
|
||||||
|
'parent_module_id' => $id_parent_modulo[0]['id_agente_modulo'],
|
||||||
|
'custom_integer_1' =>$element["id_cluster"],
|
||||||
|
'custom_integer_2' =>$tcluster_module,
|
||||||
|
'id_tipo_modulo' =>1,
|
||||||
|
'descripcion' => $get_module_description_value,
|
||||||
|
'min_warning' => $element["warning_limit"],
|
||||||
|
'min_critical' => $element["critical_limit"],
|
||||||
|
'tcp_port' => 1,
|
||||||
|
'module_interval' => $get_module_interval_value
|
||||||
|
);
|
||||||
|
|
||||||
//
|
$id_module = modules_create_agent_module($values_module['id_agente'],$values_module['nombre'],$values_module, true);
|
||||||
foreach ($array_json as $key => $element) {
|
|
||||||
$cluster_group = clusters_get_group ($element['id']);
|
$launch_cluster = db_process_sql('update tagente_modulo set flag = 1 where custom_integer_1 = '.$element["id_cluster"]
|
||||||
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AW")){
|
. ' and nombre = "' . io_safe_input("Cluster status") . '"');
|
||||||
continue;
|
|
||||||
|
if ($tcluster_module !== false){
|
||||||
|
db_pandora_audit("Report management", "Module #".$element["name"]." assigned to cluster #".$element["id_cluster"]);
|
||||||
}
|
}
|
||||||
if($element["type"] == "AA"){
|
else{
|
||||||
$tcluster_module = db_process_sql_insert('tcluster_item',array('name'=>io_safe_input($element["name"]),'id_cluster'=>$element["id_cluster"],'critical_limit'=>$element["critical_limit"],'warning_limit'=>$element["warning_limit"]));
|
db_pandora_audit("Report management", "Failed to assign AA item module to cluster " . $element["name"]);
|
||||||
|
|
||||||
$id_agent = db_process_sql('select id_agent from tcluster where id = '.$element["id_cluster"]);
|
|
||||||
|
|
||||||
$id_parent_modulo = db_process_sql('select id_agente_modulo from tagente_modulo where id_agente = '.$id_agent[0]['id_agent'].' and nombre = "Cluster status"');
|
|
||||||
|
|
||||||
$get_module_type = db_process_sql('select id_tipo_modulo,descripcion,min_warning,min_critical,module_interval from tagente_modulo where nombre = "'.io_safe_input($element["name"]).'" limit 1');
|
|
||||||
|
|
||||||
$get_module_type_value = $get_module_type[0]['id_tipo_modulo'];
|
|
||||||
|
|
||||||
$get_module_description_value = $get_module_type[0]['descripcion'];
|
|
||||||
|
|
||||||
$get_module_warning_value = $get_module_type[0]['min_warning'];
|
|
||||||
|
|
||||||
$get_module_critical_value = $get_module_type[0]['min_critical'];
|
|
||||||
|
|
||||||
$get_module_interval_value = $get_module_type[0]['module_interval'];
|
|
||||||
|
|
||||||
$values_module = array(
|
|
||||||
'nombre' => io_safe_input($element["name"]),
|
|
||||||
'id_modulo' => 0,
|
|
||||||
'prediction_module' => 6,
|
|
||||||
'id_agente' => $id_agent[0]['id_agent'],
|
|
||||||
'parent_module_id' => $id_parent_modulo[0]['id_agente_modulo'],
|
|
||||||
'custom_integer_1' =>$element["id_cluster"],
|
|
||||||
'custom_integer_2' =>$tcluster_module,
|
|
||||||
'id_tipo_modulo' =>1,
|
|
||||||
'descripcion' => $get_module_description_value,
|
|
||||||
'min_warning' => $element["warning_limit"],
|
|
||||||
'min_critical' => $element["critical_limit"],
|
|
||||||
'tcp_port' => 1,
|
|
||||||
'module_interval' => $get_module_interval_value
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
$id_module = modules_create_agent_module($values_module['id_agente'],$values_module['nombre'],$values_module);
|
|
||||||
|
|
||||||
$launch_cluster = db_process_sql('update tagente_modulo set flag = 1 where custom_integer_1 = '.$element["id_cluster"].' and nombre = "Cluster status"');
|
|
||||||
|
|
||||||
if ($tcluster_module !== false){
|
|
||||||
db_pandora_audit("Report management", "Module #".$element["name"]." assigned to cluster #".$element["id_cluster"]);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
db_pandora_audit("Report management", "Fail try to assign module to cluster");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
elseif ($element["type"] == "AP") {
|
|
||||||
|
}
|
||||||
|
elseif ($element["type"] == "AP") {
|
||||||
|
$id_agent = db_process_sql('select id_agent from tcluster where id = '.$element["id_cluster"]);
|
||||||
|
|
||||||
|
$id_parent_modulo = db_process_sql('select id_agente_modulo from tagente_modulo where id_agente = '.$id_agent[0]['id_agent']
|
||||||
|
. ' and nombre = "' . io_safe_input("Cluster status") . '"');
|
||||||
|
|
||||||
|
$tcluster_balanced_module = db_process_sql_insert('tcluster_item',array('name'=>$element["name"],'id_cluster'=>$element["id_cluster"],'item_type'=>"AP",'is_critical'=>$element["is_critical"]));
|
||||||
|
|
||||||
|
$get_module_type = db_process_sql('select id_tipo_modulo,descripcion,min_warning,min_critical,module_interval from tagente_modulo where nombre = "'.io_safe_input($element["name"]).'" limit 1');
|
||||||
|
|
||||||
|
$get_module_type_value = $get_module_type[0]['id_tipo_modulo'];
|
||||||
|
$get_module_description_value = $get_module_type[0]['descripcion'];
|
||||||
|
$get_module_warning_value = $get_module_type[0]['min_warning'];
|
||||||
|
$get_module_critical_value = $get_module_type[0]['min_critical'];
|
||||||
|
$get_module_interval_value = $get_module_type[0]['module_interval'];
|
||||||
|
$get_module_type_nombre = db_process_sql('select nombre from ttipo_modulo where id_tipo = '.$get_module_type_value);
|
||||||
|
$get_module_type_nombre_value = $get_module_type_nombre[0]['nombre'];
|
||||||
|
|
||||||
|
|
||||||
$id_agent = db_process_sql('select id_agent from tcluster where id = '.$element["id_cluster"]);
|
if(strpos($get_module_type_nombre_value,'inc') != false){
|
||||||
|
$get_module_type_value_normal = 4;
|
||||||
|
}
|
||||||
|
elseif (strpos($get_module_type_nombre_value,'proc') != false) {
|
||||||
|
$get_module_type_value_normal = 2;
|
||||||
|
}
|
||||||
|
elseif (strpos($get_module_type_nombre_value,'data') != false) {
|
||||||
|
$get_module_type_value_normal = 1;
|
||||||
|
}
|
||||||
|
elseif (strpos($get_module_type_nombre_value,'string') != false) {
|
||||||
|
$get_module_type_value_normal = 3;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$get_module_type_value_normal = 1;
|
||||||
|
}
|
||||||
|
|
||||||
$id_parent_modulo = db_process_sql('select id_agente_modulo from tagente_modulo where id_agente = '.$id_agent[0]['id_agent'].' and nombre = "Cluster status"');
|
$values_module = array(
|
||||||
|
'nombre' => $element["name"],
|
||||||
|
'id_modulo' => 5,
|
||||||
|
'prediction_module' => 7,
|
||||||
|
'id_agente' => $id_agent[0]['id_agent'],
|
||||||
|
'parent_module_id' => $id_parent_modulo[0]['id_agente_modulo'],
|
||||||
|
'custom_integer_1' => $element["id_cluster"],
|
||||||
|
'custom_integer_2' => $tcluster_balanced_module,
|
||||||
|
'id_tipo_modulo' => $get_module_type_value_normal,
|
||||||
|
'descripcion' => $get_module_description_value,
|
||||||
|
'min_warning' => $get_module_warning_value,
|
||||||
|
'min_critical' => $get_module_critical_value,
|
||||||
|
'tcp_port' => $element["is_critical"],
|
||||||
|
'module_interval' => $get_module_interval_value
|
||||||
|
);
|
||||||
|
|
||||||
$tcluster_balanced_module = db_process_sql_insert('tcluster_item',array('name'=>$element["name"],'id_cluster'=>$element["id_cluster"],'item_type'=>"AP",'is_critical'=>$element["is_critical"]));
|
$id_module = modules_create_agent_module($values_module['id_agente'],$values_module['nombre'],$values_module, true);
|
||||||
|
|
||||||
$get_module_type = db_process_sql('select id_tipo_modulo,descripcion,min_warning,min_critical,module_interval from tagente_modulo where nombre = "'.io_safe_input($element["name"]).'" limit 1');
|
$launch_cluster = db_process_sql('update tagente_modulo set flag = 1 where custom_integer_1 = '.$element["id_cluster"]
|
||||||
|
. ' and nombre = "' . io_safe_input("Cluster status") . '"');
|
||||||
$get_module_type_value = $get_module_type[0]['id_tipo_modulo'];
|
|
||||||
|
|
||||||
$get_module_description_value = $get_module_type[0]['descripcion'];
|
|
||||||
|
|
||||||
$get_module_warning_value = $get_module_type[0]['min_warning'];
|
|
||||||
|
|
||||||
$get_module_critical_value = $get_module_type[0]['min_critical'];
|
|
||||||
|
|
||||||
$get_module_interval_value = $get_module_type[0]['module_interval'];
|
|
||||||
|
|
||||||
$get_module_type_nombre = db_process_sql('select nombre from ttipo_modulo where id_tipo = '.$get_module_type_value);
|
|
||||||
|
|
||||||
$get_module_type_nombre_value = $get_module_type_nombre[0]['nombre'];
|
|
||||||
|
|
||||||
|
|
||||||
if(strpos($get_module_type_nombre_value,'inc') != false){
|
|
||||||
$get_module_type_value_normal = 4;
|
|
||||||
}
|
|
||||||
elseif (strpos($get_module_type_nombre_value,'proc') != false) {
|
|
||||||
$get_module_type_value_normal = 2;
|
|
||||||
}
|
|
||||||
elseif (strpos($get_module_type_nombre_value,'data') != false) {
|
|
||||||
$get_module_type_value_normal = 1;
|
|
||||||
}
|
|
||||||
elseif (strpos($get_module_type_nombre_value,'string') != false) {
|
|
||||||
$get_module_type_value_normal = 3;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$get_module_type_value_normal = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$values_module = array(
|
|
||||||
'nombre' => $element["name"],
|
|
||||||
'id_modulo' => 5,
|
|
||||||
'prediction_module' => 7,
|
|
||||||
'id_agente' => $id_agent[0]['id_agent'],
|
|
||||||
'parent_module_id' => $id_parent_modulo[0]['id_agente_modulo'],
|
|
||||||
'custom_integer_1' => $element["id_cluster"],
|
|
||||||
'custom_integer_2' => $tcluster_balanced_module,
|
|
||||||
'id_tipo_modulo' => $get_module_type_value_normal,
|
|
||||||
'descripcion' => $get_module_description_value,
|
|
||||||
'min_warning' => $get_module_warning_value,
|
|
||||||
'min_critical' => $get_module_critical_value,
|
|
||||||
'tcp_port' => $element["is_critical"],
|
|
||||||
'module_interval' => $get_module_interval_value
|
|
||||||
);
|
|
||||||
|
|
||||||
$id_module = modules_create_agent_module($values_module['id_agente'],$values_module['nombre'],$values_module);
|
|
||||||
|
|
||||||
$launch_cluster = db_process_sql('update tagente_modulo set flag = 1 where custom_integer_1 = '.$element["id_cluster"].' and nombre = "Cluster status"');
|
|
||||||
|
|
||||||
if ($tcluster_balanced_module !== false){
|
|
||||||
db_pandora_audit("Report management", "Module #".$element["name"]." assigned to cluster #".$element["id_cluster"]);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
db_pandora_audit("Report management", "Fail try to assign module to cluster");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if($result && !$results){
|
|
||||||
$results = $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($id_module){
|
|
||||||
returnData('string', array('type' => 'string', 'data' => 1));
|
|
||||||
} else {
|
|
||||||
returnError('error_add_cluster_element', __('Error adding elements to cluster'));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ($tcluster_balanced_module !== false){
|
||||||
|
db_pandora_audit("Report management", "Module #".$element["name"]." assigned to cluster #".$element["id_cluster"]);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
db_pandora_audit("Report management", "Fail try to assign module to cluster");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$id_module = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($id_module !== false){
|
||||||
function api_set_delete_cluster($id, $thrash1, $thrast2, $thrash3) {
|
returnData('string', array('type' => 'string', 'data' => 1));
|
||||||
global $config;
|
} else {
|
||||||
|
returnError('error_add_cluster_element', __('Error adding elements to cluster'));
|
||||||
if (defined ('METACONSOLE')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$cluster_group = clusters_get_group($id);
|
|
||||||
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AD")){
|
|
||||||
returnError('error_set_delete_cluster', __('The user cannot access to the cluster'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$temp_id_cluster = db_process_sql('select id_agent from tcluster where id ='.$id);
|
|
||||||
|
|
||||||
$tcluster_modules_delete_get = db_process_sql('select id_agente_modulo from tagente_modulo where custom_integer_1 = '.$id);
|
|
||||||
|
|
||||||
foreach ($tcluster_modules_delete_get as $key => $value) {
|
|
||||||
$tcluster_modules_delete_get_values[] = $value['id_agente_modulo'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$tcluster_modules_delete = modules_delete_agent_module($tcluster_modules_delete_get_values);
|
|
||||||
|
|
||||||
$tcluster_items_delete = db_process_sql('delete from tcluster_item where id_cluster = '.$id);
|
|
||||||
|
|
||||||
$tcluster_agents_delete = db_process_sql('delete from tcluster_agent where id_cluster = '.$id);
|
|
||||||
|
|
||||||
$tcluster_delete = db_process_sql('delete from tcluster where id = '.$id);
|
|
||||||
|
|
||||||
$tcluster_agent_delete = agents_delete_agent($temp_id_cluster[0]['id_agent']);
|
|
||||||
|
|
||||||
if (!$tcluster_modules_delete || !$tcluster_items_delete || !$tcluster_agents_delete || !$tcluster_delete || !$tcluster_agent_delete)
|
|
||||||
returnError('error_delete', 'Error in delete operation.');
|
|
||||||
else
|
|
||||||
returnData('string', array('type' => 'string', 'data' => __('Correct Delete')));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function api_set_delete_cluster_agent($thrash1, $thrast2, $other, $thrash3) {
|
|
||||||
global $config;
|
|
||||||
|
|
||||||
if (defined ('METACONSOLE')) {
|
function api_set_delete_cluster($id, $thrash1, $thrast2, $thrash3) {
|
||||||
return;
|
global $config;
|
||||||
}
|
|
||||||
|
|
||||||
$id_agent = $other['data'][0];
|
if (defined ('METACONSOLE')) {
|
||||||
$id_cluster = $other['data'][1];
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$cluster_group = clusters_get_group($id_agent);
|
$cluster_group = clusters_get_group($id);
|
||||||
if(!$cluster_group
|
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AD")){
|
||||||
|| !check_acl($config['id_user'], $cluster_group, "AW")
|
returnError('error_set_delete_cluster', __('The user cannot access to the cluster'));
|
||||||
|| !agents_check_access_agent($id_agent, "AW")){
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$temp_id_cluster = db_process_sql('select id_agent from tcluster where id ='.$id);
|
||||||
|
|
||||||
|
$tcluster_modules_delete_get = db_process_sql('select id_agente_modulo from tagente_modulo where custom_integer_1 = '.$id);
|
||||||
|
|
||||||
|
foreach ($tcluster_modules_delete_get as $key => $value) {
|
||||||
|
$tcluster_modules_delete_get_values[] = $value['id_agente_modulo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$tcluster_modules_delete = modules_delete_agent_module($tcluster_modules_delete_get_values);
|
||||||
|
$tcluster_items_delete = db_process_sql('delete from tcluster_item where id_cluster = '.$id);
|
||||||
|
$tcluster_agents_delete = db_process_sql('delete from tcluster_agent where id_cluster = '.$id);
|
||||||
|
$tcluster_delete = db_process_sql('delete from tcluster where id = '.$id);
|
||||||
|
$tcluster_agent_delete = agents_delete_agent($temp_id_cluster[0]['id_agent']);
|
||||||
|
|
||||||
|
if (!$tcluster_modules_delete || !$tcluster_items_delete || !$tcluster_agents_delete || !$tcluster_delete || !$tcluster_agent_delete)
|
||||||
|
returnError('error_delete', 'Error in delete operation.');
|
||||||
|
else
|
||||||
|
returnData('string', array('type' => 'string', 'data' => __('Correct Delete')));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function api_set_delete_cluster_agents($thrash1, $thrast2, $other, $thrash3) {
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (defined ('METACONSOLE')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_agent = $other['data'][0];
|
||||||
|
$id_cluster = $other['data'][1];
|
||||||
|
|
||||||
|
$target_agents = json_decode(base64_decode(io_safe_output($other['data'][0])), true);
|
||||||
|
|
||||||
|
$cluster_group = clusters_get_group($id_agent);
|
||||||
|
if (!users_is_admin($config['id_user'])) {
|
||||||
|
if (!$cluster_group
|
||||||
|
|| (!check_acl($config['id_user'], $cluster_group, "AW"))
|
||||||
|
|| (!agents_check_access_agent($id_agent, "AW"))) {
|
||||||
returnError('error_set_delete_cluster_agent', __('The user cannot access to the cluster'));
|
returnError('error_set_delete_cluster_agent', __('The user cannot access to the cluster'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tcluster_agent_delete = db_process_sql('delete from tcluster_agent where id_agent = '.$id_agent.' and id_cluster = '.$id_cluster);
|
|
||||||
|
|
||||||
|
|
||||||
if (!$tcluster_agent_delete)
|
|
||||||
returnError('error_delete', 'Error in delete operation.');
|
|
||||||
else
|
|
||||||
returnData('string', array('type' => 'string', 'data' => __('Correct Delete')));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$n_agents_deleted = 0;
|
||||||
|
$n_agents = 0;
|
||||||
|
|
||||||
function api_set_delete_cluster_item($id, $thrash1, $thrast2, $thrast3) {
|
if (is_array($target_agents)) {
|
||||||
global $config;
|
$target_clusters = array();
|
||||||
|
foreach ($target_agents as $data) {
|
||||||
if (defined ('METACONSOLE')) {
|
$n_agents++;
|
||||||
return;
|
if (!isset($target_clusters[$data["id"]])) {
|
||||||
|
$target_clusters[$data["id"]] = array();
|
||||||
|
}
|
||||||
|
array_push($target_clusters[$data["id"]], $data["id_agent"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cluster_group = clusters_get_group($id);
|
foreach ($target_clusters as $id_cluster => $id_agent_array) {
|
||||||
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AD")){
|
$rs = cluster_delete_agents($id_cluster, $id_agent_array);
|
||||||
returnError('error_set_delete_cluster_item', __('The user cannot access to the cluster'));
|
if ($rs !== false){
|
||||||
return;
|
$n_agents_deleted += $rs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$delete_module_aa_get = db_process_sql('select id_agente_modulo from tagente_modulo where custom_integer_2 = '.$id);
|
|
||||||
|
|
||||||
$delete_module_aa_get_result = modules_delete_agent_module($delete_module_aa_get[0]['id_agente_modulo']);
|
|
||||||
|
|
||||||
$delete_item = db_process_sql('delete from tcluster_item where id = '.$id);
|
|
||||||
|
|
||||||
if (!$delete_item)
|
|
||||||
returnError('error_delete', 'Error in delete operation.');
|
|
||||||
else
|
|
||||||
returnData('string', array('type' => 'string', 'data' => __('Correct Delete')));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($n_agents > $n_agents_deleted)
|
||||||
|
returnError('error_delete', 'Error in delete operation.');
|
||||||
|
else
|
||||||
|
returnData('string', array('type' => 'string', 'data' => $n_agents_deleted));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function api_set_delete_cluster_item($id, $thrash1, $thrast2, $thrast3) {
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (defined ('METACONSOLE')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cluster_group = clusters_get_group($id);
|
||||||
|
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AD")){
|
||||||
|
returnError('error_set_delete_cluster_item', __('The user cannot access to the cluster'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$delete_module_aa_get = db_process_sql('select id_agente_modulo from tagente_modulo where custom_integer_2 = '.$id);
|
||||||
|
$delete_module_aa_get_result = modules_delete_agent_module($delete_module_aa_get[0]['id_agente_modulo']);
|
||||||
|
$delete_item = db_process_sql('delete from tcluster_item where id = '.$id);
|
||||||
|
|
||||||
|
if (!$delete_item)
|
||||||
|
returnError('error_delete', 'Error in delete operation.');
|
||||||
|
else
|
||||||
|
returnData('string', array('type' => 'string', 'data' => __('Correct Delete')));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function api_set_apply_module_template($id_template, $id_agent, $thrash3, $thrash4) {
|
function api_set_apply_module_template($id_template, $id_agent, $thrash3, $thrash4) {
|
||||||
|
|
||||||
if (isset ($id_template)) {
|
if (isset ($id_template)) {
|
||||||
@ -11313,7 +11332,9 @@ function api_get_cluster_status($id_cluster, $trash1, $trash2, $returnType) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "select estado from tagente_estado INNER JOIN tagente_modulo ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo and tagente_modulo.nombre = 'Cluster status' and tagente_modulo.id_agente = (select id_agent from tcluster where id = ".$id_cluster.")";
|
$sql = 'select estado from tagente_estado INNER JOIN tagente_modulo ON tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo '
|
||||||
|
. ' and tagente_modulo.nombre = "' . io_safe_input("Cluster status") . '" '
|
||||||
|
. ' and tagente_modulo.id_agente = (select id_agent from tcluster where id = ".$id_cluster.")';
|
||||||
|
|
||||||
$value = db_get_value_sql($sql);
|
$value = db_get_value_sql($sql);
|
||||||
|
|
||||||
@ -11333,19 +11354,19 @@ function api_get_cluster_id_by_name($cluster_name, $trash1, $trash2, $returnType
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cluster_name = io_safe_output($cluster_name);
|
|
||||||
|
|
||||||
$value = cluster_get_id_by_name($cluster_name);
|
$value = cluster_get_id_by_name($cluster_name);
|
||||||
|
|
||||||
if ($value === false) {
|
if(($value === false) || ($value === null)){
|
||||||
returnError('id_not_found', $returnType);
|
returnError('id_not_found', $returnType);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cluster_group = clusters_get_group($value);
|
$cluster_group = clusters_get_group($value);
|
||||||
|
|
||||||
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AR")){
|
if (!users_is_admin($config['id_user'])) {
|
||||||
returnError('error_get_cluster_status', __('The user cannot access to the cluster'));
|
if(!$cluster_group || !check_acl($config['id_user'], $cluster_group, "AR")) {
|
||||||
return;
|
returnError('error_get_cluster_status', __('The user cannot access to the cluster'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = array('type' => 'string', 'data' => $value);
|
$data = array('type' => 'string', 'data' => $value);
|
||||||
@ -11360,10 +11381,10 @@ function api_get_agents_id_name_by_cluster_id($cluster_id, $trash1, $trash2, $re
|
|||||||
|
|
||||||
$all_agents = cluster_get_agents_id_name_by_cluster_id($cluster_id);
|
$all_agents = cluster_get_agents_id_name_by_cluster_id($cluster_id);
|
||||||
|
|
||||||
if (count($all_agents) > 0 and $all_agents !== false) {
|
if ($all_agents !== false) {
|
||||||
$data = array('type' => 'json', 'data' => $all_agents);
|
$data = array('type' => 'json', 'data' => $all_agents);
|
||||||
|
|
||||||
returnData('json', $data);
|
returnData('json', $data, JSON_FORCE_OBJECT);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
returnError('error_agents', 'No agents retrieved.');
|
returnError('error_agents', 'No agents retrieved.');
|
||||||
@ -11380,7 +11401,7 @@ function api_get_agents_id_name_by_cluster_name($cluster_name, $trash1, $trash2,
|
|||||||
if (count($all_agents) > 0 and $all_agents !== false) {
|
if (count($all_agents) > 0 and $all_agents !== false) {
|
||||||
$data = array('type' => 'json', 'data' => $all_agents);
|
$data = array('type' => 'json', 'data' => $all_agents);
|
||||||
|
|
||||||
returnData('json', $data);
|
returnData('json', $data, JSON_FORCE_OBJECT);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
returnError('error_agents', 'No agents retrieved.');
|
returnError('error_agents', 'No agents retrieved.');
|
||||||
@ -11430,7 +11451,7 @@ function api_get_modules_id_name_by_cluster_name ($cluster_name){
|
|||||||
function util_api_check_agent_and_print_error($id_agent, $returnType, $access = "AR") {
|
function util_api_check_agent_and_print_error($id_agent, $returnType, $access = "AR") {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$check_agent = agents_check_access_agent($id_agent, $access);
|
$check_agent = agents_check_access_agent($id_agent["id_agente"], $access);
|
||||||
if ($check_agent === true) return true;
|
if ($check_agent === true) return true;
|
||||||
|
|
||||||
if ($check_agent === false || !check_acl($config['id_user'], 0, $access)) {
|
if ($check_agent === false || !check_acl($config['id_user'], 0, $access)) {
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
<div style='height: 10px'>
|
<div style='height: 10px'>
|
||||||
<?php
|
<?php
|
||||||
$version = '7.0NG.724';
|
$version = '7.0NG.724';
|
||||||
$build = '180618';
|
$build = '180619';
|
||||||
$banner = "v$version Build $build";
|
$banner = "v$version Build $build";
|
||||||
|
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
|
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name apache2
|
%define httpd_name apache2
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-server
|
package: pandorafms-server
|
||||||
Version: 7.0NG.724-180618
|
Version: 7.0NG.724-180619
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.724-180618"
|
pandora_version="7.0NG.724-180619"
|
||||||
|
|
||||||
package_cpan=0
|
package_cpan=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -630,3 +630,9 @@ syslog_max 65535
|
|||||||
#logstash_host ip
|
#logstash_host ip
|
||||||
#logstash_port 10514
|
#logstash_port 10514
|
||||||
|
|
||||||
|
# Pandora FMS Database HA Tool execution interval in seconds (PANDORA FMS ENTERPRISE ONLY).
|
||||||
|
ha_interval 30
|
||||||
|
|
||||||
|
# Pandora FMS Database HA Tool monitoring interval in seconds. Must be a multiple of ha_interval (PANDORA FMS ENTERPRISE ONLY).
|
||||||
|
ha_monitoring_interval 60
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ our @EXPORT = qw(
|
|||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.724";
|
my $pandora_version = "7.0NG.724";
|
||||||
my $pandora_build = "180618";
|
my $pandora_build = "180619";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
# Setup hash
|
# Setup hash
|
||||||
|
@ -24,6 +24,7 @@ use Scalar::Util qw(looks_like_number);
|
|||||||
use Time::HiRes qw(time);
|
use Time::HiRes qw(time);
|
||||||
use POSIX qw(strftime setsid floor);
|
use POSIX qw(strftime setsid floor);
|
||||||
use MIME::Base64;
|
use MIME::Base64;
|
||||||
|
use JSON qw(decode_json encode_json);
|
||||||
|
|
||||||
use base 'Exporter';
|
use base 'Exporter';
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ our @ISA = qw(Exporter);
|
|||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.724";
|
my $pandora_version = "7.0NG.724";
|
||||||
my $pandora_build = "180618";
|
my $pandora_build = "180619";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||||
@ -62,6 +63,7 @@ our @EXPORT = qw(
|
|||||||
in_array
|
in_array
|
||||||
init
|
init
|
||||||
is_enabled
|
is_enabled
|
||||||
|
join_by_field
|
||||||
load_perl_modules
|
load_perl_modules
|
||||||
logger
|
logger
|
||||||
merge_hashes
|
merge_hashes
|
||||||
@ -1003,6 +1005,22 @@ sub init_system {
|
|||||||
return $conf;
|
return $conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Return a string with the concatenation of a hash array based on a field
|
||||||
|
################################################################################
|
||||||
|
sub join_by_field {
|
||||||
|
my ($separator, $field, $array_hashref) = @_;
|
||||||
|
|
||||||
|
$separator = ',' if empty($separator);
|
||||||
|
my $str = '';
|
||||||
|
foreach my $item (@{$array_hashref}) {
|
||||||
|
$str .= (defined($item->{$field})?$item->{$field}:'') . $separator;
|
||||||
|
}
|
||||||
|
chop($str);
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Return system environment
|
# Return system environment
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -1500,14 +1518,14 @@ sub api_available {
|
|||||||
# apidata->{other} = [field1,field2,...,fieldi,...,fieldn]
|
# apidata->{other} = [field1,field2,...,fieldi,...,fieldn]
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
sub api_call {
|
sub api_call {
|
||||||
my ($conf, $apidata) = @_;
|
my ($conf, $apidata, $decode_json) = @_;
|
||||||
my ($api_url, $api_pass, $api_user, $api_user_pass,
|
my ($api_url, $api_pass, $api_user, $api_user_pass,
|
||||||
$op, $op2, $other_mode, $other, $return_type);
|
$op, $op2, $id, $id2, $other_mode, $other, $return_type);
|
||||||
my $separator;
|
my $separator;
|
||||||
|
|
||||||
if (ref $apidata eq "ARRAY") {
|
if (ref $apidata eq "ARRAY") {
|
||||||
($api_url, $api_pass, $api_user, $api_user_pass,
|
($api_url, $api_pass, $api_user, $api_user_pass,
|
||||||
$op, $op2, $return_type, $other_mode, $other) = @{$apidata};
|
$op, $op2, $id, $id2, $return_type, $other_mode, $other) = @{$apidata};
|
||||||
}
|
}
|
||||||
if (ref $apidata eq "HASH") {
|
if (ref $apidata eq "HASH") {
|
||||||
$api_url = $apidata->{'api_url'};
|
$api_url = $apidata->{'api_url'};
|
||||||
@ -1516,6 +1534,8 @@ sub api_call {
|
|||||||
$api_user_pass = $apidata->{'api_user_pass'};
|
$api_user_pass = $apidata->{'api_user_pass'};
|
||||||
$op = $apidata->{'op'};
|
$op = $apidata->{'op'};
|
||||||
$op2 = $apidata->{'op2'};
|
$op2 = $apidata->{'op2'};
|
||||||
|
$id = $apidata->{'id'};
|
||||||
|
$id2 = $apidata->{'id2'};
|
||||||
$return_type = $apidata->{'return_type'};
|
$return_type = $apidata->{'return_type'};
|
||||||
$other_mode = "url_encode_separator_" . $apidata->{'url_encode_separator'} unless empty($apidata->{'url_encode_separator'});
|
$other_mode = "url_encode_separator_" . $apidata->{'url_encode_separator'} unless empty($apidata->{'url_encode_separator'});
|
||||||
$other_mode = "url_encode_separator_|" if empty($other_mode);
|
$other_mode = "url_encode_separator_|" if empty($other_mode);
|
||||||
@ -1528,6 +1548,8 @@ sub api_call {
|
|||||||
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
|
$api_user_pass = $conf->{'api_user_pass'} if empty($api_user_pass);
|
||||||
$op = $conf->{'op'} if empty($op);
|
$op = $conf->{'op'} if empty($op);
|
||||||
$op2 = $conf->{'op2'} if empty($op2);
|
$op2 = $conf->{'op2'} if empty($op2);
|
||||||
|
$id = $conf->{'id'} if empty($id);
|
||||||
|
$id2 = $conf->{'id2'} if empty($id2);
|
||||||
$return_type = $conf->{'return_type'} if empty($return_type);
|
$return_type = $conf->{'return_type'} if empty($return_type);
|
||||||
$return_type = 'json' if empty($return_type);
|
$return_type = 'json' if empty($return_type);
|
||||||
if (ref ($apidata->{'other'}) eq "ARRAY") {
|
if (ref ($apidata->{'other'}) eq "ARRAY") {
|
||||||
@ -1545,18 +1567,30 @@ sub api_call {
|
|||||||
$other = $apidata->{'other'};
|
$other = $apidata->{'other'};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$other = '' if empty($other);
|
||||||
|
$id = '' if empty($id);
|
||||||
|
$id2 = '' if empty($id2);
|
||||||
|
|
||||||
my $call;
|
my $call;
|
||||||
|
|
||||||
$call = $api_url . '?';
|
$call = $api_url . '?';
|
||||||
$call .= 'op=' . $op . '&op2=' . $op2;
|
$call .= 'op=' . $op . '&op2=' . $op2 . '&id=' . $id;
|
||||||
$call .= '&other_mode=url_encode_separator_' . $separator;
|
$call .= '&other_mode=url_encode_separator_' . $separator;
|
||||||
$call .= '&other=' . $other;
|
$call .= '&other=' . $other;
|
||||||
$call .= '&apipass=' . $api_pass . '&user=' . $api_user . '&pass=' . $api_user_pass;
|
$call .= '&apipass=' . $api_pass . '&user=' . $api_user . '&pass=' . $api_user_pass;
|
||||||
$call .= '&return_type=' . $return_type;
|
$call .= '&return_type=' . $return_type;
|
||||||
|
|
||||||
my $rs = call_url($conf, "$call");
|
my $rs = call_url($conf, "$call");
|
||||||
|
|
||||||
if (ref($rs) ne "HASH") {
|
if (ref($rs) ne "HASH") {
|
||||||
|
if (is_enabled($decode_json)) {
|
||||||
|
eval {
|
||||||
|
my $tmp = decode_json($rs);
|
||||||
|
$rs = $tmp;
|
||||||
|
};
|
||||||
|
if ($@) {
|
||||||
|
print_stderror($conf, "Error: " . $@);
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
rs => (empty($rs)?1:0),
|
rs => (empty($rs)?1:0),
|
||||||
error => (empty($rs)?"Empty response.":undef),
|
error => (empty($rs)?"Empty response.":undef),
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.724
|
%define version 7.0NG.724
|
||||||
%define release 180618
|
%define release 180619
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.724"
|
PI_VERSION="7.0NG.724"
|
||||||
PI_BUILD="180618"
|
PI_BUILD="180619"
|
||||||
|
|
||||||
MODE=$1
|
MODE=$1
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
|
@ -34,7 +34,7 @@ use PandoraFMS::Config;
|
|||||||
use PandoraFMS::DB;
|
use PandoraFMS::DB;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.724 PS180618";
|
my $version = "7.0NG.724 PS180619";
|
||||||
|
|
||||||
# Pandora server configuration
|
# Pandora server configuration
|
||||||
my %conf;
|
my %conf;
|
||||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||||||
Encode::Locale::decode_argv;
|
Encode::Locale::decode_argv;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.724 PS180618";
|
my $version = "7.0NG.724 PS180619";
|
||||||
|
|
||||||
# save program name for logging
|
# save program name for logging
|
||||||
my $progname = basename($0);
|
my $progname = basename($0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user