From 600d2c320eefc2ad6f651b980f2c981b185bcc25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jorge=20Mu=C3=B1oz?= <jorge@weeklys.org>
Date: Tue, 18 Jan 2022 18:51:23 +0000
Subject: [PATCH] Fix check of borg utility not performed on slave server

---
 interface/web/admin/server_config_edit.php        | 15 ++++++++++++++-
 .../lib/classes/cron.d/100-monitor_backup.inc.php |  9 +++++----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php
index 29384ea941..32aa270893 100644
--- a/interface/web/admin/server_config_edit.php
+++ b/interface/web/admin/server_config_edit.php
@@ -64,7 +64,20 @@ class page_action extends tform_actions {
 			unset($app->tform->formDef["tabs"]["vlogger"]);
 		}
 		//Check if borg is installed
-		if (!$app->system->is_installed('borg')) {
+		$is_borg_installed = false;
+		if($this->id != $conf['server_id']) {
+			$mon = $app->db->queryOneRecord('SELECT `data` FROM `monitor_data` WHERE `server_id` = ? AND `type` = ? ORDER BY `created` DESC', $this->id, 'backup_utils');
+			if($mon) {
+				$missing_utils = unserialize($mon['data']);
+				if($missing_utils) {
+					$missing_utils = $missing_utils['missing_utils'];
+					$is_borg_installed = ! in_array('borg', $missing_utils);
+				}
+			}
+		} else {
+			$is_borg_installed = $app->system->is_installed('borg');
+		}
+		if ( ! $is_borg_installed) {
 			$app->tpl->setVar('missing_utils', 'BorgBackup');
 		}
 		parent::onShow();
diff --git a/server/lib/classes/cron.d/100-monitor_backup.inc.php b/server/lib/classes/cron.d/100-monitor_backup.inc.php
index 40f5362082..b90290d7c3 100644
--- a/server/lib/classes/cron.d/100-monitor_backup.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_backup.inc.php
@@ -63,7 +63,8 @@ class cronjob_monitor_backup extends cronjob {
 		$type = 'backup_utils';
 
 		$missing_utils = array();
-		$compressors_list = array(
+		$util_list = array(
+			'borg',
 			'gzip',
 			'gunzip',
 			'zip',
@@ -77,9 +78,9 @@ class cronjob_monitor_backup extends cronjob {
 			'7z',
 			'rar',
 		);
-		foreach ($compressors_list as $compressor) {
-			if (!$app->system->is_installed($compressor)) {
-				$missing_utils[] = $compressor;
+		foreach ($util_list as $util) {
+			if (!$app->system->is_installed($util)) {
+				$missing_utils[] = $util;
 			}
 		}
 
-- 
GitLab