From b889edb33e4a09cc1f65d2fb9ad9f9ea16b1eae9 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 04 Sep 2012 11:42:42 -0400
Subject: [PATCH] - Ported changes from Apache plugin to nginx plugin. - Fixed errors in system.inc.php-

---
 server/plugins-available/apache2_plugin.inc.php |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index a861265..c3e9cf3 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -328,8 +328,12 @@
         $web_folder = 'web';
         $log_folder = 'log';
         if($data['new']['type'] == 'vhostsubdomain') {
+            $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['new']['parent_domain_id']));
+            $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['new']['domain']);
+            if($subdomain_host == '') $subdomain_host = 'web'.$data['new']['domain_id'];
             $web_folder = $data['new']['web_folder'];
-            $log_folder .= '_web' . $data['new']['domain_id'];
+            $log_folder .= '/' . $subdomain_host;
+            unset($tmp);
         }
 
 		// Create group and user, if not exist
@@ -471,7 +475,7 @@
         if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']);
 		if(!is_dir($data['new']['document_root'].'/'.$log_folder) || is_link($data['new']['document_root'].'/'.$log_folder)) {
 			if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder);
-			$app->system->mkdir($data['new']['document_root'].'/'.$log_folder);
+			$app->system->mkdirpath($data['new']['document_root'].'/'.$log_folder);
 			$app->system->chown($data['new']['document_root'].'/'.$log_folder,'root');
 			$app->system->chgrp($data['new']['document_root'].'/'.$log_folder,'root');
 			$app->system->chmod($data['new']['document_root'].'/'.$log_folder,0755);
@@ -647,7 +651,7 @@
 				$app->system->chmod($data['new']['document_root'].'/tmp',0777);
 			
 				// Set Log directory to 755 to make the logs accessible by the FTP user
-				if(realpath($data['new']['document_root'].'/'.$log_folder) == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
+				if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
 					$app->system->chmod($data['new']['document_root'].'/'.$log_folder,0755);
 				}
 				
@@ -678,7 +682,7 @@
 				$app->system->chgrp($data['new']['document_root'],'root');
 				$app->system->chown($data['new']['document_root'].'/cgi-bin',$username);
 				$app->system->chgrp($data['new']['document_root'].'/cgi-bin',$groupname);
-				if(realpath($data['new']['document_root'].'/'.$log_folder) == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
+				if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
 					$app->system->chown($data['new']['document_root'].'/'.$log_folder,'root',false);
 					$app->system->chgrp($data['new']['document_root'].'/'.$log_folder,$groupname,false);
 				}
@@ -710,7 +714,7 @@
 				$app->system->chmod($data['new']['document_root'].'/tmp',0777);
 				
 				// Set Log directory to 755 to make the logs accessible by the FTP user
-				if(realpath($data['new']['document_root'].'/'.$log_folder) == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
+				if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
 					$app->system->chmod($data['new']['document_root'].'/'.$log_folder,0755);
 				}
                 
@@ -718,7 +722,7 @@
 				$app->system->chgrp($data['new']['document_root'],'root');
 				$app->system->chown($data['new']['document_root'].'/cgi-bin',$username);
 				$app->system->chgrp($data['new']['document_root'].'/cgi-bin',$groupname);
-				if(realpath($data['new']['document_root'].'/'.$log_folder) == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
+				if(realpath($data['new']['document_root'].'/'.$log_folder . '/error.log') == '/var/log/ispconfig/httpd/'.$data['new']['domain'].'/error.log') {
 					$app->system->chown($data['new']['document_root'].'/'.$log_folder,'root',false);
 					$app->system->chgrp($data['new']['document_root'].'/'.$log_folder,$groupname,false);
 				}
@@ -1448,7 +1452,7 @@
 		$app->uses('system');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		
-		$app->system->web_folder_protection($data['new']['document_root'],false);
+		$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')) {
@@ -1456,6 +1460,24 @@
 		} else {
 			$apache_chrooted = false;
 		}
+		
+		//* Remove the mounts
+		$log_folder = 'log';
+        $web_folder = '';
+        if($data['old']['type'] == 'vhostsubdomain') {
+            $tmp = $app->db->queryOneRecord('SELECT `domain`,`document_root` FROM web_domain WHERE domain_id = '.intval($data['old']['parent_domain_id']));
+            $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['old']['domain']);
+            if($subdomain_host == '') $subdomain_host = 'web'.$data['old']['domain_id'];
+            $web_folder = $data['old']['web_folder'];
+            $log_folder .= '/' . $subdomain_host;
+            unset($tmp);
+		}
+        
+		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    0 0';
+		$app->system->removeLine('/etc/fstab',$fstab_line);
 
 		if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['parent_domain_id'] > 0) {
 			//* This is a alias domain or subdomain, so we have to update the website instead
@@ -1491,9 +1513,12 @@
 			$app->system->unlink($vhost_file);
 			$app->log('Removing vhost file: '.$vhost_file,LOGLEVEL_DEBUG);
             
-            if($data['old']['type'] == 'vhost') {
+            if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') {
                 $docroot = escapeshellcmd($data['old']['document_root']);
-                if($docroot != '' && !stristr($docroot,'..')) exec('rm -rf '.$docroot);
+                if($docroot != '' && !stristr($docroot,'..')) {
+                    if($data['old']['type'] == 'vhost') exec('rm -rf '.$docroot);
+                    elseif(!stristr($data['old']['web_folder'], '..')) exec('rm -rf '.$docroot.'/'.$web_folder);
+                }
 			
                 //remove the php fastgi starter script if available
                 if ($data['old']['php'] == 'fast-cgi') {
@@ -1554,8 +1579,6 @@
                     }
                 }
                 // end removing symlinks
-            } else {
-                // vhost subdomain
             }
 
             // Delete the log file directory
@@ -1577,6 +1600,10 @@
                 $this->awstats_delete($data,$web_config);
             }
 			
+			if($data['old']['type'] == 'vhostsubdomain') {
+				$app->system->web_folder_protection($parent_web_document_root,true);
+			}
+			
 			if($apache_chrooted) {
 				$app->services->restartServiceDelayed('httpd','restart');
 			} else {
@@ -1585,6 +1612,7 @@
 			}
 
 		}
+        if($data['old']['type'] != 'vhost') $app->system->web_folder_protection($data['old']['document_root'],true);
 	}
 
 	//* This function is called when a IP on the server is inserted, updated or deleted

--
Gitblit v1.9.1