2019-10-18 10:30:19 +02:00
< ? php
/**
2019-10-30 16:56:44 +01:00
* Welcome to Pandora FMS feature .
2019-10-18 10:30:19 +02:00
*
* @ category Class
* @ package Pandora FMS
* @ subpackage New Installation Welcome Window
* @ version 1.0 . 0
* @ license See below
*
* ______ ___ _______ _______ ________
* | __ \ .-----.--.--.--| |.-----.----.-----. | ___ | | | __ |
* | __ /| _ | | _ || _ | _ | _ | | ___ | | __ |
* | ___ | | ___ . _ | __ | __ | _____ || _____ | __ | | ___ . _ | | ___ | | __ | _ | __ | _______ |
*
* ============================================================================
2022-10-25 16:25:34 +02:00
* Copyright ( c ) 2005 - 2022 Artica Soluciones Tecnologicas
2019-10-18 10:30:19 +02:00
* Please see http :// pandorafms . org for full contribution list
* 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 for version 2.
* 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 .
* ============================================================================
*/
// Begin.
global $config ;
require_once $config [ 'homedir' ] . '/godmode/wizards/Wizard.main.php' ;
2019-10-30 16:56:44 +01:00
2019-10-18 10:30:19 +02:00
/**
2019-10-24 16:56:13 +02:00
* Class WelcomeWindow .
2019-10-18 10:30:19 +02:00
*/
2019-10-24 16:56:13 +02:00
class WelcomeWindow extends Wizard
2019-10-18 10:30:19 +02:00
{
/**
* Allowed methods to be called using AJAX request .
*
* @ var array
*/
2019-10-28 18:57:10 +01:00
public $AJAXMethods = [
'loadWelcomeWindow' ,
'cancelWelcome' ,
];
2019-10-18 10:30:19 +02:00
2019-11-07 14:05:42 +01:00
/**
* Tasks .
*
* @ var array
*/
private $tasks = [
'welcome_mail_configured' ,
'welcome_id_agent' ,
'welcome_module' ,
'welcome_alert' ,
'welcome_task' ,
];
2019-10-18 10:30:19 +02:00
/**
* Url of controller .
*
* @ var string
*/
public $ajaxController ;
2019-10-24 16:56:13 +02:00
/**
* Current step .
*
2019-10-30 16:56:44 +01:00
* @ var integer
2019-10-24 16:56:13 +02:00
*/
public $step ;
2019-10-30 16:56:44 +01:00
/**
* Current agent ( created example ) .
*
* @ var integer
*/
public $agent ;
2019-10-24 16:56:13 +02:00
2019-10-28 18:57:10 +01:00
/**
* Generates a JSON error .
*
* @ param string $msg Error message .
*
* @ return void
*/
public function error ( $msg )
{
echo json_encode (
[ 'error' => $msg ]
);
}
2019-10-18 10:30:19 +02:00
/**
* Checks if target method is available to be called using AJAX .
*
* @ param string $method Target method .
*
* @ return boolean True allowed , false not .
*/
public function ajaxMethod ( $method )
{
global $config ;
// Check access.
check_login ();
return in_array ( $method , $this -> AJAXMethods );
}
/**
* Constructor .
*
2019-10-30 16:56:44 +01:00
* @ param boolean $must_run Must run or not .
* @ param string $ajax_controller Controller .
2019-10-18 10:30:19 +02:00
*
* @ return object
2019-10-30 16:56:44 +01:00
* @ throws Exception On error .
2019-10-18 10:30:19 +02:00
*/
2019-10-24 16:56:13 +02:00
public function __construct (
2019-10-30 16:56:44 +01:00
bool $must_run = false ,
2019-10-24 16:56:13 +02:00
$ajax_controller = 'include/ajax/welcome_window'
) {
2019-10-18 10:30:19 +02:00
$this -> ajaxController = $ajax_controller ;
2019-10-30 16:56:44 +01:00
if ( $this -> initialize ( $must_run ) !== true ) {
throw new Exception ( 'Must not be shown' );
}
2019-10-18 10:30:19 +02:00
return $this ;
}
/**
* Main method .
*
* @ return void
*/
public function run ()
{
ui_require_css_file ( 'new_installation_welcome_window' );
2021-03-11 15:40:23 +01:00
echo '<div id="welcome_modal_window" class="invisible"; >' ;
2019-10-18 10:30:19 +02:00
?>
< script type = " text/javascript " >
load_modal ({
target : $ ( '#welcome_modal_window' ),
url : '<?php echo ui_get_full_url(' ajax . php ', false, false, false); ?>' ,
modal : {
2020-02-10 16:21:04 +01:00
title : " <?php echo __('Welcome to').' '.io_safe_output(get_product_name()); ?> " ,
2019-11-07 10:42:46 +01:00
cancel : '<?php echo __(' Do not show anymore '); ?>' ,
ok : '<?php echo __(' Close '); ?>'
2019-10-18 10:30:19 +02:00
},
onshow : {
page : '<?php echo $this->ajaxController; ?>' ,
2019-10-28 18:57:10 +01:00
method : 'loadWelcomeWindow' ,
2019-10-18 10:30:19 +02:00
},
2019-10-28 18:57:10 +01:00
oncancel : {
page : '<?php echo $this->ajaxController; ?>' ,
title : " <?php echo __('Cancel Configuration Window'); ?> " ,
method : 'cancelWelcome' ,
confirm : function ( fn ) {
confirmDialog ({
title : '<?php echo __(' Are you sure ? '); ?>' ,
message : '<?php echo __(' Are you sure you want to cancel this tutorial ? '); ?>' ,
ok : '<?php echo __(' OK '); ?>' ,
cancel : '<?php echo __(' Cancel '); ?>' ,
onAccept : function () {
// Continue execution.
fn ();
}
})
}
}
2019-10-18 10:30:19 +02:00
});
2019-10-28 18:57:10 +01:00
2019-10-18 10:30:19 +02:00
</ script >
< ? php
echo '</div>' ;
}
2019-10-28 18:57:10 +01:00
/**
2019-10-30 16:56:44 +01:00
* Method to cancel welcome modal window .
*
* @ return void
2019-10-28 18:57:10 +01:00
*/
public function cancelWelcome ()
{
2019-10-30 16:56:44 +01:00
// Config update value.
$this -> setStep ( WELCOME_FINISHED );
}
/**
* Return current step .
*
* @ return integer Step .
*/
public function getStep () : int
{
global $config ;
$this -> step = $config [ 'welcome_state' ];
2019-11-07 14:05:42 +01:00
// Get step available.
2019-11-11 13:38:27 +01:00
if ( empty ( $config [ 'welcome_mail_configured' ]) === true
&& get_parameter ( 'sec2' ) == 'godmode/setup/setup'
&& get_parameter ( 'section' , '' ) == 'general'
&& get_parameter ( 'update_config' , false ) !== false
) {
$this -> step = W_CONFIGURE_MAIL ;
} else if ( empty ( $config [ 'welcome_id_agent' ]) === true ) {
2019-11-07 14:05:42 +01:00
$this -> step = W_CREATE_AGENT ;
} else if ( empty ( $config [ 'welcome_module' ]) === true ) {
$this -> step = W_CREATE_MODULE ;
} else if ( empty ( $config [ 'welcome_alert' ]) === true ) {
$this -> step = W_CREATE_ALERT ;
} else if ( empty ( $config [ 'welcome_task' ]) === true ) {
$this -> step = W_CREATE_TASK ;
}
2019-10-30 16:56:44 +01:00
return $this -> step ;
}
/**
* Sets current step .
*
* @ param integer $step Current step .
*
* @ return void
*/
public function setStep ( int $step )
{
$this -> step = $step ;
config_update_value ( 'welcome_state' , $step );
2019-11-07 14:05:42 +01:00
}
/**
* Completes current step .
*
* @ return void
*/
public function completeStep ()
{
switch ( $this -> step ) {
case W_CONFIGURE_MAIL :
config_update_value ( 'welcome_mail_configured' , true );
break ;
case W_CREATE_AGENT :
config_update_value ( 'welcome_id_agent' , true );
break ;
case W_CREATE_MODULE :
config_update_value ( 'welcome_module' , true );
break ;
case W_CREATE_ALERT :
config_update_value ( 'welcome_alert' , true );
break ;
case W_CREATE_TASK :
config_update_value ( 'welcome_task' , true );
break ;
default :
// Ignore.
break ;
}
2019-10-30 16:56:44 +01:00
}
2019-11-07 14:05:42 +01:00
/**
* Check if all tasks had been completed .
*
* @ return boolean All completed or not .
*/
public function checkAllTasks ()
{
global $config ;
foreach ( $this -> tasks as $t ) {
if ( empty ( $config [ $t ]) === true ) {
return false ;
}
}
return true ;
}
2019-10-30 16:56:44 +01:00
/**
* Retrieve current welcome agent id .
*
* @ return integer Agent id ( created ) .
*/
public function getWelcomeAgent ()
{
global $config ;
2022-05-13 12:54:58 +02:00
return ( isset ( $config [ 'welcome_id_agent' ]) === true ) ? $config [ 'welcome_id_agent' ] : '' ;
2019-10-30 16:56:44 +01:00
}
/**
* Saves current welcome agent ( latest created ) .
*
* @ param integer $id_agent Agent id .
*
* @ return void
*/
public function setWelcomeAgent ( int $id_agent )
{
config_update_value ( 'welcome_id_agent' , $id_agent );
2019-10-28 18:57:10 +01:00
}
2019-10-18 10:30:19 +02:00
/**
* Loads a welcome window form
*
* @ return string HTML code for form .
*
2019-10-30 16:56:44 +01:00
* @ return void Runs loadWelcomeWindow ( AJAX ) .
2019-10-18 10:30:19 +02:00
*/
public function loadWelcomeWindow ()
{
global $config ;
2023-05-23 16:54:40 +02:00
$flag_task = false ;
2019-10-18 10:30:19 +02:00
$form = [
'action' => '#' ,
'id' => 'welcome_form' ,
'onsubmit' => 'this.dialog("close");' ,
'class' => 'modal' ,
];
2022-10-25 16:25:34 +02:00
if ( enterprise_installed () === true ) {
$logo_url = ENTERPRISE_DIR . '/' . $logo_url ;
2019-12-19 19:58:00 +01:00
}
2019-11-07 10:42:46 +01:00
2023-05-23 16:54:40 +02:00
if ( check_acl ( $config [ 'id_user' ], 0 , 'PM' )) {
$flag_um = false ;
$flag_cm = false ;
$flag_su = false ;
$flag_lv = false ;
2023-06-02 13:32:47 +02:00
$btn_update_manager_class = ' fail' ;
$btn_configure_mail_class = ' fail' ;
$btn_servers_up_class = ' fail' ;
$btn_license_valid_class = ' fail' ;
2023-05-23 16:54:40 +02:00
$li_update_manager_class = 'row_grey' ;
$li_configure_mail_class = 'row_grey' ;
$li_servers_up_class = 'row_grey' ;
$li_license_valid_class = 'row_grey' ;
2023-06-02 13:32:47 +02:00
include_once 'include/functions_update_manager.php' ;
if ( update_manager_verify_registration ()) {
$btn_update_manager_class = '' ;
2023-05-23 16:54:40 +02:00
$li_update_manager_class = 'row_green' ;
$flag_um = true ;
}
if ( empty ( $config [ 'welcome_mail_configured' ]) === false ) {
2023-06-02 13:32:47 +02:00
$btn_configure_mail_class = '' ;
$li_configure_mail_class = 'row_green' ;
2023-05-23 16:54:40 +02:00
$flag_cm = true ;
}
include_once 'include/functions_servers.php' ;
if ( check_all_servers_up () === true ) {
2023-06-02 13:32:47 +02:00
$btn_servers_up_class = '' ;
2023-05-23 16:54:40 +02:00
$li_servers_up_class = 'row_green' ;
$flag_su = true ;
}
2023-06-02 13:32:47 +02:00
$show_license = true ;
2023-05-23 16:54:40 +02:00
if ( enterprise_installed ()) {
$license_valid = true ;
enterprise_include_once ( 'include/functions_license.php' );
$license = enterprise_hook ( 'license_get_info' );
$days_to_expiry = (( strtotime ( $license [ 'expiry_date' ]) - time ()) / ( 60 * 60 * 24 ));
if ( $license === ENTERPRISE_NOT_HOOK || $days_to_expiry <= 30 ) {
$license_valid = false ;
}
if ( $license_valid === true ) {
2023-06-02 13:32:47 +02:00
$btn_license_valid_class = '' ;
2023-05-23 16:54:40 +02:00
$li_license_valid_class = 'row_green' ;
$flag_lv = true ;
}
2023-06-02 13:32:47 +02:00
} else {
$show_license = false ;
2023-05-23 16:54:40 +02:00
}
$inputs [] = [
2019-10-18 10:30:19 +02:00
'wrapper' => 'div' ,
2023-05-23 16:54:40 +02:00
'block_id' => 'div_diagnosis' ,
'class' => 'flex-row flex-items-center w98p ' ,
2019-10-18 10:30:19 +02:00
'direct' => 1 ,
'block_content' => [
[
2023-06-02 13:32:47 +02:00
'label' => __ ( 'Post-installation status diagnostic' ),
2019-10-18 10:30:19 +02:00
'arguments' => [
'class' => 'first_lbl' ,
2023-05-23 16:54:40 +02:00
'name' => 'lbl_diagnosis' ,
'id' => 'lbl_diagnosis' ,
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
],
];
if ( $flag_um === false || $flag_cm === false || $flag_su === false || $flag_lv === false ) {
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_update_manager' ,
'class' => 'hole flex-row flex-items-center w98p ' . $li_update_manager_class ,
'direct' => 1 ,
'block_content' => [
[
2023-06-02 13:32:47 +02:00
'label' => __ ( 'Warp Update registration' ),
2023-05-23 16:54:40 +02:00
'arguments' => [
'class' => 'first_lbl' ,
'name' => 'lbl_update_manager' ,
'id' => 'lbl_update_manager' ,
],
],
[
'arguments' => [
'label' => '' ,
'type' => 'button' ,
'attributes' => [
'class' => ( empty ( $btn_update_manager_class ) === false ) ? $btn_update_manager_class : 'invisible_important' ,
'mode' => 'onlyIcon' ,
],
'name' => 'btn_update_manager_conf' ,
'id' => 'btn_update_manager_conf' ,
2022-10-25 16:25:34 +02:00
],
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
];
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_configure_mail' ,
'class' => 'hole flex-row flex-items-center w98p ' . $li_configure_mail_class ,
'direct' => 1 ,
'block_content' => [
[
2023-06-02 13:32:47 +02:00
'label' => __ ( 'Default mail to send alerts' ),
2023-05-23 16:54:40 +02:00
'arguments' => [
'class' => 'first_lbl' ,
'name' => 'lbl_create_agent' ,
'id' => 'lbl_create_agent' ,
],
],
[
'arguments' => [
'label' => '' ,
'type' => 'button' ,
'attributes' => [
'class' => ( empty ( $btn_configure_mail_class ) === false ) ? $btn_configure_mail_class : 'invisible_important' ,
'mode' => 'onlyIcon' ,
],
'name' => 'btn_email_conf' ,
'id' => 'btn_email_conf' ,
],
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
];
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_servers_up' ,
'class' => 'hole flex-row flex-items-center w98p ' . $li_servers_up_class ,
'direct' => 1 ,
'block_content' => [
[
2023-06-02 13:32:47 +02:00
'label' => __ ( 'All servers running' ),
2023-05-23 16:54:40 +02:00
'arguments' => [
'class' => 'first_lbl' ,
'name' => 'lbl_servers_up' ,
'id' => 'lbl_servers_up' ,
],
],
[
'arguments' => [
'label' => '' ,
'type' => 'button' ,
'attributes' => [
'class' => ( empty ( $btn_servers_up_class ) === false ) ? $btn_servers_up_class : 'invisible_important' ,
'mode' => 'onlyIcon' ,
],
'name' => 'btn_servers_up_conf' ,
'id' => 'btn_servers_up_conf' ,
2022-10-25 16:25:34 +02:00
],
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
];
2023-06-02 13:32:47 +02:00
if ( $show_license ) {
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_license_valid' ,
'class' => 'hole flex-row flex-items-center w98p ' . $li_license_valid_class ,
'direct' => 1 ,
'block_content' => [
[
'label' => __ ( 'Enterprise licence valid' ),
'arguments' => [
'class' => 'first_lbl' ,
'name' => 'lbl_license_valid' ,
'id' => 'lbl_license_valid' ,
],
2023-05-23 16:54:40 +02:00
],
2023-06-02 13:32:47 +02:00
[
'arguments' => [
'label' => '' ,
'type' => 'button' ,
'attributes' => [
'class' => ( empty ( $btn_license_valid_class ) === false ) ? $btn_license_valid_class : 'invisible_important' ,
'mode' => 'onlyIcon' ,
],
'name' => 'btn_license_valid_conf' ,
'id' => 'btn_license_valid_conf' ,
2023-05-23 16:54:40 +02:00
],
],
2019-10-18 10:30:19 +02:00
],
2023-06-02 13:32:47 +02:00
];
}
2023-05-23 16:54:40 +02:00
} else {
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_all_correct' ,
'class' => 'hole flex-row flex-items-center w98p' ,
'direct' => 1 ,
'block_content' => [
[
2023-06-02 13:32:47 +02:00
'label' => __ ( 'It seems that your Pandora FMS is working correctly and registered with ID:<br> #' . $config [ 'pandora_uid' ] . '.<br>For more information use the self-diagnosis tool.' ),
2023-05-23 16:54:40 +02:00
'arguments' => [
'class' => 'first_lbl w98p' ,
'name' => 'lbl_all_correct' ,
'id' => 'lbl_all_correct' ,
2022-10-25 16:25:34 +02:00
],
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
];
}
if ( $flag_um === false || $flag_cm === false || $flag_su === false || $flag_lv === false ) {
$flag_task = true ;
}
}
// Task to do.
$inputs [] = [
'wrapper' => 'div' ,
'block_id' => 'div_task_todo' ,
'class' => 'flex-row flex-items-center w98p' ,
'direct' => 1 ,
'block_content' => [
[
'label' => __ ( 'Task to perform' ),
'arguments' => [
'class' => 'first_lbl' ,
'name' => 'lbl_task_todo' ,
'id' => 'lbl_task_todo' ,
],
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
];
2023-06-02 13:32:47 +02:00
$fields [ 'wizard_agent' ] = __ ( 'Agent installation wizard' );
$fields [ 'check_web' ] = __ ( 'Create WEB monitoring' );
$fields [ 'check_connectivity' ] = __ ( 'Create network monitoring' );
$fields [ 'check_net' ] = __ ( 'Discover my network' );
$fields [ 'check_mail_alert' ] = __ ( 'Create email alert' );
2023-05-23 16:54:40 +02:00
$inputs [] = [
'wrapper' => 'div' ,
2023-06-02 13:32:47 +02:00
'block_id' => 'div_wizard_agent' ,
'class' => 'flex space-between w98p' ,
2023-05-23 16:54:40 +02:00
'direct' => 1 ,
'block_content' => [
[
'arguments' => [
2023-06-02 13:32:47 +02:00
'type' => 'select' ,
'fields' => $fields ,
'name' => 'task_to_perform' ,
'selected' => '' ,
'return' => true ,
'nothing' => \__ ( 'Please select one' ),
'nothing_value' => '' ,
2019-10-18 10:30:19 +02:00
],
],
2023-05-23 16:54:40 +02:00
[
'arguments' => [
2023-06-02 13:32:47 +02:00
'label' => __ ( 'Let`s do it!' ),
2023-05-23 16:54:40 +02:00
'type' => 'button' ,
'attributes' => [
2023-06-02 13:32:47 +02:00
'class' => 'secondary' ,
'icon' => 'next' ,
2023-05-23 16:54:40 +02:00
],
2023-06-02 13:32:47 +02:00
'name' => 'go_wizard' ,
'id' => 'go_wizard' ,
2023-05-23 16:54:40 +02:00
],
],
],
];
2019-10-18 10:30:19 +02:00
$output = $this -> printForm (
[
'form' => $form ,
'inputs' => $inputs ,
],
true
);
2023-05-23 16:54:40 +02:00
$output .= $this -> loadJS ( $flag_task );
2019-10-18 10:30:19 +02:00
echo $output ;
2023-06-02 13:32:47 +02:00
?>
< div id = " dialog_goliat " class = " invisible " >
< ? php
echo html_print_input_hidden ( 'check_web' , 1 );
echo html_print_label_input_block (
__ ( 'URL' ),
html_print_input_text (
'url_goliat' ,
'' ,
'' ,
false ,
255 ,
true ,
false ,
true ,
'' ,
'w100p'
)
);
echo html_print_label_input_block (
__ ( 'Text to search' ),
html_print_input_text (
'text_to_search' ,
'' ,
'' ,
false ,
255 ,
true ,
false ,
false ,
'' ,
'w100p'
)
);
echo html_print_label_input_block (
__ ( 'Modules name' ),
html_print_input_text (
'module_name' ,
'' ,
'' ,
false ,
255 ,
true ,
false ,
false ,
'' ,
'w100p'
)
);
echo html_print_label_input_block (
__ ( 'Module group' ),
html_print_select_from_sql (
'SELECT * FROM tgrupo ORDER BY nombre' ,
'id_group' ,
'' ,
'' ,
'' ,
false ,
true ,
false ,
true ,
false ,
'width: 100%;'
)
);
echo html_print_submit_button ( __ ( 'Create' ), 'create_goliat' , false , [ 'icon' => 'next' , 'style' => 'margin-top:15px; float:right;' ]);
?>
</ div >
< div id = " dialog_connectivity " class = " invisible " >
< ? php
echo html_print_input_hidden ( 'check_connectivity' , 1 );
echo html_print_label_input_block (
__ ( 'Ip target' ),
html_print_input_text (
'ip_target' ,
'' ,
'' ,
false ,
15 ,
true ,
false ,
true ,
'' ,
'w100p'
)
);
echo html_print_label_input_block (
__ ( 'Agent name' ),
html_print_input_text (
'agent_name' ,
'' ,
'' ,
false ,
255 ,
true ,
false ,
false ,
'' ,
'w100p'
)
);
echo html_print_label_input_block (
__ ( 'Module group' ),
html_print_select_from_sql (
'SELECT * FROM tgrupo ORDER BY nombre' ,
'id_group' ,
'' ,
'' ,
'' ,
false ,
true ,
false ,
true ,
false ,
'width: 100%;'
)
);
2019-10-18 10:30:19 +02:00
2023-06-02 13:32:47 +02:00
echo html_print_submit_button ( __ ( 'Create' ), 'create_conectivity' , false , [ 'icon' => 'next' , 'style' => 'margin-top:15px; float:right;' ]);
?>
</ div >
< div id = " dialog_basic_net " class = " invisible " >
< ? php
echo html_print_input_hidden ( 'create_net_scan' , 1 );
echo html_print_label_input_block (
__ ( 'Ip target' ),
html_print_input_text (
'ip_target' ,
'192.168.10.0/24' ,
'192.168.10.0/24' ,
false ,
18 ,
true ,
false ,
true ,
'' ,
'w100p' ,
'' ,
'off' ,
false ,
'' ,
'' ,
'' ,
false ,
'' ,
'192.168.10.0/24'
)
);
echo html_print_submit_button ( __ ( 'Create' ), 'basic_net' , false , [ 'icon' => 'next' , 'style' => 'margin-top:15px; float:right;' ]);
?>
</ div >
< div id = " dialog_alert_mail " class = " invisible " >
< ? php
echo html_print_input_hidden ( 'create_mail_alert' , 1 );
$params = [];
$params [ 'return' ] = true ;
$params [ 'show_helptip' ] = true ;
$params [ 'input_name' ] = 'id_agent' ;
$params [ 'selectbox_id' ] = 'id_agent_module' ;
$params [ 'javascript_is_function_select' ] = true ;
$params [ 'metaconsole_enabled' ] = false ;
$params [ 'use_hidden_input_idagent' ] = true ;
$params [ 'print_hidden_input_idagent' ] = true ;
echo html_print_label_input_block (
__ ( 'Agent' ),
ui_print_agent_autocomplete_input ( $params )
);
echo html_print_label_input_block (
__ ( 'Module' ),
html_print_select (
$modules ,
'id_agent_module' ,
'' ,
true ,
'' ,
'' ,
true ,
false ,
true ,
'w100p' ,
false ,
'width: 100%;' ,
false ,
false ,
false ,
'' ,
false ,
false ,
true
) . '<span id="latest_value" class="invisible">' . __ ( 'Latest value' ) . ' :
< span id = " value " >& nbsp ; </ span ></ span >
< span id = " module_loading " class = " invisible " > '.html_print_image(' images / spinner . gif ', true).' </ span > '
);
$condition = alerts_get_alert_templates ([ 'id IN (1,3)' ], [ 'id' , 'name' ]);
echo html_print_label_input_block (
__ ( 'Contition' ),
html_print_select (
index_array ( $condition , 'id' , 'name' ),
'id_condition' ,
'' ,
'' ,
__ ( 'Select' ),
'' ,
true ,
false ,
true ,
'w100p' ,
false ,
'width: 100%;' ,
false ,
false ,
false ,
'' ,
false ,
false ,
true
)
);
echo html_print_submit_button ( __ ( 'Create' ), 'alert_mail' , false , [ 'icon' => 'next' , 'style' => 'margin-top:15px; float:right;' ]);
?>
</ div >
< ? php
2019-10-18 10:30:19 +02:00
// Ajax methods does not continue.
exit ();
}
2019-10-24 16:56:13 +02:00
/**
2019-10-30 16:56:44 +01:00
* This function acts as a constructor . Receive the condition to check with
* the global config ( welcome_state ) if continues
*
* @ param boolean $must_run Must be run or not ( check register . php ) .
*
* @ return boolean True if initialized or false if must not run .
2019-10-24 16:56:13 +02:00
*/
2019-10-30 16:56:44 +01:00
public function initialize ( $must_run )
2019-10-21 18:36:02 +02:00
{
2019-10-24 16:56:13 +02:00
global $config ;
2019-10-30 18:33:33 +01:00
if ( isset ( $config [ 'welcome_state' ]) === false ) {
2019-11-07 14:05:42 +01:00
$this -> completeStep ();
2019-10-30 18:33:33 +01:00
$this -> setStep ( W_CONFIGURE_MAIL );
}
// Check current page.
$sec2 = get_parameter ( 'sec2' , '' );
2019-11-07 10:42:46 +01:00
// Search also does not fulfill sec2.
if ( empty ( $sec2 ) === true ) {
$sec2 = get_parameter ( 'keywords' , '' );
}
2019-10-30 16:56:44 +01:00
if ( $must_run === false
2019-11-07 14:05:42 +01:00
|| (( int ) $config [ 'welcome_state' ]) === WELCOME_FINISHED
2019-10-30 16:56:44 +01:00
) {
2019-10-30 18:33:33 +01:00
// Do not show if finished.
2019-10-30 16:56:44 +01:00
return false ;
2019-10-24 16:56:13 +02:00
}
2019-10-30 16:56:44 +01:00
$this -> step = $this -> getStep ();
$this -> agent = $this -> getWelcomeAgent ();
2019-10-21 18:36:02 +02:00
2019-10-30 16:56:44 +01:00
/*
* Configure mail . Control current flow .
*
* On empty sec2 : show current step .
* On setup page : do not show .
* After mail configuration : enable agent step .
*/
2019-11-07 14:05:42 +01:00
if ( $this -> step === W_CONFIGURE_MAIL ) {
2019-10-30 16:56:44 +01:00
if ( $sec2 === 'godmode/setup/setup'
&& get_parameter ( 'section' , '' ) == 'general'
&& get_parameter ( 'update_config' , false ) !== false
) {
// Mail configuration have been processed.
2019-11-07 14:05:42 +01:00
$this -> step = W_CONFIGURE_MAIL ;
$this -> completeStep ();
2019-10-30 16:56:44 +01:00
$this -> setStep ( W_CREATE_AGENT );
} else if ( $sec2 === 'godmode/setup/setup'
&& get_parameter ( 'section' , '' ) === 'general'
) {
// Mail configuration is being processed.
return false ;
2019-10-30 18:33:33 +01:00
} else if ( empty ( $sec2 ) === true ) {
2019-11-07 14:05:42 +01:00
// Show main page.
2019-10-30 16:56:44 +01:00
return true ;
2019-10-24 16:56:13 +02:00
}
2019-10-30 16:56:44 +01:00
}
2019-10-21 18:36:02 +02:00
2019-10-30 16:56:44 +01:00
/*
* Create agent . Control current flow .
*
2019-11-07 10:42:46 +01:00
* Welcome wizard is shown if you create your first agent .
*
2019-10-30 16:56:44 +01:00
*/
2019-11-07 10:42:46 +01:00
if ( empty ( $config [ 'welcome_id_agent' ]) === true ) {
2019-10-30 16:56:44 +01:00
// Create agent is pending.
if ( $sec2 === 'godmode/agentes/configurar_agente'
&& get_parameter ( 'create_agent' , false ) !== false
) {
// Agent have been created. Store.
2019-11-07 14:05:42 +01:00
// Here complete step is not needed because is already done
// by setWelcomeAgent.
2019-10-30 16:56:44 +01:00
$this -> setWelcomeAgent (
2019-11-07 14:05:42 +01:00
// Non yet processed. Get next available ID.
db_get_value_sql (
sprintf (
' SELECT AUTO_INCREMENT
FROM information_schema . TABLES
WHERE TABLE_SCHEMA = " %s "
AND TABLE_NAME = " %s " ' ,
$config [ 'dbname' ],
'tagente'
)
2019-10-30 16:56:44 +01:00
)
);
$this -> setStep ( W_CREATE_MODULE );
return true ;
} else if ( $sec2 === 'godmode/agentes/configurar_agente' ) {
// Agent is being created.
return false ;
2019-10-30 18:33:33 +01:00
} else if ( empty ( $sec2 ) === true ) {
// If at main page, show welcome.
2019-10-30 16:56:44 +01:00
return true ;
2019-10-24 16:56:13 +02:00
}
2019-11-07 14:05:42 +01:00
} else if ( $this -> step === W_CREATE_AGENT ) {
$this -> step = W_CREATE_MODULE ;
2019-10-30 16:56:44 +01:00
}
2019-10-21 18:36:02 +02:00
2019-10-30 16:56:44 +01:00
/*
* Create module . Control current flow .
*
* On empty sec2 : show current step .
* On module creation page : do not show .
* After module creation : enable alert step .
*/
if ( $this -> step === W_CREATE_MODULE ) {
// Create module is pending.
if ( $sec2 === 'godmode/agentes/configurar_agente'
&& get_parameter ( 'tab' , '' ) === 'module'
&& get_parameter ( 'create_module' , false ) !== false
) {
// Module have been created.
2019-11-07 14:05:42 +01:00
$this -> completeStep ();
2019-10-30 16:56:44 +01:00
$this -> setStep ( W_CREATE_ALERT );
return true ;
} else if ( $sec2 === 'godmode/agentes/configurar_agente'
&& get_parameter ( 'tab' , '' ) === 'module'
) {
// Module is being created.
return false ;
2019-10-30 18:33:33 +01:00
} else if ( empty ( $sec2 ) === true ) {
// If at main page, show welcome.
2019-10-30 16:56:44 +01:00
return true ;
2019-10-24 16:56:13 +02:00
}
2019-10-30 16:56:44 +01:00
}
2019-10-21 18:36:02 +02:00
2019-10-30 16:56:44 +01:00
/*
* Create alert . Control current flow .
*
* On empty sec2 : show current step .
* On alert creation page : do not show .
* After alert creation : enable discovery task step .
*/
if ( $this -> step === W_CREATE_ALERT ) {
// Create alert is pending.
if ( $sec2 === 'godmode/agentes/configurar_agente'
&& get_parameter ( 'tab' , '' ) === 'alert'
&& get_parameter ( 'create_alert' , false ) !== false
) {
// Alert have been created.
2019-11-07 14:05:42 +01:00
$this -> completeStep ();
2019-10-30 16:56:44 +01:00
$this -> setStep ( W_CREATE_TASK );
return true ;
} else if ( $sec2 === 'godmode/agentes/configurar_agente'
&& get_parameter ( 'tab' , '' ) === 'alert'
) {
// Alert is being created.
return false ;
2019-10-30 18:33:33 +01:00
} else if ( empty ( $sec2 ) === true ) {
// If at main page, show welcome.
2019-10-30 16:56:44 +01:00
return true ;
2019-10-24 16:56:13 +02:00
}
2019-10-30 16:56:44 +01:00
}
2019-10-24 16:56:13 +02:00
2019-10-30 16:56:44 +01:00
/*
* Create discovery task . Control current flow .
*
* On empty sec2 : show current step .
* On discovery task creation page : do not show .
* After discovery task creation : finish .
*/
2019-11-07 14:05:42 +01:00
// Create Discovery task is pending.
// Host&Devices finishses on page 2.
if ( $sec2 === 'godmode/servers/discovery'
2022-10-25 16:25:34 +02:00
&& ( int ) get_parameter ( 'page' ) === 2
2019-11-07 14:05:42 +01:00
) {
// Discovery task have been created.
$this -> step = W_CREATE_TASK ;
$this -> completeStep ();
2019-10-30 16:56:44 +01:00
2019-11-07 14:05:42 +01:00
// Check if all other tasks had been completed.
if ( $this -> checkAllTasks () === true ) {
2019-10-30 16:56:44 +01:00
// Finished! do not show.
2019-11-07 14:05:42 +01:00
$this -> setStep ( WELCOME_FINISHED );
2019-10-24 16:56:13 +02:00
return false ;
}
2019-11-07 14:05:42 +01:00
return true ;
} else if ( $sec2 == 'godmode/servers/discovery' ) {
// Discovery task is being created.
return false ;
}
// Check if all other tasks had been completed.
if ( $this -> checkAllTasks () === true ) {
// Finished! do not show.
$this -> setStep ( WELCOME_FINISHED );
return false ;
2019-11-11 13:46:42 +01:00
} else if ( empty ( $sec2 ) === true ) {
// Pending tasks.
return true ;
2019-10-22 16:42:13 +02:00
}
2019-10-30 16:56:44 +01:00
if ( $this -> step === WELCOME_FINISHED ) {
// Welcome tutorial finished.
return false ;
}
2019-10-24 16:56:13 +02:00
// Return a reference to the new object.
2019-10-30 16:56:44 +01:00
return false ;
2019-10-21 18:36:02 +02:00
}
2019-10-24 16:56:13 +02:00
/**
2019-10-30 16:56:44 +01:00
* Load JS content .
* function that enables the functions to the buttons when its action is
* completed .
* Assign the url of each button .
*
* @ return string HTML code for javascript functionality .
2019-10-24 16:56:13 +02:00
*/
2023-05-23 16:54:40 +02:00
public function loadJS ( $flag_task = false )
2019-10-18 10:30:19 +02:00
{
ob_start ();
?>
< script type = " text/javascript " >
2023-05-23 16:54:40 +02:00
$ ( '#div_all_correct' ) . children () . attr ( 'class' , 'w100p' ) . attr ( 'style' , 'overflow-wrap: break-word;' );
< ? php if ( $flag_task === true ) { ?>
document . getElementById ( " button-btn_update_manager_conf " ) . setAttribute (
'onclick' ,
'configureUpdateManager()'
);
document . getElementById ( " button-btn_email_conf " ) . setAttribute (
'onclick' ,
'configureEmail()'
);
document . getElementById ( " button-btn_servers_up_conf " ) . setAttribute (
'onclick' ,
'serversUp()'
);
document . getElementById ( " button-btn_license_valid_conf " ) . setAttribute (
'onclick' ,
'messageLicense()'
);
< ? php } ?>
// Task to do buttons.
2023-06-02 13:32:47 +02:00
$ ( '#button-go_wizard' ) . click ( function (){
if ( $ ( '#task_to_perform :selected' ) . val () === '' ) {
alert ( " <?php echo __('You must chose an option'); ?> " );
} else {
switch ( $ ( '#task_to_perform :selected' ) . val ()) {
case 'wizard_agent' :
deployAgent ();
break ;
case 'check_mail_alert' :
openCreateAlertMailDialog ();
break ;
case 'check_connectivity' :
openCreateConnectivityDialog ();
break ;
case 'check_web' :
openCreateModulesDialog ();
break ;
case 'check_net' :
openCreateBasicNetDialog ();
break ;
};
}
});
2023-05-23 16:54:40 +02:00
2023-06-02 13:32:47 +02:00
// Task to do buttons.
$ ( '#button-go_wizard' ) . click ( function (){
if ( $ ( '#task_to_perform :selected' ) . val () === '' ) {
alert ( " <?php echo __('You must chose an option'); ?> " );
} else {
switch ( $ ( '#task_to_perform :selected' ) . val ()) {
case 'wizard_agent' :
deployAgent ();
break ;
case 'check_mail_alert' :
openCreateAlertMailDialog ();
break ;
case 'check_connectivity' :
openCreateConnectivityDialog ();
break ;
case 'check_web' :
openCreateModulesDialog ();
break ;
case 'check_net' :
openCreateBasicNetDialog ();
break ;
};
}
});
2023-05-23 16:54:40 +02:00
2023-06-02 13:32:47 +02:00
// Task to do buttons.
$ ( '#button-go_wizard' ) . click ( function (){
if ( $ ( '#task_to_perform :selected' ) . val () === '' ) {
alert ( " <?php echo __('You must chose an option'); ?> " );
} else {
switch ( $ ( '#task_to_perform :selected' ) . val ()) {
case 'wizard_agent' :
deployAgent ();
break ;
case 'check_mail_alert' :
openCreateAlertMailDialog ();
break ;
case 'check_connectivity' :
openCreateConnectivityDialog ();
break ;
case 'check_web' :
openCreateModulesDialog ();
break ;
case 'check_net' :
openCreateBasicNetDialog ();
break ;
};
}
});
2023-05-23 16:54:40 +02:00
2023-06-02 13:32:47 +02:00
// Task to do buttons.
$ ( '#button-go_wizard' ) . click ( function (){
if ( $ ( '#task_to_perform :selected' ) . val () === '' ) {
alert ( " <?php echo __('You must chose an option'); ?> " );
} else {
switch ( $ ( '#task_to_perform :selected' ) . val ()) {
case 'wizard_agent' :
deployAgent ();
break ;
case 'check_mail_alert' :
openCreateAlertMailDialog ();
break ;
case 'check_connectivity' :
openCreateConnectivityDialog ();
break ;
case 'check_web' :
openCreateModulesDialog ();
break ;
case 'check_net' :
openCreateBasicNetDialog ();
break ;
};
}
});
2023-05-23 16:54:40 +02:00
function configureUpdateManager () {
window . location = '<?php echo ui_get_full_url(' index . php ? sec = messages & sec2 = godmode / update_manager / update_manager & tab = online '); ?>' ;
2019-10-30 16:56:44 +01:00
}
2019-10-21 18:36:02 +02:00
2023-05-23 16:54:40 +02:00
function configureEmail () {
window . location = '<?php echo ui_get_full_url(' index . php ? sec = general & sec2 = godmode / setup / setup & section = general #table3'); ?>';
}
2019-10-21 18:36:02 +02:00
2023-05-23 16:54:40 +02:00
function serversUp () {
window . location = '<?php echo ui_get_full_url(' index . php ? sec = gservers & sec2 = godmode / servers / modificar_server & refr = 60 '); ?>' ;
}
2019-10-18 10:30:19 +02:00
2023-05-23 16:54:40 +02:00
function messageLicense () {
window . location = '<?php echo ui_get_full_url(' index . php ? sec = message_list & sec2 = operation / messages / message_list '); ?>' ;
}
2019-10-18 10:30:19 +02:00
2023-06-02 13:32:47 +02:00
// Task to do actions.
2023-05-23 16:54:40 +02:00
function deployAgent () {
window . location = '<?php echo ui_get_full_url(' index . php ? sec = gagente & sec2 = godmode / agentes / modificar_agente & show_deploy_agent = 1 '); ?>' ;
}
2019-10-18 10:30:19 +02:00
2023-05-23 16:54:40 +02:00
function openCreateModulesDialog () {
2023-06-02 13:32:47 +02:00
$ ( '#dialog_goliat' ) . dialog ({
title : '<?php echo __(' Create WEB monitoring '); ?>' ,
resizable : true ,
draggable : true ,
modal : true ,
close : false ,
height : 375 ,
width : 480 ,
overlay : {
opacity : 0.5 ,
background : " black "
}
})
. show ();
2023-05-23 16:54:40 +02:00
}
2019-10-18 10:30:19 +02:00
2023-05-23 16:54:40 +02:00
function openCreateConnectivityDialog () {
2023-06-02 13:32:47 +02:00
$ ( '#dialog_connectivity' ) . dialog ({
title : '<?php echo __(' Create network monitoring '); ?>' ,
resizable : true ,
draggable : true ,
modal : true ,
close : false ,
height : 350 ,
width : 480 ,
overlay : {
opacity : 0.5 ,
background : " black "
}
})
. show ();
2023-05-23 16:54:40 +02:00
}
2019-10-18 10:30:19 +02:00
2023-05-23 16:54:40 +02:00
function openCreateBasicNetDialog () {
2023-06-02 13:32:47 +02:00
$ ( '#dialog_basic_net' ) . dialog ({
title : '<?php echo __(' Discover my network '); ?>' ,
resizable : true ,
draggable : true ,
modal : true ,
close : false ,
height : 200 ,
width : 480 ,
overlay : {
opacity : 0.5 ,
background : " black "
}
})
. show ();
2023-05-23 16:54:40 +02:00
}
2019-10-18 10:30:19 +02:00
2023-05-23 16:54:40 +02:00
function openCreateAlertMailDialog () {
2023-06-02 13:32:47 +02:00
$ ( '#dialog_alert_mail' ) . dialog ({
title : '<?php echo __(' Create email alert '); ?>' ,
resizable : true ,
draggable : true ,
modal : true ,
close : false ,
height : 350 ,
width : 480 ,
overlay : {
opacity : 0.5 ,
background : " black "
}
})
. show ();
2023-06-05 13:28:37 +02:00
$ ( '#text-id_agent' ) . autocomplete ({
appendTo : '#dialog_alert_mail'
});
2023-05-23 16:54:40 +02:00
}
2023-06-02 13:32:47 +02:00
$ ( '#button-create_goliat' ) . click ( function (){
$ . ajax ({
async : false ,
type : " POST " ,
url : " include/ajax/task_to_perform.php " ,
data : {
check_web : 1 ,
id_group : $ ( '#id_group :selected' ) . val (),
module_name : $ ( '#text-module_name' ) . val (),
text_to_search : $ ( '#text-text_to_search' ) . val (),
url_goliat : $ ( '#text-url_goliat' ) . val (),
},
success : function ( data ) {
if ( data !== 0 ) {
data = data . replace ( / ( \r\n | \n | \r ) / gm , " " );
console . log ( data );
$ ( 'body' ) . append ( data );
// Close dialog
$ ( '.ui-dialog-titlebar-close' ) . trigger ( 'click' );
return false ;
}
}
});
});
$ ( '#button-create_conectivity' ) . click ( function (){
$ . ajax ({
async : false ,
type : " POST " ,
url : " include/ajax/task_to_perform.php " ,
data : {
check_connectivity : 1 ,
id_group : $ ( '#id_group :selected' ) . val (),
ip_target : $ ( '#text-ip_target' ) . val (),
agent_name : $ ( '#text-agent_name' ) . val (),
},
success : function ( data ) {
if ( data !== 0 ) {
data = data . replace ( / ( \r\n | \n | \r ) / gm , " " );
console . log ( data );
$ ( 'body' ) . append ( data );
// Close dialog
$ ( '.ui-dialog-titlebar-close' ) . trigger ( 'click' );
return false ;
}
}
});
});
$ ( '#button-basic_net' ) . click ( function (){
$ . ajax ({
async : false ,
type : " POST " ,
url : " include/ajax/task_to_perform.php " ,
data : {
create_net_scan : 1 ,
ip_target : $ ( '#text-ip_target' ) . val (),
},
success : function ( data ) {
if ( data !== 0 ) {
data = data . replace ( / ( \r\n | \n | \r ) / gm , " " );
console . log ( data );
$ ( 'body' ) . append ( data );
// Close dialog
$ ( '.ui-dialog-titlebar-close' ) . trigger ( 'click' );
return false ;
}
}
});
});
$ ( '#button-alert_mail' ) . click ( function (){
$ . ajax ({
async : false ,
type : " POST " ,
url : " include/ajax/task_to_perform.php " ,
data : {
create_mail_alert : 1 ,
2023-06-05 13:28:37 +02:00
id_condition : $ ( '#id_condition' ) . val (),
id_agent_module : $ ( '#id_agent_module' ) . val (),
2023-06-02 13:32:47 +02:00
},
success : function ( data ) {
if ( data !== 0 ) {
data = data . replace ( / ( \r\n | \n | \r ) / gm , " " );
console . log ( data );
$ ( 'body' ) . append ( data );
// Close dialog
$ ( '.ui-dialog-titlebar-close' ) . trigger ( 'click' );
return false ;
}
}
});
});
2022-10-25 16:25:34 +02:00
</ script >
2019-10-18 10:30:19 +02:00
< ? php
return ob_get_clean ();
}
}