From dc679e382b6f60405861ae888c1b560c5117f0e8 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Fri, 26 Jun 2015 12:00:42 -0400
Subject: [PATCH] - added fuser calls to unmount directoriies more securely

---
 server/plugins-available/apache2_plugin.inc.php |    4 ++++
 server/plugins-available/nginx_plugin.inc.php   |    4 ++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 6eabdd8..2b2dba6 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -594,6 +594,7 @@
 				}
 				
 				//* Unmount the old log directory bfore we move the log dir
+				exec('fuser -km '.escapeshellcmd($old_dir.'/log'));
 				exec('umount '.escapeshellcmd($old_dir.'/log'));
 
 				//* Create new base directory, if it does not exist yet
@@ -676,6 +677,7 @@
 			$app->system->removeLine('/etc/fstab', $fstab_line);
 
 			//* Unmount log directory
+			exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
 			exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
 		}
 
@@ -1900,10 +1902,12 @@
 			if(is_array($log_folders) && !empty($log_folders)){
 				foreach($log_folders as $log_folder){
 					//if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
+					exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 					exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 				}
 			} else {
 				//if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
+				exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 				exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 			}
 		}
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index d3eb706..afde548 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -475,6 +475,7 @@
 				}
 				
 				//* Unmount the old log directory bfore we move the log dir
+				exec('fuser -km '.escapeshellcmd($old_dir.'/log'));
 				exec('umount '.escapeshellcmd($old_dir.'/log'));
 
 				//* Create new base directory, if it does not exist yet
@@ -557,6 +558,7 @@
 			$app->system->removeLine('/etc/fstab', $fstab_line);
 
 			//* Unmount log directory
+			exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
 			exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$old_log_folder));
 		}
 
@@ -1880,10 +1882,12 @@
 			if(is_array($log_folders) && !empty($log_folders)){
 				foreach($log_folders as $log_folder){
 					//if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
+					exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 					exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 				}
 			} else {
 				//if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
+				exec('fuser -km '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 				exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
 			}
 		}

--
Gitblit v1.9.1