Merge branch 'ent-9662-second-round' of brutus.artica.es:artica/pandorafms into ent-9662-second-round
This commit is contained in:
commit
4aaddf063c
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.770-230330
|
||||
Version: 7.0NG.770-230331
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.770-230330"
|
||||
pandora_version="7.0NG.770-230331"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1023,7 +1023,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.770';
|
||||
use constant AGENT_BUILD => '230330';
|
||||
use constant AGENT_BUILD => '230331';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.770"
|
||||
PI_BUILD="230330"
|
||||
PI_BUILD="230331"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{230330}
|
||||
{230331}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.770 Build 230330")
|
||||
#define PANDORA_VERSION ("7.0NG.770 Build 230331")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.770(Build 230330))"
|
||||
VALUE "ProductVersion", "(7.0NG.770(Build 230331))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.770-230330
|
||||
Version: 7.0NG.770-230331
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.770-230330"
|
||||
pandora_version="7.0NG.770-230331"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Lateral Main Menu.
|
||||
*
|
||||
|
@ -233,13 +234,16 @@ echo '</div>';
|
|||
const id_selected = '<?php echo $menu1_selected; ?>';
|
||||
if (id_selected != '') {
|
||||
var menuType_val = localStorage.getItem("menuType");
|
||||
if (menuType_val === 'classic') {
|
||||
const closedMenuId = localStorage.getItem("closedMenuId");
|
||||
if (menuType_val === 'classic' &&
|
||||
(closedMenuId === '' || `icon_${id_selected}` !== closedMenuId)
|
||||
) {
|
||||
$(`ul#subicon_${id_selected}`).show();
|
||||
// Arrow.
|
||||
$(`#icon_${id_selected}`).children().first().children().last().removeClass('arrow_menu_down');
|
||||
$(`#icon_${id_selected}`).children().first().children().last().addClass('arrow_menu_up');
|
||||
}
|
||||
|
||||
// Arrow.
|
||||
$(`#icon_${id_selected}`).children().first().children().last().removeClass('arrow_menu_down');
|
||||
$(`#icon_${id_selected}`).children().first().children().last().addClass('arrow_menu_up');
|
||||
// Span.
|
||||
$(`#icon_${id_selected}`).children().first().children().eq(1).addClass('span_selected');
|
||||
|
||||
|
@ -272,11 +276,11 @@ echo '</div>';
|
|||
table_hover = $(this);
|
||||
handsIn = 1;
|
||||
openTime = new Date().getTime();
|
||||
$("ul#sub"+table_hover[0].id).show();
|
||||
$("ul#sub" + table_hover[0].id).show();
|
||||
get_menu_items(table_hover);
|
||||
if (typeof(table_noHover) != 'undefined') {
|
||||
if ("ul#sub"+table_hover[0].id != "ul#sub"+table_noHover[0].id ) {
|
||||
$("ul#sub"+table_noHover[0].id).hide();
|
||||
if ("ul#sub" + table_hover[0].id != "ul#sub" + table_noHover[0].id) {
|
||||
$("ul#sub" + table_noHover[0].id).hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -287,9 +291,9 @@ echo '</div>';
|
|||
handsIn = 0;
|
||||
setTimeout(function() {
|
||||
opened = new Date().getTime() - openTime;
|
||||
if(opened > 2500 && handsIn == 0) {
|
||||
if (opened > 2500 && handsIn == 0) {
|
||||
openTime = 4000;
|
||||
$("ul#sub"+table_noHover[0].id).hide();
|
||||
$("ul#sub" + table_noHover[0].id).hide();
|
||||
}
|
||||
}, 2500);
|
||||
}
|
||||
|
@ -301,10 +305,10 @@ echo '</div>';
|
|||
table_hover2 = $(this);
|
||||
handsIn2 = 1;
|
||||
openTime2 = new Date().getTime();
|
||||
$("#sub"+table_hover2[0].id).show();
|
||||
if( typeof(table_noHover2) != 'undefined') {
|
||||
if ( "ul#sub"+table_hover2[0].id != "ul#sub"+table_noHover2[0].id ) {
|
||||
$("ul#sub"+table_noHover2[0].id).hide();
|
||||
$("#sub" + table_hover2[0].id).show();
|
||||
if (typeof(table_noHover2) != 'undefined') {
|
||||
if ("ul#sub" + table_hover2[0].id != "ul#sub" + table_noHover2[0].id) {
|
||||
$("ul#sub" + table_noHover2[0].id).hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -314,10 +318,10 @@ echo '</div>';
|
|||
table_noHover2 = table_hover2;
|
||||
handsIn2 = 0;
|
||||
setTimeout(function() {
|
||||
opened = new Date().getTime() - openTime2;
|
||||
if(opened >= 3000 && handsIn2 == 0) {
|
||||
opened = new Date().getTime() - openTime2;
|
||||
if (opened >= 3000 && handsIn2 == 0) {
|
||||
openTime2 = 4000;
|
||||
$("ul#sub"+table_hover2[0].id).hide();
|
||||
$("ul#sub" + table_hover2[0].id).hide();
|
||||
}
|
||||
}, 3500);
|
||||
}
|
||||
|
@ -328,12 +332,12 @@ echo '</div>';
|
|||
if (!click_display && menuType_val === 'collapsed') {
|
||||
|
||||
openTime = 4000;
|
||||
if( typeof(table_hover) != 'undefined') {
|
||||
$("ul#sub"+table_hover[0].id).hide();
|
||||
if (typeof(table_hover) != 'undefined') {
|
||||
$("ul#sub" + table_hover[0].id).hide();
|
||||
}
|
||||
|
||||
if( typeof(table_hover2) != 'undefined') {
|
||||
$("ul#sub"+table_hover2[0].id).hide();
|
||||
if (typeof(table_hover2) != 'undefined') {
|
||||
$("ul#sub" + table_hover2[0].id).hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -350,14 +354,22 @@ echo '</div>';
|
|||
}
|
||||
|
||||
var menuType_val = localStorage.getItem("menuType");
|
||||
const closedMenuId = localStorage.getItem("closedMenuId");
|
||||
|
||||
if (classes.includes('selected') === true) {
|
||||
if (classes.includes('selected') === true
|
||||
&& (closedMenuId === '' || closedMenuId !== id)
|
||||
) {
|
||||
if (menuType_val === 'collapsed' && $(`ul#sub${id}`).is(':hidden')) {
|
||||
$(`ul#sub${id}`).show();
|
||||
get_menu_items(table_hover);
|
||||
} else {
|
||||
$(`#${id}`).removeClass('selected');
|
||||
$(`ul#sub${id}`).hide();
|
||||
|
||||
const liSelected = $(`ul#sub${id}`).find('.selected');
|
||||
if (liSelected.length > 0) {
|
||||
localStorage.setItem("closedMenuId", id);
|
||||
}
|
||||
// Arrow.
|
||||
table_hover.children().first().children().last().removeClass('arrow_menu_up');
|
||||
table_hover.children().first().children().last().addClass('arrow_menu_down');
|
||||
|
@ -376,6 +388,12 @@ echo '</div>';
|
|||
} else {
|
||||
$(`ul#sub${id}`).show();
|
||||
$(`#${id}`).addClass('selected');
|
||||
|
||||
const liSelected = $(`ul#sub${id}`).find('.selected');
|
||||
if (liSelected.length > 0) {
|
||||
localStorage.setItem("closedMenuId", '');
|
||||
}
|
||||
|
||||
// Arrow.
|
||||
$(this).children().last().removeClass('arrow_menu_down');
|
||||
$(this).children().last().addClass('arrow_menu_up');
|
||||
|
@ -415,7 +433,7 @@ echo '</div>';
|
|||
}
|
||||
});
|
||||
|
||||
$('.sub_subMenu').click(function (event) {
|
||||
$('.sub_subMenu').click(function(event) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
|
@ -432,10 +450,10 @@ echo '</div>';
|
|||
var index = item.index();
|
||||
|
||||
var top_submenu = menu_calculate_top(index, item_height);
|
||||
top_submenu = top_submenu+'px';
|
||||
$('#'+id_submenu+' ul.submenu').css('position', 'fixed');
|
||||
$('#'+id_submenu+' ul.submenu').css('top', top_submenu);
|
||||
$('#'+id_submenu+' ul.submenu').css('left', '60px');
|
||||
top_submenu = top_submenu + 'px';
|
||||
$('#' + id_submenu + ' ul.submenu').css('position', 'fixed');
|
||||
$('#' + id_submenu + ' ul.submenu').css('top', top_submenu);
|
||||
$('#' + id_submenu + ' ul.submenu').css('left', '60px');
|
||||
}
|
||||
|
||||
|
||||
|
@ -456,4 +474,4 @@ echo '</div>';
|
|||
return height_logo + height_tabs + padding_menu + height_position;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</script>
|
|
@ -39,7 +39,6 @@ if (!empty($news)) {
|
|||
|
||||
// Prints news dialog template
|
||||
echo '<div id="news_dialog" class="invisible">';
|
||||
|
||||
echo '<div class="parent_new_dialog_tmplt">';
|
||||
echo '<span id="new_text"></span>';
|
||||
echo '<span id="new_author"></span>';
|
||||
|
@ -48,14 +47,22 @@ echo '<div id="news_dialog" class="invisible">';
|
|||
|
||||
echo '<div id="div_btn_new_dialog">';
|
||||
echo '<div class="float-right w20p">';
|
||||
html_print_submit_button('Ok', 'hide-news-help', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok w100px";"');
|
||||
html_print_submit_button(
|
||||
'Ok',
|
||||
'hide-news-help',
|
||||
false,
|
||||
[
|
||||
'mode' => 'ui-widget ok mini',
|
||||
'icon' => 'wand',
|
||||
]
|
||||
);
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
ui_require_javascript_file('encode_decode_base64');
|
||||
?>
|
||||
ui_require_javascript_file('encode_decode_base64');
|
||||
?>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
/* <![CDATA[ */
|
||||
|
@ -82,22 +89,22 @@ $(document).ready (function () {
|
|||
width: 630,
|
||||
title: news[inew].subject,
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
}
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
}
|
||||
});
|
||||
|
||||
$('.ui-dialog-titlebar-close').hide();
|
||||
}
|
||||
}
|
||||
|
||||
$("#submit-hide-news-help").click (function () {
|
||||
$("#button-hide-news-help").click (function () {
|
||||
$("#news_dialog" ).dialog('close');
|
||||
inew++;
|
||||
show_new ();
|
||||
show_new();
|
||||
});
|
||||
|
||||
show_new ();
|
||||
show_new();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -289,7 +289,7 @@ if ((isset($_GET['form_add'])) || (isset($_GET['form_edit']))) {
|
|||
'text',
|
||||
25,
|
||||
100,
|
||||
$text,
|
||||
io_safe_output($text),
|
||||
'',
|
||||
true,
|
||||
'w100p'
|
||||
|
@ -442,9 +442,19 @@ ui_require_javascript_file('pandora');
|
|||
dateFormat: "<?php echo DATE_FORMAT_JS; ?>",
|
||||
changeMonth: true,
|
||||
changeYear: true,
|
||||
showAnim: "slideDown"});
|
||||
showAnim: "slideDown"}
|
||||
);
|
||||
|
||||
defineTinyMCE({"elements": "textarea_text",});
|
||||
var added_config = {
|
||||
"elements":"textarea_text",
|
||||
"plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
|
||||
"theme_advanced_buttons1": "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
|
||||
"theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
|
||||
"valid_children": "+body[style]",
|
||||
"width": "90%",
|
||||
}
|
||||
|
||||
defineTinyMCE(added_config);
|
||||
|
||||
$("#checkbox-expire").click(function() {
|
||||
check_expire();
|
||||
|
|
|
@ -704,6 +704,17 @@ $table->data[$i][] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
$table->data[$i][] = html_print_label_input_block(
|
||||
__('Check conexion interval'),
|
||||
html_print_input_number(
|
||||
[
|
||||
'name' => 'check_conexion_interval',
|
||||
'min' => 90,
|
||||
'value' => $config['check_conexion_interval'],
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
echo '<form class="max_floating_element_size" id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
||||
|
||||
echo '<fieldset class="margin-bottom-10">';
|
||||
|
|
|
@ -46,12 +46,8 @@ $table->data[0][] = html_print_label_input_block(
|
|||
html_print_input_text('netflow_name_dir', $config['netflow_name_dir'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Daemon interval'),
|
||||
html_print_input_text('netflow_interval', $config['netflow_interval'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Daemon binary path'),
|
||||
html_print_input_text('netflow_daemon', $config['netflow_daemon'], false, 50, 200, true)
|
||||
);
|
||||
|
@ -61,7 +57,7 @@ $table->data[1][] = html_print_label_input_block(
|
|||
html_print_input_text('netflow_nfdump', $config['netflow_nfdump'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Nfexpire binary path'),
|
||||
html_print_input_text('netflow_nfexpire', $config['netflow_nfexpire'], false, 50, 200, true)
|
||||
);
|
||||
|
@ -71,7 +67,7 @@ $table->data[2][] = html_print_label_input_block(
|
|||
html_print_input_text('netflow_max_resolution', $config['netflow_max_resolution'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[3][] = html_print_label_input_block(
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Disable custom live view filters'),
|
||||
html_print_checkbox_switch('netflow_disable_custom_lvfilters', 1, $config['netflow_disable_custom_lvfilters'], true)
|
||||
);
|
||||
|
@ -82,7 +78,7 @@ $table->data[3][] = html_print_label_input_block(
|
|||
);
|
||||
|
||||
$onclick = "if (!confirm('".__('Warning').'. '.__('IP address resolution can take a lot of time')."')) return false;";
|
||||
$table->data[4][] = html_print_label_input_block(
|
||||
$table->data[3][] = html_print_label_input_block(
|
||||
__('Name resolution for IP address'),
|
||||
html_print_checkbox_switch_extended('netflow_get_ip_hostname', 1, $config['netflow_get_ip_hostname'], false, $onclick, '', true)
|
||||
);
|
||||
|
|
|
@ -764,10 +764,9 @@ html_print_table($userManagementTable);
|
|||
|
||||
$vcard_data = [];
|
||||
$vcard_data['version'] = '3.0';
|
||||
$vcard_data['firstName'] = $user_info['firstname'];
|
||||
$vcard_data['lastName'] = $user_info['lastname'];
|
||||
$vcard_data['middleName'] = ($user_info['middlename'] === '1') ? '' : $user_info['middlename'];
|
||||
$vcard_data['nickname'] = $user_info['fullname'];
|
||||
$vcard_data['firstName'] = $user_info['fullname'];
|
||||
$vcard_data['lastName'] = '';
|
||||
$vcard_data['middleName'] = '';
|
||||
$vcard_data['workPhone'] = $user_info['phone'];
|
||||
$vcard_data['email'] = $user_info['email'];
|
||||
$vcard_data['organization'] = io_safe_output(get_product_name());
|
||||
|
|
|
@ -160,7 +160,7 @@ if ($load_filter_modal) {
|
|||
true,
|
||||
'',
|
||||
false,
|
||||
'margin-left:5px; width:'.$filter_id_width.';'
|
||||
'width:'.$filter_id_width.';'
|
||||
);
|
||||
|
||||
$table->rowclass[] = 'display-grid';
|
||||
|
@ -169,8 +169,9 @@ if ($load_filter_modal) {
|
|||
'load_filter',
|
||||
false,
|
||||
[
|
||||
'class' => 'mini w25p',
|
||||
'style' => 'margin-left: 73%',
|
||||
'class' => 'mini w30p',
|
||||
'icon' => 'load',
|
||||
'style' => 'margin-left: 208px; width: 130px;',
|
||||
'onclick' => 'load_filter_values();',
|
||||
],
|
||||
true
|
||||
|
@ -189,7 +190,7 @@ function show_filter() {
|
|||
draggable: true,
|
||||
modal: false,
|
||||
closeOnEscape: true,
|
||||
width: 500
|
||||
width: 380
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -293,8 +294,9 @@ if ($save_filter_modal) {
|
|||
'save_filter',
|
||||
false,
|
||||
[
|
||||
'class' => 'mini w25p',
|
||||
'style' => 'margin-left: 56%',
|
||||
'class' => 'mini ',
|
||||
'icon' => 'save',
|
||||
'style' => 'margin-left: 175px; width: 125px;',
|
||||
'onclick' => 'save_new_filter();',
|
||||
],
|
||||
true
|
||||
|
@ -330,8 +332,9 @@ if ($save_filter_modal) {
|
|||
'update_filter',
|
||||
false,
|
||||
[
|
||||
'class' => 'mini w25p',
|
||||
'style' => 'margin-left: 56%',
|
||||
'class' => 'mini ',
|
||||
'icon' => 'save',
|
||||
'style' => 'margin-left: 155px; width: 145px;',
|
||||
'onclick' => 'save_update_filter();',
|
||||
],
|
||||
true
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC230330';
|
||||
$build_version = 'PC230331';
|
||||
$pandora_version = 'v7.0NG.770';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -386,6 +386,10 @@ function config_update_config()
|
|||
$error_update[] = __('Enable console report');
|
||||
}
|
||||
|
||||
if (config_update_value('check_conexion_interval', get_parameter('check_conexion_interval'), true) === false) {
|
||||
$error_update[] = __('Check conexion interval');
|
||||
}
|
||||
|
||||
if (config_update_value('unique_ip', get_parameter('unique_ip'), true) === false) {
|
||||
$error_update[] = __('Unique IP');
|
||||
}
|
||||
|
@ -1536,10 +1540,6 @@ function config_update_config()
|
|||
}
|
||||
}
|
||||
|
||||
if (config_update_value('netflow_interval', (int) get_parameter('netflow_interval'), true) === false) {
|
||||
$error_update[] = __('Daemon interval');
|
||||
}
|
||||
|
||||
if (config_update_value('netflow_daemon', get_parameter('netflow_daemon'), true) === false) {
|
||||
$error_update[] = __('Daemon binary path');
|
||||
}
|
||||
|
@ -2359,6 +2359,10 @@ function config_process_config()
|
|||
config_update_value('reporting_console_enable', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['check_conexion_interval'])) {
|
||||
config_update_value('check_conexion_interval', 180);
|
||||
}
|
||||
|
||||
if (!isset($config['elasticsearch_ip'])) {
|
||||
config_update_value('elasticsearch_ip', '');
|
||||
}
|
||||
|
@ -2878,10 +2882,6 @@ function config_process_config()
|
|||
config_update_value('netflow_path', $default);
|
||||
}
|
||||
|
||||
if (!isset($config['netflow_interval'])) {
|
||||
config_update_value('netflow_interval', SECONDS_10MINUTES);
|
||||
}
|
||||
|
||||
if (!isset($config['netflow_daemon'])) {
|
||||
config_update_value('netflow_daemon', '/usr/bin/nfcapd');
|
||||
}
|
||||
|
|
|
@ -3628,6 +3628,11 @@ function ui_print_datatable(array $parameters)
|
|||
$parameters['csv'] = 1;
|
||||
}
|
||||
|
||||
$dom_elements = '"plfrtiB"';
|
||||
if (isset($parameters['dom_elements'])) {
|
||||
$dom_elements = '"'.$parameters['dom_elements'].'"';
|
||||
}
|
||||
|
||||
$filter = '';
|
||||
// Datatable filter.
|
||||
if (isset($parameters['form']) && is_array($parameters['form'])) {
|
||||
|
@ -3790,6 +3795,34 @@ function ui_print_datatable(array $parameters)
|
|||
}
|
||||
|
||||
$table .= '</tr></thead>';
|
||||
|
||||
if (isset($parameters['data_element']) === true) {
|
||||
$table .= '<tbody>';
|
||||
foreach ($parameters['data_element'] as $row) {
|
||||
$table .= '<tr>';
|
||||
foreach ($row as $td_data) {
|
||||
$table .= '<td>'.$td_data.'</td>';
|
||||
}
|
||||
|
||||
$table .= '</tr>';
|
||||
}
|
||||
|
||||
$table .= '</tbody>';
|
||||
|
||||
$js = '<script>
|
||||
$.fn.dataTable.ext.classes.sPageButton = "pandora_pagination mini-pandora-pagination"
|
||||
var table = $("#'.$table_id.'").DataTable({
|
||||
"dom": "'.$parameters['dom_elements'].'"
|
||||
});
|
||||
$("div.spinner-fixed").hide();
|
||||
$("table#'.$table_id.'").removeClass("invisible");
|
||||
$("#'.$table_id.'_filter > label > input").addClass("mini-search-input");
|
||||
if (table.page.info().pages == 1) {
|
||||
$("#'.$table_id.'_paginate").hide();
|
||||
}
|
||||
</script>';
|
||||
}
|
||||
|
||||
$table .= '</table>';
|
||||
|
||||
$pagination_class = 'pandora_pagination';
|
||||
|
@ -3813,279 +3846,276 @@ function ui_print_datatable(array $parameters)
|
|||
$export_columns = ',columns: \'th:not(:last-child)\'';
|
||||
}
|
||||
|
||||
if (isset($parameters['ajax_url'])) {
|
||||
$type_data = 'ajax: {
|
||||
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
|
||||
type: "POST",
|
||||
dataSrc: function (json) {
|
||||
if($("#'.$form_id.'_search_bt") != undefined) {
|
||||
$("#'.$form_id.'_loading").remove();
|
||||
}
|
||||
if (isset($parameters['data_element']) === false) {
|
||||
if (isset($parameters['ajax_url'])) {
|
||||
$type_data = 'ajax: {
|
||||
url: "'.ui_get_full_url('ajax.php', false, false, false).'",
|
||||
type: "POST",
|
||||
dataSrc: function (json) {
|
||||
if($("#'.$form_id.'_search_bt") != undefined) {
|
||||
$("#'.$form_id.'_loading").remove();
|
||||
}
|
||||
|
||||
if (json.error) {
|
||||
console.error(json.error);
|
||||
$("#error-'.$table_id.'").html(json.error);
|
||||
$("#error-'.$table_id.'").dialog({
|
||||
title: "Filter failed",
|
||||
width: 630,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: false,
|
||||
closeOnEscape: true,
|
||||
buttons: {
|
||||
"Ok" : function () {
|
||||
$(this).dialog("close");
|
||||
if (json.error) {
|
||||
console.error(json.error);
|
||||
$("#error-'.$table_id.'").html(json.error);
|
||||
$("#error-'.$table_id.'").dialog({
|
||||
title: "Filter failed",
|
||||
width: 630,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: false,
|
||||
closeOnEscape: true,
|
||||
buttons: {
|
||||
"Ok" : function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
}
|
||||
}).parent().addClass("ui-state-error");
|
||||
} else {';
|
||||
}).parent().addClass("ui-state-error");
|
||||
} else {';
|
||||
|
||||
if (isset($parameters['ajax_return_operation']) === true
|
||||
&& empty($parameters['ajax_return_operation']) === false
|
||||
&& isset($parameters['ajax_return_operation_function']) === true
|
||||
&& empty($parameters['ajax_return_operation_function']) === false
|
||||
) {
|
||||
$type_data .= '
|
||||
if (json.'.$parameters['ajax_return_operation'].' !== undefined) {
|
||||
'.$parameters['ajax_return_operation_function'].'(json.'.$parameters['ajax_return_operation'].');
|
||||
}
|
||||
';
|
||||
}
|
||||
if (isset($parameters['ajax_return_operation']) === true
|
||||
&& empty($parameters['ajax_return_operation']) === false
|
||||
&& isset($parameters['ajax_return_operation_function']) === true
|
||||
&& empty($parameters['ajax_return_operation_function']) === false
|
||||
) {
|
||||
$type_data .= '
|
||||
if (json.'.$parameters['ajax_return_operation'].' !== undefined) {
|
||||
'.$parameters['ajax_return_operation_function'].'(json.'.$parameters['ajax_return_operation'].');
|
||||
}
|
||||
';
|
||||
}
|
||||
|
||||
if (isset($parameters['ajax_postprocess'])) {
|
||||
$type_data .= '
|
||||
if (json.data) {
|
||||
json.data.forEach(function(item) {
|
||||
'.$parameters['ajax_postprocess'].'
|
||||
});
|
||||
} else {
|
||||
json.data = {};
|
||||
}';
|
||||
}
|
||||
|
||||
if (isset($parameters['ajax_postprocess'])) {
|
||||
$type_data .= '
|
||||
if (json.data) {
|
||||
json.data.forEach(function(item) {
|
||||
'.$parameters['ajax_postprocess'].'
|
||||
return json.data;
|
||||
}
|
||||
},
|
||||
data: function (data) {
|
||||
if($("#button-'.$form_id.'_search_bt") != undefined) {
|
||||
var loading = \''.html_print_image(
|
||||
'images/spinner.gif',
|
||||
true,
|
||||
[
|
||||
'id' => $form_id.'_loading',
|
||||
'class' => 'loading-search-datatables-button',
|
||||
]
|
||||
).'\';
|
||||
$("#button-'.$form_id.'_search_bt").parent().append(loading);
|
||||
}
|
||||
|
||||
inputs = $("#'.$form_id.' :input");
|
||||
|
||||
values = {};
|
||||
inputs.each(function() {
|
||||
values[this.name] = $(this).val();
|
||||
})
|
||||
|
||||
$.extend(data, {
|
||||
filter: values,'."\n";
|
||||
|
||||
if (is_array($parameters['ajax_data'])) {
|
||||
foreach ($parameters['ajax_data'] as $k => $v) {
|
||||
$type_data .= $k.':'.json_encode($v).",\n";
|
||||
}
|
||||
}
|
||||
|
||||
$type_data .= 'page: "'.$parameters['ajax_url'].'"
|
||||
});
|
||||
} else {
|
||||
json.data = {};
|
||||
}';
|
||||
|
||||
return data;
|
||||
}
|
||||
},';
|
||||
} else {
|
||||
$type_data = 'data: '.json_encode($parameters['data_element']).',';
|
||||
}
|
||||
|
||||
$type_data .= '
|
||||
return json.data;
|
||||
}
|
||||
},
|
||||
data: function (data) {
|
||||
if($("#button-'.$form_id.'_search_bt") != undefined) {
|
||||
var loading = \''.html_print_image(
|
||||
'images/spinner.gif',
|
||||
true,
|
||||
[
|
||||
'id' => $form_id.'_loading',
|
||||
'class' => 'loading-search-datatables-button',
|
||||
]
|
||||
).'\';
|
||||
$("#button-'.$form_id.'_search_bt").parent().append(loading);
|
||||
}
|
||||
$serverside = 'true';
|
||||
if (isset($parameters['data_element'])) {
|
||||
$serverside = 'false';
|
||||
}
|
||||
|
||||
inputs = $("#'.$form_id.' :input");
|
||||
// Javascript controller.
|
||||
$js = '<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$.fn.dataTable.ext.errMode = "none";
|
||||
$.fn.dataTable.ext.classes.sPageButton = "'.$pagination_class.'";
|
||||
|
||||
values = {};
|
||||
inputs.each(function() {
|
||||
values[this.name] = $(this).val();
|
||||
})
|
||||
var settings_datatable = {
|
||||
drawCallback: function(settings) {';
|
||||
|
||||
$.extend(data, {
|
||||
filter: values,'."\n";
|
||||
if (!isset($parameters['data_element'])) {
|
||||
$js .= 'if (dt_'.$table_id.'.page.info().pages > 1) {
|
||||
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").show()
|
||||
} else {
|
||||
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").hide()
|
||||
}';
|
||||
}
|
||||
|
||||
if (is_array($parameters['ajax_data'])) {
|
||||
foreach ($parameters['ajax_data'] as $k => $v) {
|
||||
$type_data .= $k.':'.json_encode($v).",\n";
|
||||
$js .= 'if ($("#'.$table_id.' tr td").length == 1) {
|
||||
$(".datatable-msg-info-'.$table_id.'").show();
|
||||
$(".datatable-msg-info-'.$table_id.'").removeClass(\'invisible_important\');
|
||||
$("table#'.$table_id.'").hide();
|
||||
$("div.dataTables_paginate").hide();
|
||||
$("div.dataTables_info").hide();
|
||||
$("div.dataTables_length").hide();
|
||||
$("div.dt-buttons").hide();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages > 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").show()
|
||||
}
|
||||
} else {
|
||||
$(".datatable-msg-info-'.$table_id.'").hide();
|
||||
$("table#'.$table_id.'").show();
|
||||
$("div.dataTables_paginate").show();
|
||||
$("div.dataTables_info").show();
|
||||
$("div.dataTables_length").show();
|
||||
$("div.dt-buttons").show();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages == 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").hide()
|
||||
}
|
||||
}';
|
||||
|
||||
if (isset($parameters['drawCallback'])) {
|
||||
$js .= $parameters['drawCallback'];
|
||||
}
|
||||
|
||||
$searching = 'false';
|
||||
if (isset($parameters['searching']) && $parameters['searching'] === true) {
|
||||
$searching = 'true';
|
||||
}
|
||||
|
||||
$ordering = 'true';
|
||||
if (isset($parameters['ordering']) && $parameters['ordering'] === false) {
|
||||
$ordering = 'false';
|
||||
}
|
||||
|
||||
$js .= '},';
|
||||
|
||||
$languaje = substr(get_user_language(), 0, 2);
|
||||
|
||||
$js .= '
|
||||
processing: true,
|
||||
serverSide: '.$serverside.',
|
||||
paging: '.$parameters['paging'].',
|
||||
pageLength: '.$parameters['default_pagination'].',
|
||||
searching: '.$searching.',
|
||||
responsive: true,
|
||||
dom: '.$dom_elements.',
|
||||
language: {
|
||||
url: "/pandora_console/include/javascript/i18n/dataTables.'.$languaje.'.json",
|
||||
processing:"'.$processing.'",
|
||||
zeroRecords:"'.$zeroRecords.'",
|
||||
emptyTable:"'.$emptyTable.'",
|
||||
},
|
||||
buttons: '.$parameters['csv'].'== 1 ? [
|
||||
{
|
||||
extend: "csv",
|
||||
text : "'.__('Export current page to CSV').'",
|
||||
titleAttr: "'.__('Export current page to CSV').'",
|
||||
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
|
||||
fieldSeparator: "'.$config['csv_divider'].'",
|
||||
action: function ( e, dt, node, config ) {
|
||||
blockResubmit(node);
|
||||
// Call the default csvHtml5 action method to create the CSV file
|
||||
$.fn.dataTable.ext.buttons.csvHtml5.action.call(this, e, dt, node, config);
|
||||
},
|
||||
exportOptions : {
|
||||
modifier : {
|
||||
// DataTables core
|
||||
order : "current",
|
||||
page : "All",
|
||||
search : "applied"
|
||||
}'.$export_columns.'
|
||||
},
|
||||
}
|
||||
] : [],
|
||||
lengthMenu: '.json_encode($pagination_options).',
|
||||
columnDefs: [
|
||||
{ className: "no-class", targets: "_all" },
|
||||
{ bSortable: false, targets: '.$no_sortable_columns.' }
|
||||
],
|
||||
ordering: '.$ordering.',
|
||||
initComplete: function(settings, json) {
|
||||
// Move elements to table_action_buttons bar.
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_length"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dt-buttons"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_filter"));
|
||||
$("div.spinner-fixed").hide();
|
||||
},
|
||||
columns: [';
|
||||
|
||||
foreach ($parameters['datacolumns'] as $data) {
|
||||
if (is_array($data)) {
|
||||
$js .= '{data : "'.$data['text'].'",className: "'.$data['class'].'"},';
|
||||
} else {
|
||||
$js .= '{data : "'.$data.'",className: "no-class"},';
|
||||
}
|
||||
}
|
||||
|
||||
$type_data .= 'page: "'.$parameters['ajax_url'].'"
|
||||
});
|
||||
$js .= '
|
||||
],
|
||||
order: [[ '.$order.' ]],';
|
||||
$js .= $type_data;
|
||||
$js .= '
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
},';
|
||||
} else {
|
||||
$type_data = 'data: '.json_encode($parameters['data_element']).',';
|
||||
}
|
||||
dt_'.$table_id.' = $("#'.$table_id.'").DataTable(settings_datatable);
|
||||
|
||||
$serverside = 'true';
|
||||
if (isset($parameters['data_element'])) {
|
||||
$serverside = 'false';
|
||||
}
|
||||
$("#button-'.$form_id.'_search_bt").click(function (){
|
||||
dt_'.$table_id.'.draw().page(0)
|
||||
});
|
||||
';
|
||||
|
||||
// Javascript controller.
|
||||
$js = '<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$.fn.dataTable.ext.errMode = "none";
|
||||
$.fn.dataTable.ext.classes.sPageButton = "'.$pagination_class.'";
|
||||
if (isset($parameters['caption']) === true
|
||||
&& empty($parameters['caption']) === false
|
||||
) {
|
||||
$js .= '$("#'.$table_id.'").append("<caption>'.$parameters['caption'].'</caption>");';
|
||||
$js .= '$(".datatables_thead_tr").css("height", 0);';
|
||||
}
|
||||
|
||||
var settings_datatable = {
|
||||
drawCallback: function(settings) {';
|
||||
if (isset($parameters['csv']) === true) {
|
||||
$js."'$('#".$table_id."').on( 'buttons-processing', function ( e, indicator ) {
|
||||
if ( indicator ) {
|
||||
console.log('a');
|
||||
}
|
||||
else {
|
||||
console.log('b');
|
||||
}";
|
||||
}
|
||||
|
||||
if (!isset($parameters['data_element'])) {
|
||||
$js .= 'if (dt_'.$table_id.'.page.info().pages > 1) {
|
||||
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").show()
|
||||
} else {
|
||||
$("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").hide()
|
||||
}';
|
||||
}
|
||||
|
||||
$js .= 'if ($("#'.$table_id.' tr td").length == 1) {
|
||||
$(".datatable-msg-info-'.$table_id.'").show();
|
||||
$(".datatable-msg-info-'.$table_id.'").removeClass(\'invisible_important\');
|
||||
$("table#'.$table_id.'").hide();
|
||||
$("div.dataTables_paginate").hide();
|
||||
$("div.dataTables_info").hide();
|
||||
$js .= '$("table#'.$table_id.'").removeClass("invisible");
|
||||
});';
|
||||
$js .= '
|
||||
$(function() {
|
||||
$(document).on("preInit.dt", function (ev, settings) {
|
||||
$("div.dataTables_length").hide();
|
||||
$("div.dt-buttons").hide();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages > 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").show()
|
||||
}
|
||||
} else {
|
||||
$(".datatable-msg-info-'.$table_id.'").hide();
|
||||
$("table#'.$table_id.'").show();
|
||||
$("div.dataTables_paginate").show();
|
||||
$("div.dataTables_info").show();
|
||||
$("div.dataTables_length").show();
|
||||
$("div.dt-buttons").show();
|
||||
|
||||
if (dt_'.$table_id.'.page.info().pages == 1) {
|
||||
$(".dataTables_paginate.paging_simple_numbers").hide()
|
||||
}
|
||||
}';
|
||||
|
||||
if (isset($parameters['drawCallback'])) {
|
||||
$js .= $parameters['drawCallback'];
|
||||
}
|
||||
|
||||
$dom_elements = '"plfrtiB"';
|
||||
if (isset($parameters['dom_elements'])) {
|
||||
$dom_elements = '"'.$parameters['dom_elements'].'"';
|
||||
}
|
||||
|
||||
$searching = 'false';
|
||||
if (isset($parameters['searching']) && $parameters['searching'] === true) {
|
||||
$searching = 'true';
|
||||
}
|
||||
|
||||
$ordering = 'true';
|
||||
if (isset($parameters['ordering']) && $parameters['ordering'] === false) {
|
||||
$ordering = 'false';
|
||||
}
|
||||
|
||||
$js .= '},';
|
||||
|
||||
$languaje = substr(get_user_language(), 0, 2);
|
||||
|
||||
$js .= '
|
||||
processing: true,
|
||||
serverSide: '.$serverside.',
|
||||
paging: '.$parameters['paging'].',
|
||||
pageLength: '.$parameters['default_pagination'].',
|
||||
searching: '.$searching.',
|
||||
responsive: true,
|
||||
dom: '.$dom_elements.',
|
||||
language: {
|
||||
url: "/pandora_console/include/javascript/i18n/dataTables.'.$languaje.'.json",
|
||||
processing:"'.$processing.'",
|
||||
zeroRecords:"'.$zeroRecords.'",
|
||||
emptyTable:"'.$emptyTable.'",
|
||||
},
|
||||
buttons: '.$parameters['csv'].'== 1 ? [
|
||||
{
|
||||
extend: "csv",
|
||||
text : "'.__('Export current page to CSV').'",
|
||||
titleAttr: "'.__('Export current page to CSV').'",
|
||||
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
|
||||
fieldSeparator: "'.$config['csv_divider'].'",
|
||||
action: function ( e, dt, node, config ) {
|
||||
blockResubmit(node);
|
||||
// Call the default csvHtml5 action method to create the CSV file
|
||||
$.fn.dataTable.ext.buttons.csvHtml5.action.call(this, e, dt, node, config);
|
||||
},
|
||||
exportOptions : {
|
||||
modifier : {
|
||||
// DataTables core
|
||||
order : "current",
|
||||
page : "All",
|
||||
search : "applied"
|
||||
}'.$export_columns.'
|
||||
},
|
||||
}
|
||||
] : [],
|
||||
lengthMenu: '.json_encode($pagination_options).',
|
||||
columnDefs: [
|
||||
{ className: "no-class", targets: "_all" },
|
||||
{ bSortable: false, targets: '.$no_sortable_columns.' }
|
||||
],
|
||||
ordering: '.$ordering.',
|
||||
initComplete: function(settings, json) {
|
||||
// Move elements to table_action_buttons bar.
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
$(".action_buttons_right_content").html("<div class=\"pagination-child-div\"></div>");
|
||||
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_length"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dt-buttons"));
|
||||
$(".pagination-child-div").append($("#'.$table_id.'_wrapper > .dataTables_filter"));
|
||||
$("div.spinner-fixed").hide();
|
||||
},
|
||||
columns: [';
|
||||
|
||||
foreach ($parameters['datacolumns'] as $data) {
|
||||
if (is_array($data)) {
|
||||
$js .= '{data : "'.$data['text'].'",className: "'.$data['class'].'"},';
|
||||
} else {
|
||||
$js .= '{data : "'.$data.'",className: "no-class"},';
|
||||
}
|
||||
}
|
||||
|
||||
$js .= '
|
||||
],
|
||||
order: [[ '.$order.' ]],';
|
||||
$js .= $type_data;
|
||||
$js .= '
|
||||
};
|
||||
|
||||
dt_'.$table_id.' = $("#'.$table_id.'").DataTable(settings_datatable);
|
||||
|
||||
$("#button-'.$form_id.'_search_bt").click(function (){
|
||||
dt_'.$table_id.'.draw().page(0)
|
||||
});
|
||||
});
|
||||
|
||||
';
|
||||
|
||||
if (isset($parameters['caption']) === true
|
||||
&& empty($parameters['caption']) === false
|
||||
) {
|
||||
$js .= '$("#'.$table_id.'").append("<caption>'.$parameters['caption'].'</caption>");';
|
||||
$js .= '$(".datatables_thead_tr").css("height", 0);';
|
||||
$js .= '</script>';
|
||||
}
|
||||
|
||||
if (isset($parameters['csv']) === true) {
|
||||
$js."'$('#".$table_id."').on( 'buttons-processing', function ( e, indicator ) {
|
||||
if ( indicator ) {
|
||||
console.log('a');
|
||||
}
|
||||
else {
|
||||
console.log('b');
|
||||
}";
|
||||
}
|
||||
|
||||
$js .= '$("table#'.$table_id.'").removeClass("invisible");
|
||||
});';
|
||||
$js .= '
|
||||
$(function() {
|
||||
$(document).on("preInit.dt", function (ev, settings) {
|
||||
$("div.dataTables_length").hide();
|
||||
$("div.dt-buttons").hide();
|
||||
});
|
||||
});
|
||||
|
||||
';
|
||||
|
||||
$js .= '</script>';
|
||||
|
||||
// Order.
|
||||
$info_msg_arr = [];
|
||||
$info_msg_arr['message'] = $emptyTable;
|
||||
|
@ -7076,7 +7106,7 @@ function ui_print_message_dialog($title, $text, $id='', $img='', $text_button=''
|
|||
echo '<div id="message_dialog_'.$id.'" title="'.$title.'" style="'.$style.'">';
|
||||
echo '<div class="content_dialog">';
|
||||
echo '<div class="icon_message_dialog">';
|
||||
echo html_print_image($img, true, ['alt' => $title, 'border' => 0]);
|
||||
echo html_print_image($img, true, ['alt' => $title, 'border' => 0, 'class' => 'icon_connection_check']);
|
||||
echo '</div>';
|
||||
echo '<div class="content_message_dialog">';
|
||||
echo '<div class="text_message_dialog">';
|
||||
|
|
|
@ -4,16 +4,17 @@
|
|||
* Connection Check
|
||||
* --------------------------------------
|
||||
*/
|
||||
|
||||
checkConnection(1);
|
||||
$(document).ready(function() {
|
||||
checkConnection(get_php_value("check_conexion_interval"));
|
||||
});
|
||||
|
||||
/**
|
||||
* Performs connection tests every minutes and add connection listeners
|
||||
* @param {integer} time in minutes
|
||||
*/
|
||||
|
||||
function checkConnection(minutes) {
|
||||
var cicle = minutes * 60 * 1000;
|
||||
function checkConnection(seconds) {
|
||||
var cicle = seconds * 1000;
|
||||
var checkConnection = setInterval(handleConnection, cicle);
|
||||
|
||||
// Connection listeters.
|
||||
|
@ -48,7 +49,7 @@ function handleConnection() {
|
|||
// If test connection file is not found, do not show message.
|
||||
if (err.status != 404) {
|
||||
connected = false;
|
||||
msg = err;
|
||||
msg = err.statusText;
|
||||
} else {
|
||||
connected = true;
|
||||
}
|
||||
|
|
|
@ -135,4 +135,6 @@ class Console extends Entity
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -453,6 +453,7 @@ class ModulesByStatus extends Widget
|
|||
1000,
|
||||
],
|
||||
],
|
||||
'dom_elements' => 'frtilp',
|
||||
]
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
@ -11784,6 +11784,12 @@ span.help_icon_15px > img {
|
|||
z-index: 1116 !important;
|
||||
}
|
||||
|
||||
.icon_connection_check {
|
||||
width: 65px !important;
|
||||
height: 65px !important;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* ==== Spinner ==== */
|
||||
.spinner-fixed {
|
||||
position: fixed;
|
||||
|
|
|
@ -816,10 +816,6 @@ div[id^="auto-os-"] > img {
|
|||
height: 20px;
|
||||
}
|
||||
|
||||
.dataTables_paginate {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.w22px {
|
||||
width: 22px;
|
||||
}
|
||||
|
@ -838,3 +834,13 @@ td.FF-thresholds-pdd {
|
|||
padding: 0px !important;
|
||||
padding-left: 13px !important;
|
||||
}
|
||||
|
||||
div.grid-stack-item-content a.pandora_pagination,
|
||||
a.mini-pandora-pagination {
|
||||
padding: 7px;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
input.mini-search-input {
|
||||
height: 30px;
|
||||
}
|
||||
|
|
|
@ -1487,6 +1487,7 @@ echo html_print_div(
|
|||
);
|
||||
|
||||
// Connection lost alert.
|
||||
set_js_value('check_conexion_interval', $config['check_conexion_interval']);
|
||||
ui_require_javascript_file('connection_check');
|
||||
set_js_value('absolute_homeurl', ui_get_full_url(false, false, false, false));
|
||||
$conn_title = __('Connection with server has been lost');
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.770';
|
||||
$build = '230330';
|
||||
$build = '230331';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
|
|
@ -434,35 +434,39 @@ if ($agent_view_page === true) {
|
|||
);
|
||||
}
|
||||
|
||||
if (((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) check_acl($config['id_user'], $id_group, 'LM') === true)) {
|
||||
if ($agent_view_page === true) {
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons pdd_b_10px pdd_r_5px w100p',
|
||||
'content' => html_print_submit_button(
|
||||
if (is_metaconsole() === false) {
|
||||
if (((bool) check_acl($config['id_user'], $id_group, 'AW') === true || (bool) check_acl($config['id_user'], $id_group, 'LM') === true)) {
|
||||
if ($agent_view_page === true) {
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons pdd_b_10px pdd_r_5px w100p',
|
||||
'content' => html_print_submit_button(
|
||||
__('Validate'),
|
||||
'alert_validate',
|
||||
false,
|
||||
[
|
||||
'icon' => 'wand',
|
||||
'mode' => 'secondary mini',
|
||||
],
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Validate'),
|
||||
'alert_validate',
|
||||
false,
|
||||
[
|
||||
'icon' => 'wand',
|
||||
'mode' => 'secondary mini',
|
||||
],
|
||||
[ 'icon' => 'wand' ],
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Validate'),
|
||||
'alert_validate',
|
||||
false,
|
||||
[ 'icon' => 'wand' ],
|
||||
true
|
||||
),
|
||||
['type' => 'form_action']
|
||||
);
|
||||
['type' => 'form_action']
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
html_print_action_buttons('');
|
||||
}
|
||||
|
||||
$html_content = ob_get_clean();
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -51,16 +51,16 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('show_lastalerts','1'),
|
||||
('style','pandora'),
|
||||
('graph_image_height', '250'),
|
||||
('graph_color1', '#99dd00'),
|
||||
('graph_color2', '#336600'),
|
||||
('graph_color3', '#3399cc'),
|
||||
('graph_color4', '#ff66cc'),
|
||||
('graph_color5', '#CC0000'),
|
||||
('graph_color6', '#0033FF'),
|
||||
('graph_color7', '#ff6600'),
|
||||
('graph_color8', '#330066'),
|
||||
('graph_color9', '#ffff00'),
|
||||
('graph_color10', '#99ffff'),
|
||||
('graph_color1', '#1c7973'),
|
||||
('graph_color2', '#82b92f'),
|
||||
('graph_color3', '#e82a2a'),
|
||||
('graph_color4', '#8577cf'),
|
||||
('graph_color5', '#f5a623'),
|
||||
('graph_color6', '#14524f'),
|
||||
('graph_color7', '#024eff'),
|
||||
('graph_color8', '#18c7c5'),
|
||||
('graph_color9', '#ec7175'),
|
||||
('graph_color10', '#c0ccdc'),
|
||||
('trap2agent', '0'),
|
||||
('date_format', 'F j, Y, g:i a'),
|
||||
('event_view_hr', 8),
|
||||
|
@ -118,10 +118,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
|
||||
('custom_report_front_header', ''),
|
||||
('custom_report_front_footer', ''),
|
||||
('MR', 61),
|
||||
('MR', 62),
|
||||
('identification_reminder', 1),
|
||||
('identification_reminder_timestamp', 0),
|
||||
('current_package', 769),
|
||||
('current_package', 770),
|
||||
('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'),
|
||||
('custom_docs_logo', 'default_docs.png'),
|
||||
('custom_support_logo', 'default_support.png'),
|
||||
|
|
|
@ -623,7 +623,9 @@ class Manager
|
|||
if ($server_update === false) {
|
||||
$return['files'] = Client::checkOUMContent($file_path);
|
||||
} else {
|
||||
$return['files'] = Client::checkTGZContent($file_path);
|
||||
// Commented line for memory limit problems.
|
||||
// $return['files'] = Client::checkTGZContent($file_path);
|
||||
$return['files'] = null;
|
||||
}
|
||||
|
||||
if (session_status() !== PHP_SESSION_ACTIVE) {
|
||||
|
|
|
@ -172,18 +172,21 @@ function form_upload(url, auth, current_package) {
|
|||
log_zone.html("<div>" + texts.uploadSuccess + "</div>");
|
||||
log_zone.append("<div>" + texts.uploadMessage + "</div>");
|
||||
log_zone.append("<div>" + texts.clickToStart + "</div>");
|
||||
var file_list =
|
||||
"<h2>" + texts.fileList + "</h2><div class='file_list'>";
|
||||
|
||||
if (res.files) {
|
||||
res.files.forEach(function(e) {
|
||||
file_list += "<div class='file_entry'>" + e + "</div>";
|
||||
});
|
||||
if (res.files !== null) {
|
||||
var file_list =
|
||||
"<h2>" + texts.fileList + "</h2><div class='file_list'>";
|
||||
|
||||
if (res.files) {
|
||||
res.files.forEach(function(e) {
|
||||
file_list += "<div class='file_entry'>" + e + "</div>";
|
||||
});
|
||||
}
|
||||
|
||||
file_list += "</div>";
|
||||
log_zone.append(file_list);
|
||||
}
|
||||
|
||||
file_list += "</div>";
|
||||
log_zone.append(file_list);
|
||||
|
||||
// Show messages
|
||||
$("#log_zone").slideDown(400, function() {
|
||||
$("#log_zone").height(200);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.770-230330
|
||||
Version: 7.0NG.770-230331
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.770-230330"
|
||||
pandora_version="7.0NG.770-230331"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -0,0 +1,738 @@
|
|||
#############################################################################
|
||||
# Pandora FMS Server Parameters
|
||||
# Pandora FMS, the Flexible Monitoring System.
|
||||
# Version 7.0NG.769
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
# Please change it for your setup needs
|
||||
#############################################################################
|
||||
|
||||
# Servername: Name of this server
|
||||
# if not given, it takes hostname. It's preferable to setup one
|
||||
# because machine name could change by some reason.
|
||||
|
||||
servername greystone_sec
|
||||
|
||||
# incomingdir: Defines directory where incoming data packets are stored
|
||||
# You could set directory relative to base path or absolute, starting with /
|
||||
|
||||
incomingdir /var/spool/pandora/data_in
|
||||
|
||||
# log_file: Main logfile for pandora_server
|
||||
# You could set file relative to base path or absolute, starting with /
|
||||
|
||||
log_file /var/log/pandora/pandora_server.log
|
||||
|
||||
# Log file for Pandora FMS SNMP console. Its generated by NetSNMP Trap daemon
|
||||
# If you change it, please update the file /etc/logrotate.d/pandora_server accordingly.
|
||||
|
||||
snmp_logfile /var/log/pandora/pandora_snmptrap.log
|
||||
|
||||
# Error logfile: aux logfile for pandora_server errors (in Daemon mode)
|
||||
# You could set file relative to base path or absolute, starting with /
|
||||
|
||||
errorlog_file /var/log/pandora/pandora_server.error
|
||||
|
||||
# daemon: Runs in daemon mode (background) if 1, if 0 runs in foreground
|
||||
# this could be also configured on commandline with -D option
|
||||
|
||||
# daemon 1
|
||||
|
||||
# dbengine: mysql
|
||||
dbengine mysql
|
||||
|
||||
# Database credentials. A VERY important configuration.
|
||||
# This must be the same credentials used by your Pandora FMS Console
|
||||
# but could be different if your console is not running in the same
|
||||
# host than the server. Check your console setup in /include/config.php
|
||||
|
||||
# dbname: Database name (pandora by default)
|
||||
|
||||
dbname pandora
|
||||
|
||||
# dbuser: Database user name (pandora by default)
|
||||
|
||||
dbuser pandora
|
||||
|
||||
# dbpass: Database password
|
||||
|
||||
dbpass pandora
|
||||
|
||||
# dbhost: Database hostname or IP address
|
||||
|
||||
dbhost 127.0.0.1
|
||||
|
||||
# dbport: Database port number
|
||||
# Default value depends on the dbengine (mysql: 3306)
|
||||
#dbport 3306
|
||||
|
||||
# dbssl: Enable (1) or disable (0) SSL for the database connection.
|
||||
|
||||
dbssl 0
|
||||
|
||||
# dbsslcafile: Path to a file in PEM format that contains a list of trusted SSL certificate authorities.
|
||||
|
||||
# dbsslcafile
|
||||
|
||||
# dbsslcapath: Path to a directory that contains trusted SSL certificate authority certificates in PEM format.
|
||||
|
||||
# dbsslcapath
|
||||
|
||||
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
|
||||
# -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and
|
||||
# set to 1 or 3 on production enviroments.
|
||||
|
||||
verbosity 3
|
||||
|
||||
# Master Server priority. The running server with the highest master value will
|
||||
# be the master. Ties are broken at random. If set to 0, this server will
|
||||
# never become master.
|
||||
master 0
|
||||
|
||||
# Activate Pandora SNMP console (depending on snmptrapd)
|
||||
|
||||
snmpconsole 0
|
||||
|
||||
# snmpconsole_threads: number of SNMP console threads for processing SNMP traps.
|
||||
|
||||
snmpconsole_threads 1
|
||||
|
||||
# If set to 1, traps from the same source will never be processed in parallel. 0 by default.
|
||||
#snmpconsole_lock 0
|
||||
|
||||
# Time between consecutive reads of the SNMP log file in seconds. Defaults to server_threshold.
|
||||
#snmpconsole_threshold 5
|
||||
|
||||
# Attempt to translate variable bindings when processing SNMP traps. 1 enabled, 0 disabled. 0 by default. (ENTERPRISE ONLY).
|
||||
|
||||
translate_variable_bindings 0
|
||||
|
||||
# Attempt to translate enterprise strings when processing SNMP traps. 1 enabled, 0 disabled. 1 by default. (ENTERPRISE ONLY).
|
||||
|
||||
translate_enterprise_strings 0
|
||||
|
||||
# snmptrapd will ignore authenticationFailure traps if set to 1.
|
||||
|
||||
snmp_ignore_authfailure 1
|
||||
|
||||
# snmptrapd will read the PDU source address instead of the agent-addr field is set to 1.
|
||||
|
||||
snmp_pdu_address 0
|
||||
|
||||
# Path to the snmp_trapd binary. If set to manual, the server will not attemp to start snmp_trapd.
|
||||
|
||||
#snmp_trapd manual
|
||||
|
||||
# SNMP Trap forwarding. Go to https://pandorafms.com/manual/ for more information.
|
||||
#snmp_forward_trap 1
|
||||
#snmp_forward_ip 192.168.1.145
|
||||
#snmp_forward_version 1
|
||||
#snmp_forward_secName
|
||||
#snmp_forward_engineid
|
||||
#snmp_forward_authProtocol
|
||||
#snmp_forward_authPassword
|
||||
#snmp_forward_privProtocol
|
||||
#snmp_forward_privPassword
|
||||
#snmp_forward_secLevel
|
||||
#snmp_forward_community
|
||||
|
||||
# Activate (1) Pandora Network Server
|
||||
|
||||
networkserver 0
|
||||
|
||||
# Activate (1) Pandora Data Server
|
||||
|
||||
dataserver 0
|
||||
|
||||
# Enable (1) or disable (0) the Data Server smart queue, which gives priority
|
||||
# to new data coming from agents at the expense of buffered XML files.
|
||||
dataserver_smart_queue 1
|
||||
|
||||
# Activate (1) Pandora FMS Discovery server
|
||||
|
||||
discoveryserver 0
|
||||
|
||||
# Discovery SAP (PANDORA FMS ENTERPRISE ONLY)
|
||||
# java /usr/bin/java
|
||||
|
||||
# Discovery SAP utils (PANDORA FMS ENTERPRISE ONLY)
|
||||
# sap_utils /usr/share/pandora_server/util/recon_scripts/SAP
|
||||
|
||||
# Discovery Microsoft SQL ODBC driver (PANDORA FMS ENTERPRISE ONLY)
|
||||
# mssql_driver ODBC Driver 17 for SQL Server
|
||||
|
||||
# pluginserver : 1 or 0. Set to 1 to activate plugin server with this setup
|
||||
|
||||
pluginserver 0
|
||||
|
||||
# Pandora FMS Plugin exec tool filepath (by default at /usr/bin)
|
||||
|
||||
plugin_exec /usr/bin/timeout
|
||||
|
||||
# predictionserver : 1 or 0. Set to 1 to activate prediction server with this setup
|
||||
# DISABLED BY DEFAULT
|
||||
|
||||
predictionserver 0
|
||||
|
||||
# wmiserver : 1 or 0. Set to 1 to activate WMI server with this setup
|
||||
# DISABLED BY DEFAULT
|
||||
|
||||
wmiserver 0
|
||||
|
||||
# Network timeout (in seconds) for timeout in network connections for Network agents
|
||||
|
||||
network_timeout 4
|
||||
|
||||
# Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
rcmd_timeout 10
|
||||
|
||||
# Pandora FMS remote execution commands timeout tool filepath (by default at /usr/bin)
|
||||
|
||||
rcmd_timeout_bin /usr/bin/timeout
|
||||
|
||||
# Remote execution modules, ssh_launcher extra option (PANDORA FMS ENTERPRISE ONLY).
|
||||
ssh_launcher /usr/share/pandora_server/util/ssh_launcher.sh
|
||||
|
||||
# Server keepalive (in seconds)
|
||||
|
||||
server_keepalive 45
|
||||
|
||||
# Log server thread status to disk (always set to 0, except when debugging).
|
||||
|
||||
thread_log 0
|
||||
|
||||
# Server Threshold: defines number of seconds of main loop (in sec)
|
||||
|
||||
server_threshold 5
|
||||
|
||||
# Network threads: Do not set too high (~40). Each threads make a network module check.
|
||||
|
||||
network_threads 4
|
||||
|
||||
# icmp_checks x : defines number of pings for each icmp_proc module type. at least one of
|
||||
# that ping should be 1 to report 1. Setting this to 1 will make all icmp montioring faster but
|
||||
# with more probability of failure.
|
||||
|
||||
icmp_checks 1
|
||||
|
||||
# Number of ICMP packets to send per request.
|
||||
icmp_packets 2
|
||||
|
||||
# tcp specific options :
|
||||
# tcp_checks: number of tcp retries if first attempt fails.
|
||||
# tcp_timeout: specific timeout for tcp connections
|
||||
|
||||
tcp_checks 1
|
||||
tcp_timeout 10
|
||||
|
||||
# snmp specific options :
|
||||
# snmp_checks: number of snmp request retries if first attempt fails.
|
||||
# snmp_timeout: specific timeout for snmp request.
|
||||
|
||||
snmp_checks 1
|
||||
snmp_timeout 4
|
||||
|
||||
# snmp_proc_deadresponse 1 (default): Return DOWN if cannot contact
|
||||
# or receive NULL from a SNMP PROC module.
|
||||
|
||||
snmp_proc_deadresponse 1
|
||||
|
||||
# plugin_threads: Specify number of plugin server threads for processing plugin calls
|
||||
|
||||
plugin_threads 1
|
||||
|
||||
# plugin_timeout: Specify number of seconds calling plugin exec waiting for response
|
||||
# after this time, call is aborted and result is "unknown".
|
||||
|
||||
plugin_timeout 12
|
||||
|
||||
# wmi_timeout : specific timeout for wmi request.
|
||||
|
||||
wmi_timeout 7
|
||||
|
||||
# wmi_threads: Specify number of WMI server threads for processing WMI remote calls
|
||||
|
||||
wmi_threads 1
|
||||
|
||||
# WMI client binary (wmic by default).
|
||||
|
||||
#wmi_client pandorawmic
|
||||
|
||||
# recon_threads. Each thread will scan a different scantask.
|
||||
|
||||
recon_threads 1
|
||||
|
||||
# dataserver_threads: Number of threads for data server (XML processing threads)
|
||||
|
||||
dataserver_threads 1
|
||||
|
||||
# mta_address: External Mailer (MTA) IP Address to be used by Pandora FMS internal email capabilities
|
||||
# If not set, the MTA configuration specified in the Pandora FMS Console will be used.
|
||||
|
||||
#mta_address localhost
|
||||
|
||||
# mta_port, this is the mail server port (default 25)
|
||||
|
||||
#mta_port 25
|
||||
|
||||
# mta_user MTA User (if needed for auth, FQD or simple user, depending on your server)
|
||||
|
||||
#mta_user myuser@mydomain.com
|
||||
|
||||
# mta_pass MTA Pass (if needed for auth)
|
||||
|
||||
#mta_pass mypassword
|
||||
|
||||
# mta_auth MTA Auth system (if needed, it supports LOGIN, PLAIN, CRAM-MD5, DIGEST-MD)
|
||||
|
||||
#mta_auth LOGIN
|
||||
|
||||
# mta_from Email address that sends the mail, by default is pandora@localhost
|
||||
# probably you need to change it to avoid problems with your antispam
|
||||
|
||||
#mta_from Pandora FMS <pandora@mydomain.com>
|
||||
|
||||
# SMTP encryption protocol (none, ssl, starttls)
|
||||
|
||||
#mta_encryption none
|
||||
|
||||
# Set 1 if want eMail deliver alert in separate mail (default).
|
||||
# Set 0 if want eMail deliver shared mail by all destination.
|
||||
mail_in_separate 1
|
||||
|
||||
|
||||
# xprobe2: Optional package to detect OS types using advanced TCP/IP
|
||||
# fingerprinting tecniques, much more accurates than stadard nmap.
|
||||
# If not provided, nmap is used insted xprobe2
|
||||
|
||||
xprobe2 /usr/bin/xprobe2
|
||||
|
||||
# nmap: If provided, is used to detect OS type with recon server using
|
||||
# advanded OS fingerprint technique. Xprobe2 gives more accurate results
|
||||
# Nmap is also used to do TCP port scanning in detected host.
|
||||
|
||||
nmap /usr/bin/nmap
|
||||
|
||||
# Default path is /usr/sbin/fping for installation default in distro Centos , if you are installing in other distribution,
|
||||
# you install fping in /usr/bin/fping and change the path in this line.
|
||||
# Path to the fping binary. Used by the Enterprise ICMP Server.
|
||||
fping /usr/sbin/fping
|
||||
# fping /usr/bin/fping
|
||||
|
||||
# A value that specifies how aggressive nmap should be from 1 to 5. 1 means slower but more reliable, 5 means faster but less reliable. 2 by default.
|
||||
nmap_timing_template 2
|
||||
|
||||
# Like nmap_timing_template, but applies to Satellite Server and Recon Server network scans. 3 by default.
|
||||
recon_timing_template 3
|
||||
|
||||
# snmpget: Needed to do SNMP checks. By default is on /usr/bin/snmpget
|
||||
|
||||
snmpget /usr/bin/snmpget
|
||||
|
||||
# Location of the braa binary needed by the Enterprise SNMP Server
|
||||
# /usr/bin/braa by default (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
braa /usr/bin/braa
|
||||
|
||||
# Number of retries before braa hands a module over to the Network Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
braa_retries 3
|
||||
|
||||
# Location of the pandorafsnmp binary needed by the Enterprise SNMP Server.
|
||||
# /usr/bin/pandorafsnmp by default (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
fsnmp /usr/bin/pandorafsnmp
|
||||
|
||||
# Default group id for new agents created with Pandora FMS Data Server
|
||||
# If this token is enabled and Agent is setup with a fixed group, server settings will override agent settings
|
||||
# If this token is disabled and group is not provided in the agent, or provided group doesn't exist, agent data
|
||||
# will be dropped. We use the Group ID #10 (Unknown) for a "valid" default value, please change as your own decision.
|
||||
|
||||
autocreate_group 10
|
||||
|
||||
# Works like autocreate_group, except the name of the group is specified (instead of its id). Do not set both.
|
||||
#autocreate_group_name Unknown
|
||||
|
||||
# If set to 1, new agents will be added to the group specified by autocreate_group (the group specified by the agent will be used as fallback).
|
||||
# If set to 0, new agents will be added to the group specified by the agent (the group specified by autocreate_group will be used as fallback).
|
||||
|
||||
autocreate_group_force 0
|
||||
|
||||
# Set to 1 if want to autocreate agents with Pandora FMS Data Server,
|
||||
# set to 0 to disable (for security purposes, for example).
|
||||
|
||||
autocreate 1
|
||||
|
||||
# max_log_size: Specify max size of Pandora FMS server log file (1MB by default). If
|
||||
# log file grows above this limit, is renamed to "pandora_server.log.0".
|
||||
|
||||
max_log_size 1048576
|
||||
|
||||
# max_log_generation: Specify max generation count (between 1 and 9) of Pandora FMS server log files.
|
||||
max_log_generation 1
|
||||
|
||||
# max_queue_files (5000 by default)
|
||||
# When server have more than max_queue_files in incoming directory, skips the read
|
||||
# the directory to avoid filesystem overhead.
|
||||
|
||||
max_queue_files 5000
|
||||
|
||||
# If set to 0, the timestamp attribute in XML data files will be ignored and the system time will be used instead.
|
||||
|
||||
# use_xml_timestamp 1
|
||||
|
||||
# Pandora FMS will autorestart itself each XXX seconds, use this if you experience problems with
|
||||
# shutting down threads, or other stability problems.
|
||||
|
||||
# auto_restart 86400
|
||||
|
||||
# Pandora FMS will restart after restart_delay seconds on critical errors.
|
||||
|
||||
restart 1
|
||||
restart_delay 60
|
||||
|
||||
# More information about GIS Setup in /usr/share/pandora_server/util/gis.README
|
||||
# Flag to activate GIS (positional information for agents and maps)
|
||||
# by default it is desactivated
|
||||
|
||||
#activate_gis 0
|
||||
|
||||
# Radius of error in meters to consider two gis locations as the same location.
|
||||
|
||||
#location_error 50
|
||||
|
||||
# Recon reverse geolocation file. This is the database with the reverse
|
||||
# geolocation information using MaxMind GPL GeoLiteCity.dat format).
|
||||
# Comment it to disable the IP geolocation on agent creation.
|
||||
|
||||
#recon_reverse_geolocation_file /usr/local/share/GeoIP/GeoIPCity.dat
|
||||
|
||||
# Radius (in meters) of the circle in where the agents will be place randomly
|
||||
# when finded by a recon task. Center of the circle is guessed
|
||||
# by geolocating the IP.
|
||||
|
||||
#recon_location_scatter_radius 1000
|
||||
|
||||
# Pandora Server self-monitoring (embedded agent) (by default enabled)
|
||||
|
||||
self_monitoring 1
|
||||
|
||||
# Self monitoring interval (in seconds).
|
||||
self_monitoring_interval 300
|
||||
|
||||
# Update parent from the agent xml
|
||||
|
||||
update_parent 1
|
||||
|
||||
#
|
||||
#
|
||||
# This enable realtime reverse geocoding using Google Maps public api.
|
||||
# This requires internet access, and could have performance penalties processing GIS
|
||||
# information due the connetion needed to resolve all GIS input.
|
||||
# NOTE: If you dont pay the service to google, they will ban your IP in a few days.
|
||||
|
||||
# google_maps_description 1
|
||||
|
||||
# This enable realtime reverse geocoding using Openstreet Maps public api.
|
||||
# This requires internet access, and could have performance penalties processing GIS
|
||||
# information due the connetion needed to resolve all GIS input.
|
||||
# You can alter the code to use a local (your own) openstreet maps server.
|
||||
|
||||
# openstreetmaps_description 1
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Web Server/Goliat.
|
||||
|
||||
webserver 0
|
||||
|
||||
# Number of threads for the Web Server/Goliat.
|
||||
|
||||
web_threads 1
|
||||
|
||||
# Default timeout (in seconds) for web modules.
|
||||
|
||||
web_timeout 60
|
||||
|
||||
# Uncomment to perform web checks with LWP instead of CURL.
|
||||
#web_engine lwp
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Inventory Server.
|
||||
|
||||
inventoryserver 0
|
||||
|
||||
# Number of threads for the Inventory Server.
|
||||
|
||||
inventory_threads 1
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Export Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
exportserver 0
|
||||
|
||||
# Number of threads for the Export Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
export_threads 1
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Event Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
eventserver 0
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Correlation Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
correlationserver 0
|
||||
|
||||
# Time in seconds to re-evaluate correlation alerts pool (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
correlation_threshold 30
|
||||
|
||||
# Correlated alerts, event window in seconds (3600 by default) (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
event_window 3600
|
||||
|
||||
# Correlated Alerts, log window in seconds (3600 by default) (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
log_window 3600
|
||||
|
||||
# Pre-load windows on start with available information. (PANDORA FMS ENTERPRISE ONLY).
|
||||
#preload_windows 0
|
||||
|
||||
# Correlated Alerts, group cache ttl (in seconds). Set to 0 to disable. (PANDORA FMS ENTERPRISE ONLY).
|
||||
#event_server_cache_ttl 10
|
||||
|
||||
# Log retrieving, items per request. (High values could make elasticsearch crash)
|
||||
#elastic_query_size 10
|
||||
|
||||
# If set to 1, an alert will not be fired if the last event it generated is in 'in-process' status.
|
||||
|
||||
event_inhibit_alerts 0
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Enterprise ICMP Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
# You need nmap 5.20 or higher in order to use this !
|
||||
|
||||
icmpserver 0
|
||||
|
||||
# Number of threads for the Enterprise ICMP Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
icmp_threads 4
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Enterprise SNMP Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
# Check braa tool is running and operative.
|
||||
|
||||
snmpserver 0
|
||||
|
||||
# Number of threads for the Enterprise SNMP Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
snmp_threads 4
|
||||
|
||||
# Block size for block producer/consumer servers, that is, the number of modules
|
||||
# per block (15 by default) (PANDORA FMS ENTERPRISE ONLY).
|
||||
|
||||
block_size 20
|
||||
|
||||
# If set to 1, process XML data files in a stack instead of a queue. 0 by default.
|
||||
# WARNING: Incremental modules will not work properly if dataserver_lifo is set to 1!!!
|
||||
|
||||
dataserver_lifo 0
|
||||
|
||||
# If set to 1, the policy manager is enabled and the server is listening the policy queue.
|
||||
# 0 by default (PANDORA FMS ENTERPRISE ONLY)
|
||||
|
||||
policy_manager 1
|
||||
|
||||
# If set to 1, new events validate older event for the same module. This will
|
||||
# affect the performance of the server. This was the "normal behaviour" on previous (4.x) versions.
|
||||
# disable only if you really know what you are doing !!.
|
||||
|
||||
event_auto_validation 1
|
||||
|
||||
# If defined, events generated by Pandora FMS will be written to the specified text file.
|
||||
#event_file /var/log/pandora/pandora_events.txt
|
||||
|
||||
# Set the maximum number of traps that will be processed from a single source in a
|
||||
# configured time interval.
|
||||
snmp_storm_protection 25
|
||||
|
||||
# Time interval for snmp_storm protection (in seconds).
|
||||
snmp_storm_timeout 10
|
||||
|
||||
# Silenced time period in seconds, when trap storm is detected
|
||||
snmp_storm_silence_period 300
|
||||
|
||||
# Default texts for some events. The macros _module_ and _data_ are supported.
|
||||
#text_going_down_normal Module '_module_' is going to NORMAL (_data_)
|
||||
#text_going_up_critical Module '_module_' is going to CRITICAL (_data_)
|
||||
#text_going_up_warning Module '_module_' is going to WARNING (_data_)
|
||||
#text_going_down_warning Module '_module_' is going to WARNING (_data_)
|
||||
#text_going_unknown Module '_module_' is going to UNKNOWN
|
||||
|
||||
# Events older that the specified time (in seconds) will be auto-validated. Set to 0 to disable this feature.
|
||||
event_expiry_time 0
|
||||
|
||||
# Only events more recent than the specified time window (in seconds) will be auto-validated. This value must
|
||||
# be greater than event_expiry_time.
|
||||
#event_expiry_window 86400
|
||||
|
||||
# If set to 1, SNMP modules run by the Network Server will be claimed back by
|
||||
# the SNMP Enterprise Server when pandora_db is run.
|
||||
claim_back_snmp_modules 1
|
||||
|
||||
# If set to 1 asynchronous modules that do not receive data for twice their
|
||||
# interval will become normal. Set to 0 to disable.
|
||||
async_recovery 1
|
||||
|
||||
# Console API credentials.
|
||||
# Required for some features like the module graphs macros.
|
||||
|
||||
# console_api_url: Api URL (http://localhost/pandora_console/include/api.php by default)
|
||||
# console_api_url http://localhost/pandora_console/include/api.php
|
||||
|
||||
# console_api_pass: Api pass
|
||||
# console_api_pass 1234
|
||||
|
||||
# Passphrase used to generate the key for password encryption (PANDORA FMS ENTERPRISE ONLY).
|
||||
#encryption_passphrase passphrase
|
||||
|
||||
# Enable (1) or disable (0) events related to the unknown module status.
|
||||
unknown_events 1
|
||||
|
||||
# Time interval (as a multiple of the module interval) before a module becomes unknown. Twice the module's interval by default.
|
||||
#unknown_interval 2
|
||||
|
||||
# Number of unknown modules that will be processed per iteration.
|
||||
unknown_block_size 1000
|
||||
|
||||
# Maximum executing time of an alert (in seconds)
|
||||
global_alert_timeout 15
|
||||
|
||||
# If set to 1 allows PandoraFMS Server to be configured via the web console (PANDORA FMS ENTERPRISE ONLY).
|
||||
remote_config 0
|
||||
|
||||
# Remote address to send the configuration file (PANDORA FMS ENTERPRISE ONLY).
|
||||
remote_config_address localhost
|
||||
|
||||
# Remote port to send the configuration file (PANDORA FMS ENTERPRISE ONLY).
|
||||
#remote_config_port 41121
|
||||
|
||||
# Extra options for the Tentacle client to send the configuration file (PANDORA FMS ENTERPRISE ONLY).
|
||||
#remote_config_opts
|
||||
|
||||
# Module status change events will not be generated and module alerts will not
|
||||
# be executed for the specified number of seconds since the server starts up.
|
||||
warmup_event_interval 0
|
||||
|
||||
# Modules will not become unknown (so no unknown events will be generated) and
|
||||
# keepalive modules will not be updated for the specified number of seconds
|
||||
# since the server starts up.
|
||||
warmup_unknown_interval 300
|
||||
|
||||
# Directory were additional enc files for the XML parser are located.
|
||||
enc_dir /usr/share/pandora_server/enc/
|
||||
|
||||
# The number of times dynamic_min and dynamic_max will be recalculated per dynamic_interval.
|
||||
# Go to https://pandorafms.com/manual/ for more information.
|
||||
dynamic_updates 5
|
||||
#dynamic_warning
|
||||
#dynamic_constant
|
||||
|
||||
# Periodically update unknown modules (1), instead of only once (0). Periodic
|
||||
# updates may affect server performance.
|
||||
unknown_updates 0
|
||||
|
||||
# Enable (1) or disable (0) the Pandora FMS WUX Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
wuxserver 0
|
||||
|
||||
# Host of the Selenium Grid Server.
|
||||
#wux_host localhost
|
||||
|
||||
# Port of the Selenium Grid Server.
|
||||
#wux_port 4444
|
||||
|
||||
# Maximum timeout to connect to a target web site, also for communications with a Selenium Grid server.
|
||||
#wux_webagent_timeout 15
|
||||
|
||||
# Force closing previous sessions on remote wux_host, only for Selenium Grid server 3.
|
||||
#clean_wux_sessions 1
|
||||
|
||||
# Enable (1) or disable (0) the Pandora FMS Syslog Server (PANDORA FMS ENTERPRISE ONLY) disabled by default.
|
||||
syslogserver 0
|
||||
|
||||
# Full path to syslog's output file (PANDORA FMS ENTERPRISE ONLY).
|
||||
syslog_file /var/log/messages
|
||||
|
||||
# Number of threads for the Syslog Server (PANDORA FMS ENTERPRISE ONLY).
|
||||
syslog_threads 2
|
||||
|
||||
# Maximum number of lines queued by the Syslog Server's producer on each run (PANDORA FMS ENTERPRISE ONLY).
|
||||
syslog_max 65535
|
||||
|
||||
# Sync Server
|
||||
#syncserver
|
||||
|
||||
# Port tentacle server
|
||||
#sync_port 41121
|
||||
|
||||
# Sync certificate path of the authenticating CA
|
||||
#sync_ca /home/cacert.pem
|
||||
|
||||
# Sync server certificate path
|
||||
#sync_cert /home/tentaclecert.pem
|
||||
|
||||
# Sync server certificate private key path
|
||||
#sync_key /home/tentaclekey.pem
|
||||
|
||||
# Sync number of attempts
|
||||
#sync_retries 3
|
||||
|
||||
# Sync timeout
|
||||
#sync_timeout 10
|
||||
|
||||
# Address
|
||||
# sync_address
|
||||
|
||||
# Network manager configuration server (PANDORA FMS ENTERPRISE ONLY).
|
||||
#ncmserver 0
|
||||
|
||||
# Threads for NCM server (PANDORA FMS ENTERPRISE ONLY).
|
||||
ncmserver_threads 1
|
||||
|
||||
# NCM utility to avoid Net::SSH::Expect issues in multi-threaded environments.
|
||||
ncm_ssh_utility /usr/share/pandora_server/util/ncm_ssh_extension
|
||||
|
||||
# Pandora FMS Daemon Watchdog execution interval in seconds (PANDORA FMS ENTERPRISE ONLY).
|
||||
ha_interval 30
|
||||
|
||||
# Pandora FMS Daemon Watchdog monitoring interval in seconds. Must be a multiple of ha_interval (PANDORA FMS ENTERPRISE ONLY).
|
||||
ha_monitoring_interval 60
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Alert Server.
|
||||
alertserver 0
|
||||
|
||||
# Pandora FMS Alert Server threads.
|
||||
alertserver_threads 4
|
||||
|
||||
# Generate an hourly warning event if alert execution is being delayed more than alertserver_warn seconds.
|
||||
alertserver_warn 180
|
||||
|
||||
# If set to 1, alerts are queued for the Pandora FMS Alert Server.If alertserver is set to 1, alerts are always queued.
|
||||
alertserver_queue 0
|
||||
|
||||
# Pandora FMS HA MySQL cluster splitbrain auto-recovery (PANDORA FMS ENTERPRISE ONLY)
|
||||
# IMPORTANT! Please understand and configure all settings from pandora_console/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster&tab=setup
|
||||
# before enable this feature.
|
||||
#splitbrain_autofix 0
|
||||
|
||||
# Pandora FMS HA MySQL cluster splitbrain auto-recovery settings (PANDORA FMS ENTERPRISE ONLY)
|
||||
# Maximum number of retries
|
||||
#ha_max_splitbrain_retries 2
|
||||
# Maximum number of retries to verify resync status.
|
||||
#ha_max_resync_wait_retries 3
|
||||
# Maximum number of seconds waiting while verifying resync status.
|
||||
#ha_resync_sleep 10
|
||||
|
||||
# Enable (1) or disable (0) the Tentacle Server watchdog (enabled by default).
|
||||
|
||||
tentacle_service_watchdog 1
|
||||
|
||||
# Enable (1) or disable (0) the parameter of mysql ssl certification (mysql_ssl_verify_server_cert) (enabled by default).
|
||||
|
||||
verify_mysql_ssl_cert 1
|
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.770";
|
||||
my $pandora_build = "230330";
|
||||
my $pandora_build = "230331";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -141,7 +141,7 @@ sub pandora_get_sharedconfig ($$) {
|
|||
# Netflow configuration options
|
||||
$pa_config->{"activate_netflow"} = pandora_get_tconfig_token ($dbh, 'activate_netflow', 0);
|
||||
$pa_config->{"netflow_path"} = pandora_get_tconfig_token ($dbh, 'netflow_path', '/var/spool/pandora/data_in/netflow');
|
||||
$pa_config->{"netflow_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 300);
|
||||
$pa_config->{"netflow_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 3600);
|
||||
$pa_config->{"netflow_daemon"} = pandora_get_tconfig_token ($dbh, 'netflow_daemon', '/usr/bin/nfcapd');
|
||||
|
||||
# Sflow configuration options
|
||||
|
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.770";
|
||||
my $pandora_build = "230330";
|
||||
my $pandora_build = "230331";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.770
|
||||
%define release 230330
|
||||
%define release 230331
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.770"
|
||||
PI_BUILD="230330"
|
||||
PI_BUILD="230331"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
@ -26,6 +26,7 @@ PANDORA_SERVER=/etc/init.d/pandora_server
|
|||
TENTACLE_SERVER=/etc/init.d/tentacle_serverd
|
||||
PANDORA_CFG_FILE=$PANDORA_CFG_DIR/pandora_server.conf
|
||||
PANDORA_CFG_FILE_DIST=conf/pandora_server.conf.new
|
||||
PANDORA_CFG_FILE_DIST_SEC=conf/pandora_server_sec.conf.template
|
||||
PANDORA_INIT_SCRIPT=util/pandora_server
|
||||
TENTACLE_CFG_DIR=/etc/tentacle
|
||||
TENTACLE_CFG_FILE=$TENTACLE_CFG_DIR/tentacle_server.conf
|
||||
|
@ -350,6 +351,12 @@ install () {
|
|||
chmod 770 $DESTDIR$PANDORA_CFG_FILE
|
||||
fi
|
||||
|
||||
echo "Creating sec setup directory in $PANDORA_CFG_DIR/conf.d"
|
||||
mkdir -p $DESTDIR$PANDORA_CFG_DIR/conf.d 2> /dev/null
|
||||
echo cp $PANDORA_CFG_FILE_DIST_SEC $DESTDIR$PANDORA_CFG_DIR/conf.d/
|
||||
cp $PANDORA_CFG_FILE_DIST_SEC $DESTDIR$PANDORA_CFG_DIR/conf.d/
|
||||
|
||||
|
||||
echo "Installing Pandora Server manual"
|
||||
[ -d $DESTDIR$MANDIR ] || mkdir -p $DESTDIR$MANDIR
|
||||
cp man/man1/pandora_server.1.gz $DESTDIR$MANDIR
|
||||
|
|
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.770 Build 230330";
|
||||
my $version = "7.0NG.770 Build 230331";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -217,7 +217,7 @@ sub ha_keep_pandora_running($$) {
|
|||
if ($OSNAME eq "freebsd") {
|
||||
$control_command = "status_server";
|
||||
}
|
||||
my $pid = `$Pandora_Service $control_command | awk '{print \$NF*1}' | tr -d '\.'`;
|
||||
my $pid = `$Pandora_Service $control_command | grep -v /conf.d/ | awk '{print \$NF*1}' | tr -d '\.'`;
|
||||
|
||||
if ( ($pid > 0) && ($component_last_contact > 0)) {
|
||||
# service running but not all components
|
||||
|
|
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.770 Build 230330";
|
||||
my $version = "7.0NG.770 Build 230331";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
|
|
@ -32,9 +32,11 @@ fi
|
|||
# this script to another name, editing PANDORA_HOME to the new .conf
|
||||
|
||||
export PANDORA_HOME="/etc/pandora/pandora_server.conf"
|
||||
export PANDORA_HOME_EXTRA="/etc/pandora/conf.d"
|
||||
export PANDORA_DAEMON=/usr/bin/pandora_server
|
||||
export PANDORA_HA=/usr/bin/pandora_ha
|
||||
export PID_DIR=/var/run
|
||||
declare -A SERVERS_NAMES
|
||||
|
||||
# Environment variables
|
||||
if [ -f /etc/pandora/pandora_server.env ]; then
|
||||
|
@ -94,6 +96,95 @@ function pidof_pandora_ha () {
|
|||
echo $PANDORA_PID
|
||||
}
|
||||
|
||||
function pidof_secondary_server () {
|
||||
# $1 is mandatory to check secondary server conf file
|
||||
# This sets COLUMNS to XXX chars, because if command is run
|
||||
# in a "strech" term, ps aux don't report more than COLUMNS
|
||||
# characters and this will not work.
|
||||
COLUMNS=300
|
||||
local conf_file=$1
|
||||
SEC_PANDORA_PID=`ps aux | grep "$PANDORA_DAEMON" | grep "$conf_file" | grep -v grep | tail -1 | awk '{ print $2 }'`
|
||||
echo $SEC_PANDORA_PID
|
||||
}
|
||||
|
||||
function extra_confs () {
|
||||
|
||||
# Check server name, from primary conf file.
|
||||
local primary_server_name=$(grep servername $PANDORA_HOME | grep -v '^#' | tail -1 | awk '{ print $2 }')
|
||||
[ "$primary_server_name" ] || primary_server_name=$(hostname)
|
||||
SERVERS_NAMES["$PANDORA_HOME"]=$primary_server_name
|
||||
|
||||
# Read all extra confs discarting .templates
|
||||
if [[ -d $PANDORA_HOME_EXTRA ]]; then
|
||||
local EXTRA_CONF=($(ls $PANDORA_HOME_EXTRA | grep .conf | grep -v .template))
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Return 0 if no extra confs found
|
||||
if [[ ${#EXTRA_CONF[@]} = 0 ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Loop all secondary servers confs
|
||||
for conf in ${EXTRA_CONF[@]} ; do
|
||||
tmp_server_name=$(grep servername $PANDORA_HOME_EXTRA/$conf | grep -v '^#' | tail -1 | awk '{ print $2 }')
|
||||
SERVERS_NAMES["$PANDORA_HOME_EXTRA/$conf"]=$tmp_server_name
|
||||
done
|
||||
|
||||
INCLUDE_EXTRA_CONFS=1
|
||||
}
|
||||
|
||||
function check_extra_confs () {
|
||||
[ "$1" ] || echo Error no defined conf found
|
||||
local tmp_server_name=''
|
||||
local mastery=''
|
||||
|
||||
tmp_server_name=$(grep servername $1 | grep -v '^#' | tail -1 | awk '{ print $2 }')
|
||||
# Check servername
|
||||
if [ "$tmp_server_name" == '' ]; then
|
||||
echo "Error: The config file $1 has no sever name defined, servername is mandatory for secondary servers"
|
||||
rc_exit
|
||||
fi
|
||||
|
||||
if [ "$tmp_server_name" == "$SERVERS_NAMES[$PANDORA_HOME]" ]; then
|
||||
echo "Error: The config file $1 has the same servername as the primary server, servername should be unique for secondary servers"
|
||||
rc_exit
|
||||
fi
|
||||
|
||||
# check other confs servernames (todo)
|
||||
local _count=0
|
||||
for name in ${!SERVERS_NAMES[@]}; do
|
||||
[[ ${SERVERS_NAMES[$name]} == $tmp_server_name ]] && _count=`expr $_count + 1`
|
||||
if [[ $_count -gt 1 ]] ; then
|
||||
echo "Error: The config file $1 has the same servername as the another secondary server, servername should be unique for secondary servers"
|
||||
rc_exit
|
||||
fi
|
||||
done
|
||||
|
||||
# Check mastery
|
||||
mastery=$(grep master $1 | grep -v '^#' | tail -1 | awk '{ print $2 }')
|
||||
if [[ $mastery -ne 0 ]]; then
|
||||
echo "Error: The config file $1 has the same servername master value higer than 0, master should be disable for secondary servers"
|
||||
rc_exit
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function server_status () {
|
||||
local _couter=0
|
||||
for key in ${!SERVERS_NAMES[@]}; do
|
||||
unset SEC_PID
|
||||
SEC_PID=$(pidof_secondary_server $key)
|
||||
if [ -z "$SEC_PID" ] ; then
|
||||
echo "${SERVERS_NAMES[$key]} ($key) Server is not running."
|
||||
_couter=`expr $_couter + 1`
|
||||
else
|
||||
echo "${SERVERS_NAMES[$key]} ($key) Server is running with PID: $SEC_PID."
|
||||
fi
|
||||
done
|
||||
[[ $_couter -gt 0 ]] && rc_failed 7 || rc_status -v
|
||||
}
|
||||
|
||||
# Main script
|
||||
|
||||
|
@ -104,6 +195,8 @@ then
|
|||
rc_exit
|
||||
fi
|
||||
|
||||
extra_confs # check for config files
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
PANDORA_PID=`pidof_pandora_ha`
|
||||
|
@ -166,78 +259,81 @@ case "$1" in
|
|||
if [ -z "$PANDORA_PID" ]
|
||||
then
|
||||
echo "$PANDORA_RB_PRODUCT_NAME HA is not running."
|
||||
rc_failed 7 # program is not running
|
||||
server_status
|
||||
rc_failed 7 # program is not running
|
||||
else
|
||||
echo "$PANDORA_RB_PRODUCT_NAME HA is running with PID $PANDORA_PID."
|
||||
rc_status
|
||||
server_status
|
||||
rc_status -v
|
||||
fi
|
||||
;;
|
||||
start-server)
|
||||
PANDORA_PID=`pidof_pandora`
|
||||
if [ ! -z "$PANDORA_PID" ]
|
||||
then
|
||||
echo "$PANDORA_RB_PRODUCT_NAME Server is currently running on this machine with PID ($PANDORA_PID)."
|
||||
rc_exit # running start on a service already running
|
||||
fi
|
||||
_count=0
|
||||
for key in ${!SERVERS_NAMES[@]}; do
|
||||
[[ $key != "/etc/pandora/pandora_server.conf" ]] && check_extra_confs $key
|
||||
unset SEC_PID
|
||||
SEC_PID=$(pidof_secondary_server $key)
|
||||
if [ ! -z "$SEC_PID" ] ; then
|
||||
echo "${SERVERS_NAMES[$key]} ($key) Server is currently running on this machine with PID ($SEC_PID)."
|
||||
continue
|
||||
else
|
||||
|
||||
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
|
||||
$PANDORA_DAEMON $PANDORA_HOME -D
|
||||
sleep 1
|
||||
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
|
||||
$PANDORA_DAEMON $key -D
|
||||
sleep 1
|
||||
unset SEC_PID
|
||||
SEC_PID=$(pidof_secondary_server $key)
|
||||
if [ ! -z "$SEC_PID" ] ; then
|
||||
echo "${SERVERS_NAMES[$key]} Server is now running with PID $SEC_PID"
|
||||
else
|
||||
echo "Cannot ${SERVERS_NAMES[$key]} start Server. Aborted."
|
||||
echo "Check ${SERVERS_NAMES[$key]} log files at '/var/log/pandora/pandora_server.error' & 'pandora_server.log'"
|
||||
_count=`expr $_count + 1`
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
PANDORA_PID=`pidof_pandora`
|
||||
|
||||
if [ ! -z "$PANDORA_PID" ]
|
||||
then
|
||||
echo "$PANDORA_RB_PRODUCT_NAME Server is now running with PID $PANDORA_PID"
|
||||
if [[ _count -gt 0 ]]; then
|
||||
rc_failed 7
|
||||
else
|
||||
rc_status -v
|
||||
else
|
||||
echo "Cannot start $PANDORA_RB_PRODUCT_NAME Server. Aborted."
|
||||
echo "Check $PANDORA_RB_PRODUCT_NAME log files at '/var/log/pandora/pandora_server.error & pandora_server.log'"
|
||||
rc_failed 7 # program is not running
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
stop-server)
|
||||
PANDORA_PID=`pidof_pandora`
|
||||
if [ -z "$PANDORA_PID" ]
|
||||
then
|
||||
echo "$PANDORA_RB_PRODUCT_NAME Server is not running, cannot stop it."
|
||||
rc_exit # running stop on a service already stopped or not running
|
||||
else
|
||||
echo "Stopping $PANDORA_RB_PRODUCT_NAME Server"
|
||||
kill $PANDORA_PID > /dev/null 2>&1
|
||||
COUNTER=0
|
||||
|
||||
while [ $COUNTER -lt $MAXWAIT ]
|
||||
do
|
||||
_PID=`pidof_pandora`
|
||||
if [ "$_PID" != "$PANDORA_PID" ]
|
||||
then
|
||||
COUNTER=$MAXWAIT
|
||||
fi
|
||||
COUNTER=`expr $COUNTER + 1`
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Send a KILL -9 signal to process, if it's alive after 60secs, we need
|
||||
# to be sure is really dead, and not pretending...
|
||||
if [ "$_PID" = "$PANDORA_PID" ]
|
||||
then
|
||||
kill -9 $PANDORA_PID > /dev/null 2>&1
|
||||
_couter=0
|
||||
for key in ${!SERVERS_NAMES[@]}; do
|
||||
unset PANDORA_PID
|
||||
PANDORA_PID=$(pidof_secondary_server $key)
|
||||
if [ -z "$PANDORA_PID" ] ; then
|
||||
echo "${SERVERS_NAMES[$key]} ($key) Server is not running, cannot stop it."
|
||||
else
|
||||
echo "Stopping ${SERVERS_NAMES[$key]} ($key) Server"
|
||||
kill $PANDORA_PID > /dev/null 2>&1
|
||||
COUNTER=0
|
||||
while [ $COUNTER -lt $MAXWAIT ]
|
||||
do
|
||||
_PID=$(pidof_secondary_server $key)
|
||||
if [ "$_PID" != "$PANDORA_PID" ]
|
||||
then
|
||||
COUNTER=$MAXWAIT
|
||||
fi
|
||||
COUNTER=`expr $COUNTER + 1`
|
||||
sleep 1
|
||||
done
|
||||
# Send a KILL -9 signal to process, if it's alive after 60secs, we need
|
||||
# to be sure is really dead, and not pretending...
|
||||
if [ "$_PID" = "$PANDORA_PID" ]
|
||||
then
|
||||
kill -9 $PANDORA_PID > /dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
rc_status -v
|
||||
fi
|
||||
|
||||
done
|
||||
rc_status -v
|
||||
;;
|
||||
status-server)
|
||||
PANDORA_PID=`pidof_pandora`
|
||||
if [ -z "$PANDORA_PID" ]
|
||||
then
|
||||
echo "$PANDORA_RB_PRODUCT_NAME Server is not running."
|
||||
rc_failed 7 # program is not running
|
||||
else
|
||||
echo "$PANDORA_RB_PRODUCT_NAME Server is running with PID $PANDORA_PID."
|
||||
rc_status
|
||||
fi
|
||||
server_status
|
||||
;;
|
||||
force-reload-server|restart-server)
|
||||
$0 stop-server
|
||||
|
|
Loading…
Reference in New Issue