378 lines
11 KiB
PHP
378 lines
11 KiB
PHP
<?php
|
|
/**
|
|
* Update Manager registration functions.
|
|
*
|
|
* @category Library
|
|
* @package Pandora FMS
|
|
* @subpackage Register
|
|
* @version 1.0.0
|
|
* @license See below
|
|
*
|
|
* ______ ___ _______ _______ ________
|
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
|
*
|
|
* ============================================================================
|
|
* Copyright (c) 2005-2023 Pandora FMS
|
|
* Please see https://pandorafms.com/community/ 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.
|
|
|
|
|
|
/**
|
|
* Parses responses from configuration wizard.
|
|
*
|
|
* @return void
|
|
*/
|
|
function config_wiz_process()
|
|
{
|
|
global $config;
|
|
$email = get_parameter('email', false);
|
|
$timezone = get_parameter('timezone', false);
|
|
$language = get_parameter('language', false);
|
|
|
|
if ($email !== false) {
|
|
config_update_value('language', $language);
|
|
}
|
|
|
|
if ($timezone !== false) {
|
|
config_update_value('timezone', $timezone);
|
|
}
|
|
|
|
if ($email !== false) {
|
|
db_process_sql_update(
|
|
'tusuario',
|
|
['email' => $email],
|
|
['id_user' => $config['id_user']]
|
|
);
|
|
}
|
|
|
|
// Update the alert action Mail to XXX/Administrator
|
|
// if it is set to default.
|
|
$mail_check = 'yourmail@domain.es';
|
|
$mail_alert = alerts_get_alert_action_field1(1);
|
|
if ($mail_check === $mail_alert && $email !== false) {
|
|
alerts_update_alert_action(
|
|
1,
|
|
[
|
|
'field1' => $email,
|
|
'field1_recovery' => $email,
|
|
]
|
|
);
|
|
}
|
|
|
|
config_update_value('initial_wizard', 1);
|
|
}
|
|
|
|
|
|
/**
|
|
* Generates base code to print main configuration modal.
|
|
*
|
|
* Asks for timezone, mail.
|
|
*
|
|
* @param boolean $return Print output or not.
|
|
* @param boolean $launch Process JS modal.
|
|
* @param string $callback Call to JS function at end.
|
|
*
|
|
* @return string HTML.
|
|
*/
|
|
function config_wiz_modal(
|
|
$return=false,
|
|
$launch=true,
|
|
$callback=false
|
|
) {
|
|
global $config;
|
|
|
|
$email = db_get_value('email', 'tusuario', 'id_user', $config['id_user']);
|
|
// Avoid to show default email.
|
|
if ($email == 'admin@example.com') {
|
|
$email = '';
|
|
}
|
|
|
|
$output = '';
|
|
|
|
// Prints first step pandora registration.
|
|
$output .= '<div id="configuration_wizard" title="'.__('%s configuration wizard', get_product_name()).'" class="invisible">';
|
|
|
|
$output .= '<div id="help_dialog">';
|
|
$output .= __('Please fill the following information in order to configure your %s instance successfully', get_product_name()).'.';
|
|
$output .= '</div>';
|
|
|
|
$output .= '<div >';
|
|
$table = new StdClass();
|
|
$table->class = 'databox filters';
|
|
$table->width = '100%';
|
|
$table->data = [];
|
|
$table->size = [];
|
|
$table->size[0] = '40%';
|
|
$table->style[0] = 'font-weight:bold';
|
|
$table->size[1] = '60%';
|
|
$table->border = '5px solid';
|
|
|
|
$table->data[0][0] = __('Language code');
|
|
$table->data[0][1] = html_print_select_from_sql(
|
|
'SELECT id_language, name FROM tlanguage',
|
|
'language',
|
|
$config['language'],
|
|
'',
|
|
'',
|
|
'',
|
|
true
|
|
);
|
|
|
|
$zone_name = [
|
|
'Africa' => __('Africa'),
|
|
'America' => __('America'),
|
|
'Antarctica' => __('Antarctica'),
|
|
'Arctic' => __('Arctic'),
|
|
'Asia' => __('Asia'),
|
|
'Atlantic' => __('Atlantic'),
|
|
'Australia' => __('Australia'),
|
|
'Europe' => __('Europe'),
|
|
'Indian' => __('Indian'),
|
|
'Pacific' => __('Pacific'),
|
|
'UTC' => __('UTC'),
|
|
];
|
|
|
|
if (isset($zone_selected) === false) {
|
|
if ($config['timezone'] != '') {
|
|
$zone_array = explode('/', $config['timezone']);
|
|
$zone_selected = $zone_array[0];
|
|
} else {
|
|
$zone_selected = 'Europe';
|
|
}
|
|
}
|
|
|
|
$timezones = timezone_identifiers_list();
|
|
foreach ($timezones as $timezone) {
|
|
if (strpos($timezone, $zone_selected) !== false) {
|
|
$timezone_country = preg_replace('/^.*\//', '', $timezone);
|
|
$timezone_n[$timezone] = $timezone_country;
|
|
}
|
|
}
|
|
|
|
$table->data[2][0] = __('Timezone setup').' '.ui_print_help_tip(
|
|
__('Must have the same time zone as the system or database to avoid mismatches of time.'),
|
|
true
|
|
);
|
|
$table->data[2][1] = html_print_select($zone_name, 'zone', $zone_selected, 'show_timezone()', '', '', true);
|
|
$table->data[2][1] .= ' '.html_print_select($timezone_n, 'timezone', $config['timezone'], '', '', '', true);
|
|
|
|
$table->data[4][0] = __('E-mail for receiving alerts');
|
|
$table->data[4][1] = html_print_input_text('email', $email, '', 50, 255, true);
|
|
|
|
$output .= html_print_table($table, true);
|
|
$output .= '</div>';
|
|
|
|
$output .= '<div class="left">';
|
|
$output .= html_print_submit_button(
|
|
__('Cancel'),
|
|
'cancel',
|
|
false,
|
|
['icon' => 'cancel'],
|
|
true
|
|
);
|
|
$output .= '</div>';
|
|
$output .= '<div class="right">';
|
|
$output .= html_print_submit_button(
|
|
__('Continue'),
|
|
'register-next',
|
|
false,
|
|
['icon' => 'next'],
|
|
true
|
|
);
|
|
$output .= '</div>';
|
|
$output .= '<div id="all-required" class="all_required">';
|
|
$output .= __('All fields required');
|
|
$output .= '</div>';
|
|
$output .= '</div>';
|
|
|
|
$output .= '</div>';
|
|
|
|
// Verification modal.
|
|
$output .= '<div id="wiz_ensure_cancel" title="'.__('Confirmation Required').'" class="invisible">';
|
|
$output .= '<div class="font_12_20">';
|
|
$output .= __('Are you sure you don\'t want to configure a base email?');
|
|
$output .= '<p>';
|
|
$output .= __('You could change this options later in "alert actions" and setting your account.');
|
|
$output .= '</p>';
|
|
$output .= '</div>';
|
|
$output .= '</div>';
|
|
|
|
ob_start();
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
function show_timezone () {
|
|
zone = $("#zone").val();
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "ajax.php",
|
|
data: "page=godmode/setup/setup&select_timezone=1&zone=" + zone,
|
|
dataType: "json",
|
|
success: function(data) {
|
|
$("#timezone").empty();
|
|
jQuery.each (data, function (id, value) {
|
|
timezone = value;
|
|
var timezone_country = timezone.replace (/^.*\//g, "");
|
|
$("select[name='timezone']")
|
|
.append(
|
|
$("<option>")
|
|
.val(timezone)
|
|
.html(timezone_country)
|
|
);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#language").click(function () {
|
|
var change_language = $("#language").val();
|
|
|
|
if (change_language === default_language_displayed) return;
|
|
jQuery.post (
|
|
"ajax.php",
|
|
{
|
|
"page": "general/register",
|
|
"change_language": change_language
|
|
},
|
|
function (data) {}
|
|
).done(function () {
|
|
location.reload();
|
|
});
|
|
});
|
|
|
|
function show_configuration_wizard() {
|
|
$("#configuration_wizard").dialog({
|
|
resizable: true,
|
|
draggable: true,
|
|
modal: true,
|
|
width: 630,
|
|
overlay: {
|
|
opacity: 0.5,
|
|
background: "black"
|
|
},
|
|
closeOnEscape: false,
|
|
open: function(event, ui) {
|
|
$(".ui-dialog-titlebar-close").hide();
|
|
if ($.ui && $.ui.dialog && $.ui.dialog.prototype._allowInteraction) {
|
|
var ui_dialog_interaction = $.ui.dialog.prototype._allowInteraction;
|
|
$.ui.dialog.prototype._allowInteraction = function(e) {
|
|
if ($(e.target).closest('.select2-dropdown').length) return true;
|
|
return ui_dialog_interaction.apply(this, arguments);
|
|
};
|
|
}
|
|
},
|
|
_allowInteraction: function (event) {
|
|
return !!$(event.target).is(".select2-input") || this._super(event);
|
|
}
|
|
});
|
|
|
|
default_language_displayed = $("#language").val();
|
|
|
|
$(".ui-widget-overlay").css("background", "#000");
|
|
$(".ui-widget-overlay").css("opacity", 0.6);
|
|
$(".ui-draggable").css("cursor", "inherit");
|
|
|
|
|
|
// CLICK EVENTS: Cancel and Registration
|
|
$("#button-cancel").click (function (e) {
|
|
e.preventDefault();
|
|
$("#wiz_ensure_cancel").dialog({
|
|
buttons: [
|
|
{
|
|
"text": "No",
|
|
"class": 'submit-cancel secondaryButton',
|
|
"click" : function() {
|
|
$(this).dialog("close");
|
|
}
|
|
},
|
|
{
|
|
"text": "Yes",
|
|
"class": 'submit-next',
|
|
"click" : function() {
|
|
jQuery.post (
|
|
"ajax.php",
|
|
{
|
|
"page": "general/register",
|
|
"cancel_wizard": 1
|
|
},
|
|
function (data) {}
|
|
);
|
|
$(this).dialog("close");
|
|
$("#configuration_wizard" ).dialog('close');
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
$("#wiz_ensure_cancel").dialog('open');
|
|
});
|
|
|
|
$("#button-register-next").click (function () {
|
|
// All fields are required.
|
|
if ($("#text-email").val() == '') {
|
|
$("#all-required").show();
|
|
} else {
|
|
var timezone = $("#timezone").val();
|
|
var language = $("#language").val();
|
|
var email_identification = $("#text-email").val();
|
|
|
|
jQuery.post (
|
|
"ajax.php",
|
|
{
|
|
"page": "general/register",
|
|
"save_required_wizard": 1,
|
|
"email": email_identification,
|
|
"language": language,
|
|
"timezone": timezone
|
|
},
|
|
function (data) {
|
|
<?php
|
|
if (isset($callback) && $callback != '') {
|
|
echo $callback;
|
|
}
|
|
?>
|
|
}
|
|
);
|
|
|
|
$("#configuration_wizard").dialog('close');
|
|
}
|
|
});
|
|
}
|
|
|
|
<?php
|
|
if ($launch === true) {
|
|
?>
|
|
$(document).ready (function () {
|
|
show_configuration_wizard();
|
|
});
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
</script>
|
|
|
|
<?php
|
|
// Add js.
|
|
$output .= ob_get_clean();
|
|
|
|
if ($return === false) {
|
|
echo $output;
|
|
}
|
|
|
|
return $output;
|
|
|
|
}
|