From ea60e4be71580425e24041e07166b0e0aadee682 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Gonz=C3=A1lez?= <jose.gonzalez@pandorafms.com>
Date: Thu, 16 Jun 2022 11:14:00 +0200
Subject: [PATCH 1/6] Added database changes

---
 pandora_console/extras/mr/55.sql |  9 +++++++++
 pandora_console/pandoradb.sql    | 12 ++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/pandora_console/extras/mr/55.sql b/pandora_console/extras/mr/55.sql
index f53133c456..4542d76b80 100644
--- a/pandora_console/extras/mr/55.sql
+++ b/pandora_console/extras/mr/55.sql
@@ -4,4 +4,13 @@ ALTER TABLE `tservice` ADD COLUMN `enable_sunburst` tinyint(1) NOT NULL default
 
 ALTER TABLE `tdashboard` MODIFY `name` TEXT NOT NULL DEFAULT '';
 
+ALTER TABLE `tevent_alert` ADD COLUMN `field1_recovery` text DEFAULT '' AFTER `recovery_notify`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field4_recovery` text DEFAULT '' AFTER `field3_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` text DEFAULT '' AFTER `field4_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` text DEFAULT '' AFTER `field5_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` text DEFAULT '' AFTER `field6_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` text DEFAULT '' AFTER `field7_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field0_recovery` text DEFAULT '' AFTER `field8_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` text DEFAULT '' AFTER `field9_recovery`;
+
 COMMIT;
diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql
index ebd940c749..0634f10555 100644
--- a/pandora_console/pandoradb.sql
+++ b/pandora_console/pandoradb.sql
@@ -3016,8 +3016,16 @@ CREATE TABLE IF NOT EXISTS `tevent_alert` (
   `saturday` TINYINT DEFAULT 1,
   `sunday` TINYINT DEFAULT 1,
   `recovery_notify` TINYINT DEFAULT 0,
-  `field2_recovery` TEXT ,
-  `field3_recovery` TEXT,
+  `field1_recovery` TEXT DEFAULT '',
+  `field2_recovery` TEXT DEFAULT '',
+  `field3_recovery` TEXT DEFAULT '',
+  `field4_recovery` TEXT DEFAULT '',
+  `field5_recovery` TEXT DEFAULT '',
+  `field6_recovery` TEXT DEFAULT '',
+  `field7_recovery` TEXT DEFAULT '',
+  `field8_recovery` TEXT DEFAULT '',
+  `field9_recovery` TEXT DEFAULT '',
+  `field10_recovery` TEXT DEFAULT '',
   `id_group` MEDIUMINT UNSIGNED NULL DEFAULT 0,
   `internal_counter` INT DEFAULT 0,
   `last_fired` BIGINT NOT NULL DEFAULT 0,

From bad033550227191db570d05193b18eee4bb8706b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Gonz=C3=A1lez?= <jose.gonzalez@pandorafms.com>
Date: Thu, 16 Jun 2022 11:14:29 +0200
Subject: [PATCH 2/6] Changed styles

---
 pandora_console/include/styles/alert.css | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pandora_console/include/styles/alert.css b/pandora_console/include/styles/alert.css
index 15f8cb367e..74820af632 100644
--- a/pandora_console/include/styles/alert.css
+++ b/pandora_console/include/styles/alert.css
@@ -94,6 +94,7 @@ form#advanced_filters_alert textarea {
   flex: 1 1 auto;
   height: 5em;
   min-height: 5em;
+  width: 2em;
 }
 
 form#advanced_filters_alert ul li label img {

From 6d70353254c58d82b804c918a479c7006fdb462d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Gonz=C3=A1lez?=
 <79-jose.gonzalez@users.noreply.brutus.artica.es>
Date: Thu, 16 Jun 2022 16:09:05 +0000
Subject: [PATCH 3/6] Fix mistake

---
 pandora_console/extras/mr/55.sql | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pandora_console/extras/mr/55.sql b/pandora_console/extras/mr/55.sql
index b9c87d8af7..b006649dd8 100644
--- a/pandora_console/extras/mr/55.sql
+++ b/pandora_console/extras/mr/55.sql
@@ -44,7 +44,7 @@ ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` text DEFAULT '' AFTER `f
 ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` text DEFAULT '' AFTER `field5_recovery`;
 ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` text DEFAULT '' AFTER `field6_recovery`;
 ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` text DEFAULT '' AFTER `field7_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field0_recovery` text DEFAULT '' AFTER `field8_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field9_recovery` text DEFAULT '' AFTER `field8_recovery`;
 ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` text DEFAULT '' AFTER `field9_recovery`;
 
 SET @st_oum763 = (SELECT IF(

From 93b9e6142e7e320bc93d0aed4c49f2b603cf5c2a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Gonz=C3=A1lez?= <jose.gonzalez@pandorafms.com>
Date: Fri, 17 Jun 2022 09:00:35 +0200
Subject: [PATCH 4/6] DB Changes #8912

---
 pandora_console/extras/mr/55.sql | 16 ++++++++--------
 pandora_console/pandoradb.sql    | 20 ++++++++++----------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/pandora_console/extras/mr/55.sql b/pandora_console/extras/mr/55.sql
index b9c87d8af7..882b822f88 100644
--- a/pandora_console/extras/mr/55.sql
+++ b/pandora_console/extras/mr/55.sql
@@ -38,14 +38,14 @@ ALTER TABLE `tbackup` MODIFY COLUMN `id_user` VARCHAR(255) DEFAULT '';
 ALTER TABLE `tservice` ADD COLUMN `enable_sunburst` tinyint(1) NOT NULL default 0;
 ALTER TABLE `tdashboard` MODIFY `name` TEXT NOT NULL DEFAULT '';
 
-ALTER TABLE `tevent_alert` ADD COLUMN `field1_recovery` text DEFAULT '' AFTER `recovery_notify`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field4_recovery` text DEFAULT '' AFTER `field3_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` text DEFAULT '' AFTER `field4_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` text DEFAULT '' AFTER `field5_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` text DEFAULT '' AFTER `field6_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` text DEFAULT '' AFTER `field7_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field0_recovery` text DEFAULT '' AFTER `field8_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` text DEFAULT '' AFTER `field9_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field1_recovery` TEXT AFTER `recovery_notify`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field4_recovery` TEXT AFTER `field3_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` TEXT AFTER `field4_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` TEXT AFTER `field5_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` TEXT AFTER `field6_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` TEXT AFTER `field7_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field9_recovery` TEXT AFTER `field8_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` TEXT AFTER `field9_recovery`;
 
 SET @st_oum763 = (SELECT IF(
     (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tautoconfig' AND table_schema = DATABASE() AND column_name = 'disabled') > 0,
diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql
index 37c58a0d4a..2fff33a003 100644
--- a/pandora_console/pandoradb.sql
+++ b/pandora_console/pandoradb.sql
@@ -3016,16 +3016,16 @@ CREATE TABLE IF NOT EXISTS `tevent_alert` (
   `saturday` TINYINT DEFAULT 1,
   `sunday` TINYINT DEFAULT 1,
   `recovery_notify` TINYINT DEFAULT 0,
-  `field1_recovery` TEXT DEFAULT '',
-  `field2_recovery` TEXT DEFAULT '',
-  `field3_recovery` TEXT DEFAULT '',
-  `field4_recovery` TEXT DEFAULT '',
-  `field5_recovery` TEXT DEFAULT '',
-  `field6_recovery` TEXT DEFAULT '',
-  `field7_recovery` TEXT DEFAULT '',
-  `field8_recovery` TEXT DEFAULT '',
-  `field9_recovery` TEXT DEFAULT '',
-  `field10_recovery` TEXT DEFAULT '',
+  `field1_recovery` TEXT,
+  `field2_recovery` TEXT,
+  `field3_recovery` TEXT,
+  `field4_recovery` TEXT,
+  `field5_recovery` TEXT,
+  `field6_recovery` TEXT,
+  `field7_recovery` TEXT,
+  `field8_recovery` TEXT,
+  `field9_recovery` TEXT,
+  `field10_recovery` TEXT,
   `id_group` MEDIUMINT UNSIGNED NULL DEFAULT 0,
   `internal_counter` INT DEFAULT 0,
   `last_fired` BIGINT NOT NULL DEFAULT 0,

From 7edd4335666ed87eac1225f2909d6f226c933d25 Mon Sep 17 00:00:00 2001
From: Ramon Novoa <ramon.novoa@pandorafms.com>
Date: Fri, 17 Jun 2022 10:21:06 +0200
Subject: [PATCH 5/6] Add recovery support for correlation alerts.

---
 pandora_server/lib/PandoraFMS/Core.pm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm
index acc4d83546..b33d0f95da 100644
--- a/pandora_server/lib/PandoraFMS/Core.pm
+++ b/pandora_server/lib/PandoraFMS/Core.pm
@@ -506,7 +506,7 @@ B<Returns>:
 ##########################################################################
 sub pandora_evaluate_alert ($$$$$$$;$$$$) {
 	my ($pa_config, $agent, $data, $last_status, $alert, $utimestamp, $dbh,
-	  $last_data_value, $correlatedItems, $event, $log) = @_;
+	  $last_data_value, $correlated_items, $event, $log) = @_;
 	
 	if (defined ($agent)) {
 		logger ($pa_config, "Evaluating alert '" . safe_output($alert->{'name'}) . "' for agent '" . safe_output ($agent->{'nombre'}) . "'.", 10);
@@ -604,13 +604,16 @@ sub pandora_evaluate_alert ($$$$$$$;$$$$) {
 			
 			# Cease on valid data
 			$status = 3;
-			
+		
+			# Unlike module alerts, correlated alerts recover when they cease!
+			$status = 4 if ($alert->{'recovery_notify'} == 1 && !defined($alert->{'id_template_module'}));
+
 			# Always reset
 			($alert->{'internal_counter'}, $alert->{'times_fired'}) = (0, 0);
 		}
 		
 		# Recover takes precedence over cease
-		$status = 4 if ($alert->{'recovery_notify'} == 1);
+		$status = 4 if ($alert->{'recovery_notify'} == 1 && defined ($alert->{'id_template_module'}));
 		
 	}
 	elsif ($utimestamp > $limit_utimestamp && $alert->{'internal_counter'} > 0) {
@@ -691,7 +694,7 @@ sub pandora_evaluate_alert ($$$$$$$;$$$$) {
 				$pa_config,
 				$dbh,
 				$alert,
-				$correlatedItems,
+				$correlated_items,
 				$event,
 				$log
 			]

From 036505fa68918f622a9ec2adfabf4f67dd3d6612 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Gonz=C3=A1lez?= <jose.gonzalez@pandorafms.com>
Date: Tue, 21 Jun 2022 09:38:13 +0200
Subject: [PATCH 6/6] Fix DB issue

---
 pandora_console/extras/mr/55.sql | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/pandora_console/extras/mr/55.sql b/pandora_console/extras/mr/55.sql
index b006649dd8..882b822f88 100644
--- a/pandora_console/extras/mr/55.sql
+++ b/pandora_console/extras/mr/55.sql
@@ -38,14 +38,14 @@ ALTER TABLE `tbackup` MODIFY COLUMN `id_user` VARCHAR(255) DEFAULT '';
 ALTER TABLE `tservice` ADD COLUMN `enable_sunburst` tinyint(1) NOT NULL default 0;
 ALTER TABLE `tdashboard` MODIFY `name` TEXT NOT NULL DEFAULT '';
 
-ALTER TABLE `tevent_alert` ADD COLUMN `field1_recovery` text DEFAULT '' AFTER `recovery_notify`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field4_recovery` text DEFAULT '' AFTER `field3_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` text DEFAULT '' AFTER `field4_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` text DEFAULT '' AFTER `field5_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` text DEFAULT '' AFTER `field6_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` text DEFAULT '' AFTER `field7_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field9_recovery` text DEFAULT '' AFTER `field8_recovery`;
-ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` text DEFAULT '' AFTER `field9_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field1_recovery` TEXT AFTER `recovery_notify`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field4_recovery` TEXT AFTER `field3_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field5_recovery` TEXT AFTER `field4_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field6_recovery` TEXT AFTER `field5_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field7_recovery` TEXT AFTER `field6_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field8_recovery` TEXT AFTER `field7_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field9_recovery` TEXT AFTER `field8_recovery`;
+ALTER TABLE `tevent_alert` ADD COLUMN `field10_recovery` TEXT AFTER `field9_recovery`;
 
 SET @st_oum763 = (SELECT IF(
     (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tautoconfig' AND table_schema = DATABASE() AND column_name = 'disabled') > 0,