Merge branch 'develop' of brutus.artica.lan:artica/pandorafms into develop

Former-commit-id: b271e6e740b1f0cdec273786fae3e707288e72cd
This commit is contained in:
manuel 2019-05-14 10:40:49 +02:00
commit 4497554b37
45 changed files with 147 additions and 55 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.734-190513 Version: 7.0NG.734-190514
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.734-190513" pandora_version="7.0NG.734-190514"
echo "Test if you has the tools for to make the packages." echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -42,7 +42,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.734'; use constant AGENT_VERSION => '7.0NG.734';
use constant AGENT_BUILD => '190513'; use constant AGENT_BUILD => '190514';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.734" PI_VERSION="7.0NG.734"
PI_BUILD="190513" PI_BUILD="190514"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{190513} {190514}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils; using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1 #define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.734(Build 190513)") #define PANDORA_VERSION ("7.0NG.734(Build 190514)")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.734(Build 190513))" VALUE "ProductVersion", "(7.0NG.734(Build 190514))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.734-190513 Version: 7.0NG.734-190514
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.734-190513" pandora_version="7.0NG.734-190514"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -1,4 +1,7 @@
START TRANSACTION;
START TRANSACTION;
ALTER TABLE `talert_templates` MODIFY COLUMN `type` ENUM('regex','max_min','max','min','equal','not_equal','warning','critical','onchange','unknown','always','not_normal');
DELETE FROM `tevent_response` WHERE `name` LIKE 'Create Integria IMS incident from event'; DELETE FROM `tevent_response` WHERE `name` LIKE 'Create Integria IMS incident from event';

View File

@ -1216,13 +1216,13 @@ ALTER TABLE titem MODIFY `source_data` int(10) unsigned;
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 27); INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 28);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager'; UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise'; DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '734'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '735');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
@ -2103,3 +2103,9 @@ ALTER TABLE `tnetflow_filter` DROP COLUMN `output`;
-- Update table `tuser_task` -- Update table `tuser_task`
-- ---------------------------------------------------------------------- -- ----------------------------------------------------------------------
UPDATE tuser_task set parameters = 'a:5:{i:0;a:6:{s:11:\"description\";s:28:\"Report pending to be created\";s:5:\"table\";s:7:\"treport\";s:8:\"field_id\";s:9:\"id_report\";s:10:\"field_name\";s:4:\"name\";s:4:\"type\";s:3:\"int\";s:9:\"acl_group\";s:8:\"id_group\";}i:1;a:2:{s:11:\"description\";s:46:\"Send to email addresses (separated by a comma)\";s:4:\"type\";s:4:\"text\";}i:2;a:2:{s:11:\"description\";s:7:\"Subject\";s:8:\"optional\";i:1;}i:3;a:3:{s:11:\"description\";s:7:\"Message\";s:4:\"type\";s:4:\"text\";s:8:\"optional\";i:1;}i:4;a:2:{s:11:\"description\";s:11:\"Report Type\";s:4:\"type\";s:11:\"report_type\";}}' where function_name = "cron_task_generate_report"; UPDATE tuser_task set parameters = 'a:5:{i:0;a:6:{s:11:\"description\";s:28:\"Report pending to be created\";s:5:\"table\";s:7:\"treport\";s:8:\"field_id\";s:9:\"id_report\";s:10:\"field_name\";s:4:\"name\";s:4:\"type\";s:3:\"int\";s:9:\"acl_group\";s:8:\"id_group\";}i:1;a:2:{s:11:\"description\";s:46:\"Send to email addresses (separated by a comma)\";s:4:\"type\";s:4:\"text\";}i:2;a:2:{s:11:\"description\";s:7:\"Subject\";s:8:\"optional\";i:1;}i:3;a:3:{s:11:\"description\";s:7:\"Message\";s:4:\"type\";s:4:\"text\";s:8:\"optional\";i:1;}i:4;a:2:{s:11:\"description\";s:11:\"Report Type\";s:4:\"type\";s:11:\"report_type\";}}' where function_name = "cron_task_generate_report";
-- ----------------------------------------------------------------------
-- Alter table `talert_templates`
-- ----------------------------------------------------------------------
ALTER TABLE `talert_templates` MODIFY COLUMN `type` ENUM('regex','max_min','max','min','equal','not_equal','warning','critical','onchange','unknown','always','not_normal');

View File

@ -186,6 +186,10 @@ switch ($template['type']) {
$condition = __('The alert would fire when the module is in critical status'); $condition = __('The alert would fire when the module is in critical status');
break; break;
case 'not_normal':
$condition = __('The alert would fire when the module is in not normal status');
break;
case 'unknown': case 'unknown':
$condition = __('The alert would fire when the module is in unknown status'); $condition = __('The alert would fire when the module is in unknown status');
break; break;

View File

@ -679,7 +679,7 @@ if ($step == 2) {
'type', 'type',
$type, $type,
'', '',
__('Select'), __('None'),
0, 0,
true, true,
false, false,
@ -1018,6 +1018,7 @@ var onchange_msg = <?php echo '"'.__('The alert would fire when the module value
var onchange_not = <?php echo '"'.__('The alert would fire when the module value does not change').'"'; ?>; var onchange_not = <?php echo '"'.__('The alert would fire when the module value does not change').'"'; ?>;
var unknown = <?php echo "'".__('The alert would fire when the module is in unknown status')."'"; ?>; var unknown = <?php echo "'".__('The alert would fire when the module is in unknown status')."'"; ?>;
var error_message_min_max_zero = <?php echo "'".__('The alert template cannot have the same value for min and max thresholds.')."'"; ?>; var error_message_min_max_zero = <?php echo "'".__('The alert template cannot have the same value for min and max thresholds.')."'"; ?>;
var not_normal = <?php echo "'".__('The alert would fire when the module is in not normal status')."'"; ?>;
function check_fields_step2() { function check_fields_step2() {
var correct = true; var correct = true;
@ -1174,6 +1175,13 @@ if ($step == 2) {
/* Show example */ /* Show example */
$("span#example").empty ().append (critical); $("span#example").empty ().append (critical);
break; break;
case "not_normal":
$("#template-value, #template-max, span#matches_value, #template-min").hide ();
$("#template-example").show ();
/* Show example */
$("span#example").empty ().append (not_normal);
break;
case "onchange": case "onchange":
$("#template-value, #template-max, #template-min").hide (); $("#template-value, #template-max, #template-min").hide ();
$("#template-example, span#matches_value").show (); $("#template-example, span#matches_value").show ();

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC190513'; $build_version = 'PC190514';
$pandora_version = 'v7.0NG.734'; $pandora_version = 'v7.0NG.734';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.

View File

@ -664,6 +664,7 @@ function alerts_get_alert_templates_types()
$types['unknown'] = __('Unknown status'); $types['unknown'] = __('Unknown status');
$types['onchange'] = __('On Change'); $types['onchange'] = __('On Change');
$types['always'] = __('Always'); $types['always'] = __('Always');
$types['not_normal'] = __('Not normal status');
return $types; return $types;
} }
@ -680,7 +681,7 @@ function alerts_get_alert_templates_type_name($type)
{ {
$types = alerts_get_alert_templates_types(); $types = alerts_get_alert_templates_types();
if (! isset($type[$type])) { if (!isset($types[$type])) {
return __('Unknown'); return __('Unknown');
} }

View File

@ -1646,7 +1646,7 @@ function events_get_agent(
$sql_where, $sql_where,
0, 0,
1000, 1000,
is_metaconsole(), (is_metaconsole() && $id_server) ? true : false,
false, false,
false, false,
$history $history

View File

@ -125,4 +125,35 @@ final class EventsHistory extends Item
} }
/**
* Generate a link to something related with the item.
*
* @param array $data Visual Console Item's data structure.
*
* @return mixed The link or a null value.
*
* @override Item::buildLink.
*/
protected static function buildLink(array $data)
{
// Get the linked agent and module Ids.
$linkedModule = static::extractLinkedModule($data);
$agentId = static::parseIntOr($linkedModule['agentId'], null);
$moduleId = static::parseIntOr($linkedModule['moduleId'], null);
$baseUrl = \ui_get_full_url('index.php');
return $baseUrl.'?'.http_build_query(
[
'sec' => 'eventos',
'sec2' => 'operation/events/events',
'id_agent' => $agentId,
'module_search_hidden' => $moduleId,
'event_view_hr' => (static::extractMaxTime($data) / 3600),
'status' => -1,
]
);
}
} }

View File

@ -383,22 +383,22 @@ final class Group extends Item
// Critical. // Critical.
$html .= '<div style="'.$valueStyle.'background-color: #FC4444;">'; $html .= '<div style="'.$valueStyle.'background-color: #FC4444;">';
$html .= \number_format($agentStats['critical']).'%'; $html .= \number_format($agentStats['critical'], 2).'%';
$html .= '</div>'; $html .= '</div>';
$html .= '<div style="'.$nameStyle.'">'.__('Critical').'</div>'; $html .= '<div style="'.$nameStyle.'">'.__('Critical').'</div>';
// Warning. // Warning.
$html .= '<div style="'.$valueStyle.'background-color: #f8db3f;">'; $html .= '<div style="'.$valueStyle.'background-color: #f8db3f;">';
$html .= \number_format($agentStats['warning']).'%'; $html .= \number_format($agentStats['warning'], 2).'%';
$html .= '</div>'; $html .= '</div>';
$html .= '<div style="'.$nameStyle.'">'.__('Warning').'</div>'; $html .= '<div style="'.$nameStyle.'">'.__('Warning').'</div>';
// Normal. // Normal.
$html .= '<div style="'.$valueStyle.'background-color: #84b83c;">'; $html .= '<div style="'.$valueStyle.'background-color: #84b83c;">';
$html .= \number_format($agentStats['normal']).'%'; $html .= \number_format($agentStats['normal'], 2).'%';
$html .= '</div>'; $html .= '</div>';
$html .= '<div style="'.$nameStyle.'">'.__('Normal').'</div>'; $html .= '<div style="'.$nameStyle.'">'.__('Normal').'</div>';
// Unknown. // Unknown.
$html .= '<div style="'.$valueStyle.'background-color: #9d9ea0;">'; $html .= '<div style="'.$valueStyle.'background-color: #9d9ea0;">';
$html .= \number_format($agentStats['unknown']).'%'; $html .= \number_format($agentStats['unknown'], 2).'%';
$html .= '</div>'; $html .= '</div>';
$html .= '<div style="'.$nameStyle.'">'.__('Unknown').'</div>'; $html .= '<div style="'.$nameStyle.'">'.__('Unknown').'</div>';

View File

@ -226,12 +226,8 @@ final class Percentile extends Item
); );
} }
// Cast to float.
$moduleValue = (float) $moduleValue;
// Store the module value. // Store the module value.
$data['value'] = $moduleValue; $data['value'] = (float) \number_format((float) $moduleValue, (int) $config['graph_precision'], '.', '');
$unit = \modules_get_unit($moduleId); $unit = \modules_get_unit($moduleId);
if (empty($unit) === false) { if (empty($unit) === false) {
$data['unit'] = \io_safe_output($unit); $data['unit'] = \io_safe_output($unit);

View File

@ -230,8 +230,8 @@ final class StaticGraph extends Item
if (!$isBooleanModule if (!$isBooleanModule
|| ($isBooleanModule && $showLastValueTooltip !== 'default') || ($isBooleanModule && $showLastValueTooltip !== 'default')
) { ) {
if (is_numeric($value)) { if (\is_numeric($value)) {
$imgTitle .= __('Last value: ').\remove_right_zeros($value); $imgTitle .= __('Last value: ').\remove_right_zeros(\number_format((float) $value, (int) $config['graph_precision']));
} else { } else {
$imgTitle .= __('Last value: ').$value; $imgTitle .= __('Last value: ').$value;
} }

View File

@ -72,6 +72,10 @@
/* Analog clock */ /* Analog clock */
.visual-console-item .analogic-clock {
text-align: center;
}
.visual-console-item .analogic-clock .hour-hand { .visual-console-item .analogic-clock .hour-hand {
-webkit-animation: rotate-hour 43200s infinite linear; -webkit-animation: rotate-hour 43200s infinite linear;
animation: rotate-hour 43200s infinite linear; animation: rotate-hour 43200s infinite linear;

View File

@ -1 +1 @@
{"version":3,"sources":["webpack:///main.css","webpack:///styles.css"],"names":[],"mappings":"AAAA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4BAA4B;EAC5B,0BAA0B;EAC1B,2BAA2B;AAC7B;;AAEA;EACE,kBAAkB;EAClB,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,2BAAuB;EAAvB,8BAAuB;MAAvB,2BAAuB;UAAvB,uBAAuB;EACvB,qBAAqB;EACrB,yBAAmB;MAAnB,sBAAmB;UAAnB,mBAAmB;EACnB,yBAAiB;KAAjB,sBAAiB;MAAjB,qBAAiB;UAAjB,iBAAiB;AACnB;;ACfA;EACE,wBAAwB;EACxB,0BAA2B;AAC7B;;AAEA,kBAAkB;;AAElB;EACE,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;EACtB,wBAAuB;MAAvB,qBAAuB;UAAvB,uBAAuB;EACvB,qBAAqB;EACrB,0BAAqB;MAArB,qBAAqB;EACrB,yBAAmB;MAAnB,sBAAmB;UAAnB,mBAAmB;AACrB;;AAEA;EACE,6DAA6D;EAC7D,eAAe;;EAEf,0BAA0B;EAC1B,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,wCAAwC;AAC1C;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,eAAe;AACjB;;AAEA,iBAAiB;;AAEjB;EACE,qDAA6C;UAA7C,6CAA6C;AAC/C;;AAEA;EACE,sDAA8C;UAA9C,8CAA8C;AAChD;;AAEA;EACE,oDAA4C;UAA5C,4CAA4C;AAC9C","file":"vc.main.css","sourcesContent":["#visual-console-container {\n margin: 0px auto;\n position: relative;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n background-position: center;\n}\n\n.visual-console-item {\n position: absolute;\n display: flex;\n flex-direction: initial;\n justify-items: center;\n align-items: center;\n user-select: text;\n}\n","@font-face {\n font-family: Alarm Clock;\n src: url(./alarm-clock.ttf);\n}\n\n/* Digital clock */\n\n.visual-console-item .digital-clock {\n display: flex;\n flex-direction: column;\n justify-content: center;\n justify-items: center;\n align-content: center;\n align-items: center;\n}\n\n.visual-console-item .digital-clock > span {\n font-family: \"Alarm Clock\", \"Courier New\", Courier, monospace;\n font-size: 50px;\n\n /* To improve legibility */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n text-shadow: rgba(0, 0, 0, 0.01) 0 0 1px;\n}\n\n.visual-console-item .digital-clock > span.date {\n font-size: 25px;\n}\n\n.visual-console-item .digital-clock > span.timezone {\n font-size: 25px;\n}\n\n/* Analog clock */\n\n.visual-console-item .analogic-clock .hour-hand {\n animation: rotate-hour 43200s infinite linear;\n}\n\n.visual-console-item .analogic-clock .minute-hand {\n animation: rotate-minute 3600s infinite linear;\n}\n\n.visual-console-item .analogic-clock .second-hand {\n animation: rotate-second 60s infinite linear;\n}\n"],"sourceRoot":""} {"version":3,"sources":["webpack:///main.css","webpack:///styles.css"],"names":[],"mappings":"AAAA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4BAA4B;EAC5B,wBAAwB;AAC1B;;AAEA;EACE,kBAAkB;EAClB,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,2BAAuB;EAAvB,8BAAuB;MAAvB,2BAAuB;UAAvB,uBAAuB;EACvB,qBAAqB;EACrB,yBAAmB;MAAnB,sBAAmB;UAAnB,mBAAmB;EACnB,yBAAiB;KAAjB,sBAAiB;MAAjB,qBAAiB;UAAjB,iBAAiB;AACnB;;ACdA;EACE,wBAAwB;EACxB,0BAA2B;AAC7B;;AAEA,kBAAkB;;AAElB;EACE,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;EACtB,wBAAuB;MAAvB,qBAAuB;UAAvB,uBAAuB;EACvB,qBAAqB;EACrB,0BAAqB;MAArB,qBAAqB;EACrB,yBAAmB;MAAnB,sBAAmB;UAAnB,mBAAmB;AACrB;;AAEA;EACE,6DAA6D;EAC7D,eAAe;;EAEf,0BAA0B;EAC1B,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,wCAAwC;AAC1C;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,eAAe;AACjB;;AAEA,iBAAiB;;AAEjB;EACE,kBAAkB;AACpB;;AAEA;EACE,qDAA6C;UAA7C,6CAA6C;AAC/C;;AAEA;EACE,sDAA8C;UAA9C,8CAA8C;AAChD;;AAEA;EACE,oDAA4C;UAA5C,4CAA4C;AAC9C","file":"vc.main.css","sourcesContent":["#visual-console-container {\n margin: 0px auto;\n position: relative;\n background-repeat: no-repeat;\n background-size: contain;\n}\n\n.visual-console-item {\n position: absolute;\n display: flex;\n flex-direction: initial;\n justify-items: center;\n align-items: center;\n user-select: text;\n}\n","@font-face {\n font-family: Alarm Clock;\n src: url(./alarm-clock.ttf);\n}\n\n/* Digital clock */\n\n.visual-console-item .digital-clock {\n display: flex;\n flex-direction: column;\n justify-content: center;\n justify-items: center;\n align-content: center;\n align-items: center;\n}\n\n.visual-console-item .digital-clock > span {\n font-family: \"Alarm Clock\", \"Courier New\", Courier, monospace;\n font-size: 50px;\n\n /* To improve legibility */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n text-shadow: rgba(0, 0, 0, 0.01) 0 0 1px;\n}\n\n.visual-console-item .digital-clock > span.date {\n font-size: 25px;\n}\n\n.visual-console-item .digital-clock > span.timezone {\n font-size: 25px;\n}\n\n/* Analog clock */\n\n.visual-console-item .analogic-clock {\n text-align: center;\n}\n\n.visual-console-item .analogic-clock .hour-hand {\n animation: rotate-hour 43200s infinite linear;\n}\n\n.visual-console-item .analogic-clock .minute-hand {\n animation: rotate-minute 3600s infinite linear;\n}\n\n.visual-console-item .analogic-clock .second-hand {\n animation: rotate-second 60s infinite linear;\n}\n"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -129,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.734'; $version = '7.0NG.734';
$build = '190513'; $build = '190514';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -448,7 +448,7 @@ CREATE TABLE IF NOT EXISTS `talert_templates` (
`field13` text NOT NULL, `field13` text NOT NULL,
`field14` text NOT NULL, `field14` text NOT NULL,
`field15` text NOT NULL, `field15` text NOT NULL,
`type` ENUM ('regex', 'max_min', 'max', 'min', 'equal', 'not_equal', 'warning', 'critical', 'onchange', 'unknown', 'always'), `type` ENUM ('regex', 'max_min', 'max', 'min', 'equal', 'not_equal', 'warning', 'critical', 'onchange', 'unknown', 'always', 'not_normal'),
`value` varchar(255) default '', `value` varchar(255) default '',
`matches_value` tinyint(1) default 0, `matches_value` tinyint(1) default 0,
`max_value` double(18,2) default NULL, `max_value` double(18,2) default NULL,

View File

@ -114,10 +114,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''), ('custom_report_front_header', ''),
('custom_report_front_footer', ''), ('custom_report_front_footer', ''),
('MR', 27), ('MR', 28),
('identification_reminder', 1), ('identification_reminder', 1),
('identification_reminder_timestamp', 0), ('identification_reminder_timestamp', 0),
('current_package_enterprise', '734'), ('current_package_enterprise', '735'),
('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'), ('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'),
('custom_docs_logo', 'default_docs.png'), ('custom_docs_logo', 'default_docs.png'),
('custom_support_logo', 'default_support.png'), ('custom_support_logo', 'default_support.png'),

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.734-190513 Version: 7.0NG.734-190514
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.734-190513" pandora_version="7.0NG.734-190514"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -45,7 +45,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.734"; my $pandora_version = "7.0NG.734";
my $pandora_build = "190513"; my $pandora_build = "190514";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -391,7 +391,11 @@ sub pandora_generate_alerts ($$$$$$$$;$$$) {
} }
# Get enabled alerts associated with this module # Get enabled alerts associated with this module
my $alert_type_filter = defined ($alert_type) ? " AND type = '$alert_type'" : ''; my $alert_type_filter = '';
if (defined($alert_type)) {
# not_normal includes unknown!
$alert_type_filter = $alert_type eq 'unknown' ? " AND (type = 'unknown' OR type = 'not_normal')" : " AND type = '$alert_type'";
}
my @alerts = get_db_rows ($dbh, ' my @alerts = get_db_rows ($dbh, '
SELECT talert_template_modules.id as id_template_module, SELECT talert_template_modules.id as id_template_module,
talert_template_modules.*, talert_templates.* talert_template_modules.*, talert_templates.*
@ -566,6 +570,7 @@ sub pandora_evaluate_alert ($$$$$$$;$$$) {
return $status if ($last_status != 1 && $alert->{'type'} eq 'critical'); return $status if ($last_status != 1 && $alert->{'type'} eq 'critical');
return $status if ($last_status != 2 && $alert->{'type'} eq 'warning'); return $status if ($last_status != 2 && $alert->{'type'} eq 'warning');
return $status if ($last_status != 3 && $alert->{'type'} eq 'unknown'); return $status if ($last_status != 3 && $alert->{'type'} eq 'unknown');
return $status if ($last_status == 0 && $alert->{'type'} eq 'not_normal');
} }
# Event alert # Event alert
else { else {

View File

@ -32,7 +32,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.734"; my $pandora_version = "7.0NG.734";
my $pandora_build = "190513"; my $pandora_build = "190514";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.734 %define version 7.0NG.734
%define release 190513 %define release 190514
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -9,7 +9,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.734" PI_VERSION="7.0NG.734"
PI_BUILD="190513" PI_BUILD="190514"
MODE=$1 MODE=$1
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.734 PS190513"; my $version = "7.0NG.734 PS190514";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv; Encode::Locale::decode_argv;
# version: define current version # version: define current version
my $version = "7.0NG.734 PS190513"; my $version = "7.0NG.734 PS190514";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);

View File

@ -218,6 +218,12 @@ export default class Clock extends Item<ClockProps> {
const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation const { width, height } = this.getElementSize(); // Destructuring assigment: http://es6-features.org/#ObjectMatchingShorthandNotation
// Calculate font size to adapt the font to the item size.
const baseTimeFontSize = 20; // Per 100px of width.
const dateFontSizeMultiplier = 0.5;
const dateFontSize =
(baseTimeFontSize * dateFontSizeMultiplier * width) / 100;
const div = document.createElement("div"); const div = document.createElement("div");
div.className = "analogic-clock"; div.className = "analogic-clock";
div.style.width = `${width}px`; div.style.width = `${width}px`;
@ -468,6 +474,16 @@ export default class Clock extends Item<ClockProps> {
// Add the clock to the container // Add the clock to the container
div.append(svg); div.append(svg);
// Date.
if (this.props.clockFormat === "datetime") {
const dateElem: HTMLSpanElement = document.createElement("span");
dateElem.className = "date";
dateElem.textContent = humanDate(date, "default");
dateElem.style.fontSize = `${dateFontSize}px`;
if (this.props.color) dateElem.style.color = this.props.color;
div.append(dateElem);
}
return div; return div;
} }

View File

@ -35,6 +35,10 @@
/* Analog clock */ /* Analog clock */
.visual-console-item .analogic-clock {
text-align: center;
}
.visual-console-item .analogic-clock .hour-hand { .visual-console-item .analogic-clock .hour-hand {
animation: rotate-hour 43200s infinite linear; animation: rotate-hour 43200s infinite linear;
} }

View File

@ -115,6 +115,15 @@ export default class Percentile extends Item<PercentileProps> {
// SVG container. // SVG container.
const svg = document.createElementNS(svgNS, "svg"); const svg = document.createElementNS(svgNS, "svg");
var formatValue;
if (this.props.value != null) {
if (Intl) {
formatValue = Intl.NumberFormat("en-EN").format(this.props.value);
} else {
formatValue = this.props.value;
}
}
switch (this.props.percentileType) { switch (this.props.percentileType) {
case "progress-bar": case "progress-bar":
{ {
@ -142,9 +151,11 @@ export default class Percentile extends Item<PercentileProps> {
text.setAttribute("fill", colors.text); text.setAttribute("fill", colors.text);
if (this.props.valueType === "value") { if (this.props.valueType === "value") {
text.style.fontSize = "6pt";
text.textContent = this.props.unit text.textContent = this.props.unit
? `${this.props.value} ${this.props.unit}` ? `${formatValue} ${this.props.unit}`
: `${this.props.value}`; : `${formatValue}`;
} else { } else {
text.textContent = `${progress}%`; text.textContent = `${progress}%`;
} }
@ -215,21 +226,24 @@ export default class Percentile extends Item<PercentileProps> {
text.setAttribute("font-weight", "bold"); text.setAttribute("font-weight", "bold");
text.setAttribute("fill", colors.text); text.setAttribute("fill", colors.text);
if (this.props.valueType === "value") { if (this.props.valueType === "value" && this.props.value != null) {
// Show value and unit in 1 (no unit) or 2 lines. // Show value and unit in 1 (no unit) or 2 lines.
if (this.props.unit && this.props.unit.length > 0) { if (this.props.unit && this.props.unit.length > 0) {
const value = document.createElementNS(svgNS, "tspan"); const value = document.createElementNS(svgNS, "tspan");
value.setAttribute("x", "0"); value.setAttribute("x", "0");
value.setAttribute("dy", "1em"); value.setAttribute("dy", "1em");
value.textContent = `${this.props.value}`; value.textContent = `${formatValue}`;
value.style.fontSize = "8pt";
const unit = document.createElementNS(svgNS, "tspan"); const unit = document.createElementNS(svgNS, "tspan");
unit.setAttribute("x", "0"); unit.setAttribute("x", "0");
unit.setAttribute("dy", "1em"); unit.setAttribute("dy", "1em");
unit.textContent = `${this.props.unit}`; unit.textContent = `${this.props.unit}`;
unit.style.fontSize = "8pt";
text.append(value, unit); text.append(value, unit);
text.setAttribute("transform", "translate(50 33)"); text.setAttribute("transform", "translate(50 33)");
} else { } else {
text.textContent = `${this.props.value}`; text.textContent = `${formatValue}`;
text.style.fontSize = "8pt";
text.setAttribute("transform", "translate(50 50)"); text.setAttribute("transform", "translate(50 50)");
} }
} else { } else {