From 5720a59824953dd0fde12e850ce9bd769a3ab3d8 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Wed, 13 Feb 2013 11:39:06 -0500
Subject: [PATCH] - Fixed FS#2639 - App Installer: Apps not deleted from ISPConfig if website is deleted. -Fixed FS#2672 - Rename website - APS instance domain must be renamed as well.

---
 server/plugins-available/nginx_plugin.inc.php |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index fdc3d43..53f82cd 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -466,7 +466,7 @@
 				exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir);
 
 				//* Change the home directory and group of the website user
-				$command = 'usermod';
+				$command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' && usermod';
 				$command .= ' --home '.escapeshellcmd($data['new']['document_root']);
 				$command .= ' --gid '.escapeshellcmd($data['new']['system_group']);
 				$command .= ' '.escapeshellcmd($data['new']['system_user']);
@@ -1623,7 +1623,7 @@
 		$app->uses('system');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		
-		$app->system->web_folder_protection($data['old']['document_root'],false);
+		if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') $app->system->web_folder_protection($data['old']['document_root'],false);
 
 		//* Check if this is a chrooted setup
 		if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
@@ -1644,7 +1644,7 @@
             unset($tmp);
 		}
         
-		exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
+		if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
 		
 		//* remove mountpoint from fstab
 		$fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
@@ -1817,8 +1817,8 @@
             
             if($data['old']['type'] == 'vhost') {
                 //delete the web user
-                $command = 'userdel';
-                $command .= ' '.$data['old']['system_user'];
+                $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' && userdel';
+                $command .= ' '.escapeshellcmd($data['old']['system_user']);
                 exec($command);
                 if($nginx_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
                 
@@ -2328,6 +2328,15 @@
 		}
 	}
 	
+	private function nginx_replace($matches){
+		$location = 'location'.($matches[1] != '' ? ' '.$matches[1] : '').' '.$matches[2].' '.$matches[3];
+		if($matches[4] == '##merge##' || $matches[7] == '##merge##') $location .= ' ##merge##';
+		$location .= "\n";
+		$location .= $matches[5]."\n";
+		$location .= $matches[6];
+		return $location;
+	}
+	
 	private function nginx_merge_locations($vhost_conf){
 
 		$lines = explode("\n", $vhost_conf);
@@ -2337,6 +2346,7 @@
 			$linecount = sizeof($lines);
 			for($h=0;$h<$linecount;$h++){
 				$lines[$h] = rtrim($lines[$h]);
+				/*
 				if(substr(ltrim($lines[$h]), 0, 8) == 'location' && strpos($lines[$h], '{') !== false && strpos($lines[$h], ';') !== false){
 					$lines[$h] = str_replace("{", "{\n", $lines[$h]);
 					$lines[$h] = str_replace(";", ";\n", $lines[$h]);
@@ -2352,6 +2362,9 @@
 						$lines[$h] = substr($lines[$h],0,strpos($lines[$h], '{')).' ##merge##'.substr($lines[$h],strpos($lines[$h], '{')+1);
 					}
 				}
+				*/
+				$pattern = '/^[^\S\n]*location[^\S\n]+(?:(.+)[^\S\n]+)?(.+)[^\S\n]*(\{)[^\S\n]*(##merge##)?[^\S\n]*(.+)[^\S\n]*(\})[^\S\n]*(##merge##)?[^\S\n]*$/';
+				$lines[$h] = preg_replace_callback($pattern, array($this, 'nginx_replace') ,$lines[$h]);
 			}
 		}
 		$vhost_conf = implode("\n", $lines);

--
Gitblit v1.9.1