From b48a0b43066844fd15a51187fcf4fae45c13b3d6 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Fri, 4 Sep 2015 13:55:02 +0200
Subject: [PATCH] allow empty backup-dir (to disable backups on a server, just
 empty the backup-dir)

---
 interface/web/admin/form/server_config.tform.php  | 4 +---
 server/lib/classes/cron.d/500-backup.inc.php      | 2 +-
 server/lib/classes/cron.d/500-backup_mail.inc.php | 2 +-
 server/plugins-available/backup_plugin.inc.php    | 9 +++++++--
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 6b00e183c3..988620894a 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -169,9 +169,7 @@ $form["tabs"]['server'] = array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '/var/backup',
-			'validators' => array(	0 => array('type' => 'NOTEMPTY',
-										'errmsg' => 'backup_dir_error_empty'),
-									1 => array ( 	'type' => 'REGEX',
+			'validators' => array(	0 => array ( 	'type' => 'REGEX',
 										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
 										'errmsg'=> 'backup_dir_error_regex'),
 			),
diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index e196cb5f89..fcf4095c38 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -52,7 +52,7 @@ class cronjob_backup extends cronjob {
 
 		$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
 		$global_config = $app->getconf->get_global_config('sites');
-		$backup_dir = $server_config['backup_dir'];
+		$backup_dir = trim($server_config['backup_dir']);
 		$backup_mode = $server_config['backup_mode'];
 		if($backup_mode == '') $backup_mode = 'userzip';
 
diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php
index 6e718b89b3..028935065d 100644
--- a/server/lib/classes/cron.d/500-backup_mail.inc.php
+++ b/server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -54,7 +54,7 @@ class cronjob_backup_mail extends cronjob {
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
 		$global_config = $app->getconf->get_global_config('sites');
 		
-		$backup_dir = $server_config['backup_dir'];
+		$backup_dir = trim($server_config['backup_dir']);
 		$backup_dir_permissions =0750;
 
 		$backup_mode = $server_config['backup_mode'];
diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php
index cb9911de26..50fa81c1f3 100644
--- a/server/plugins-available/backup_plugin.inc.php
+++ b/server/plugins-available/backup_plugin.inc.php
@@ -71,7 +71,9 @@ class backup_plugin {
 
 			$web = $app->dbmaster->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $backup['parent_domain_id']);
 			$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-			$backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id'];
+			$backup_dir = trim($server_config['backup_dir']);
+			if($backup_dir == '') return;
+			$backup_dir .= '/web'.$web['domain_id'];
 			
 			$backup_dir_is_ready = true;
             //* mount backup directory, if necessary
@@ -178,7 +180,10 @@ class backup_plugin {
 			$app->uses('ini_parser,file,getconf');
 	
 			$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-			$backup_dir = $server_config['backup_dir'];
+			$backup_dir = trim($server_config['backup_dir']);
+
+            if($backup_dir == '') return;
+
 			$backup_dir_is_ready = true;
 	
 			//* mount backup directory, if necessary
-- 
GitLab