From 81d79a79e4b29e9314b64b2e4c49b48ae8319767 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 11 Oct 2011 08:50:45 -0400
Subject: [PATCH] - WebDAV Users: show only domains that run on Apache (because nginx does not have full WebDAV support).

---
 server/plugins-available/nginx_plugin.inc.php |  129 +++++++++++++++++-------------------------
 1 files changed, 53 insertions(+), 76 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index dc16638..640f070 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -827,10 +827,8 @@
 		//* Create basic http auth for website statistics
 		$tpl->setVar('stats_auth_passwd_file', $data['new']['document_root']."/.htpasswd_stats");
 		
-		// include file for basic http auth
-		$basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.auth');
-		@touch($basic_auth_file);
-		$tpl->setVar('include_basic_auth', 'include '.$basic_auth_file.';');
+		// Create basic http auth for other directories
+		$tpl->setLoop('basic_auth_locations', $this->_create_web_folder_auth_configuration($data['new']));
 
 		$vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['new']['domain'].'.vhost');
 		//* Make a backup copy of vhost file
@@ -952,9 +950,9 @@
 
 		//* Check if this is a chrooted setup
 		if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
-			$apache_chrooted = true;
+			$nginx_chrooted = true;
 		} else {
-			$apache_chrooted = false;
+			$nginx_chrooted = false;
 		}
 
 		if($data['old']['type'] != 'vhost' && $data['old']['parent_domain_id'] > 0) {
@@ -969,26 +967,34 @@
 
 		} else {
 			//* This is a website
-			// Deleting the vhost file, symlink and the data directory
-			$vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost');
-			unlink($vhost_symlink);
-			$app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file,LOGLEVEL_DEBUG);
-
+			// Deleting the vhost file, symlink and the data directory			
 			$vhost_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.vhost');
+			
+			$vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/'.$data['old']['domain'].'.vhost');
+			if(is_link($vhost_symlink)){
+				unlink($vhost_symlink);
+				$app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file,LOGLEVEL_DEBUG);
+			}
+			$vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/900-'.$data['old']['domain'].'.vhost');
+			if(is_link($vhost_symlink)){
+				unlink($vhost_symlink);
+				$app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file,LOGLEVEL_DEBUG);
+			}
+			$vhost_symlink = escapeshellcmd($web_config['nginx_vhost_conf_enabled_dir'].'/100-'.$data['old']['domain'].'.vhost');
+			if(is_link($vhost_symlink)){
+				unlink($vhost_symlink);
+				$app->log('Removing symlink: '.$vhost_symlink.'->'.$vhost_file,LOGLEVEL_DEBUG);
+			}
+			
 			unlink($vhost_file);
 			$app->log('Removing vhost file: '.$vhost_file,LOGLEVEL_DEBUG);
-			
-			// delete file for basic http authentication
-			$basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$data['old']['domain'].'.auth');
-			unlink($basic_auth_file);
-			$app->log('Removing auth file: '.$basic_auth_file,LOGLEVEL_DEBUG);
 
 			$docroot = escapeshellcmd($data['old']['document_root']);
 			if($docroot != '' && !stristr($docroot,'..')) exec('rm -rf '.$docroot);
 
-
-			//remove the php fastgi starter script if available
+			//remove the php fastgi starter script and PHP-FPM pool definition if available
 			if ($data['old']['php'] == 'fast-cgi') {
+				$this->php_fpm_pool_delete($data,$web_config);
 				$fastcgi_starter_path = str_replace('[system_user]',$data['old']['system_user'],$web_config['fastcgi_starter_path']);
 				if (is_dir($fastcgi_starter_path)) {
 					exec('rm -rf '.$fastcgi_starter_path);
@@ -1037,16 +1043,14 @@
 			$command = 'userdel';
 			$command .= ' '.$data['old']['system_user'];
 			exec($command);
-			if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
+			if($nginx_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
 			
 			//* Remove the awstats configuration file
 			if($data['old']['stats_type'] == 'awstats') {
 				$this->awstats_delete($data,$web_config);
 			}
 			
-			if($data['old']['php'] == 'fast-cgi') {
-				$this->php_fpm_pool_delete($data,$web_config);
-			}
+			$app->services->restartServiceDelayed('httpd','reload');
 
 		}
 	}
@@ -1147,28 +1151,9 @@
 		}
 		*/
 		
-		//* Create the domain.auth file which is included in the vhost configuration file
-		$app->uses('getconf');
-		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-		$basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth');
-		$app->load('tpl');
-		$tpl = new tpl();
-		$tpl->newTemplate('nginx_http_authentication.auth.master');
-		$website_auth_locations = $app->db->queryAllRecords("SELECT * FROM web_folder WHERE active = 'y' AND parent_domain_id = ".intval($website['domain_id']));
-		$basic_auth_locations = array();
-		if(is_array($website_auth_locations) && !empty($website_auth_locations)){
-			foreach($website_auth_locations as $website_auth_location){
-				if(substr($website_auth_location['path'],0,1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],1);
-				if(substr($website_auth_location['path'],-1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],0,-1);
-				$basic_auth_locations[] = array('htpasswd_location' => $website_auth_location['path'],
-												'htpasswd_path' => $website['document_root'].'/web/'.$website_auth_location['path']);
-			}
-		}
-		$tpl->setLoop('basic_auth_locations', $basic_auth_locations);
-		file_put_contents($basic_auth_file,$tpl->grab());
-		$app->log('Writing the http basic authentication file: '.$basic_auth_file,LOGLEVEL_DEBUG);
-		unset($tpl);
-		$app->services->restartServiceDelayed('httpd','reload');
+		// write basic auth configuration to vhost file because nginx does not support .htaccess
+		$webdata['new'] = $webdata['old'] = $website;
+		$this->update('web_domain_update', $webdata);
 	}
 	
 	//* Remove .htpasswd file, when folder protection is removed
@@ -1203,28 +1188,9 @@
 			$app->log('Removed file '.$folder_path.'.htpasswd',LOGLEVEL_DEBUG);
 		}
 		
-		//* Create the domain.auth file which is included in the vhost configuration file
-		$app->uses('getconf');
-		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-		$basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth');
-		$app->load('tpl');
-		$tpl = new tpl();
-		$tpl->newTemplate('nginx_http_authentication.auth.master');
-		$website_auth_locations = $app->db->queryAllRecords("SELECT * FROM web_folder WHERE active = 'y' AND parent_domain_id = ".intval($website['domain_id']));
-		$basic_auth_locations = array();
-		if(is_array($website_auth_locations) && !empty($website_auth_locations)){
-			foreach($website_auth_locations as $website_auth_location){
-				if(substr($website_auth_location['path'],0,1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],1);
-				if(substr($website_auth_location['path'],-1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],0,-1);
-				$basic_auth_locations[] = array('htpasswd_location' => $website_auth_location['path'],
-												'htpasswd_path' => $website['document_root'].'/web/'.$website_auth_location['path']);
-			}
-		}
-		$tpl->setLoop('basic_auth_locations', $basic_auth_locations);
-		file_put_contents($basic_auth_file,$tpl->grab());
-		$app->log('Writing the http basic authentication file: '.$basic_auth_file,LOGLEVEL_DEBUG);
-		unset($tpl);
-		$app->services->restartServiceDelayed('httpd','reload');
+		// write basic auth configuration to vhost file because nginx does not support .htaccess
+		$webdata['new'] = $webdata['old'] = $website;
+		$this->update('web_domain_update', $webdata);
 	}
 	
 	//* Update folder protection, when path has been changed
@@ -1283,28 +1249,39 @@
 		
 		}
 
+		// write basic auth configuration to vhost file because nginx does not support .htaccess
+		$webdata['new'] = $webdata['old'] = $website;
+		$this->update('web_domain_update', $webdata);
+	}
+	
+	function _create_web_folder_auth_configuration($website){
+		global $app, $conf;
 		//* Create the domain.auth file which is included in the vhost configuration file
 		$app->uses('getconf');
 		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 		$basic_auth_file = escapeshellcmd($web_config['nginx_vhost_conf_dir'].'/'.$website['domain'].'.auth');
-		$app->load('tpl');
-		$tpl = new tpl();
-		$tpl->newTemplate('nginx_http_authentication.auth.master');
+		//$app->load('tpl');
+		//$tpl = new tpl();
+		//$tpl->newTemplate('nginx_http_authentication.auth.master');
 		$website_auth_locations = $app->db->queryAllRecords("SELECT * FROM web_folder WHERE active = 'y' AND parent_domain_id = ".intval($website['domain_id']));
 		$basic_auth_locations = array();
 		if(is_array($website_auth_locations) && !empty($website_auth_locations)){
 			foreach($website_auth_locations as $website_auth_location){
 				if(substr($website_auth_location['path'],0,1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],1);
 				if(substr($website_auth_location['path'],-1) == '/') $website_auth_location['path'] = substr($website_auth_location['path'],0,-1);
-				$basic_auth_locations[] = array('htpasswd_location' => $website_auth_location['path'],
+				if($website_auth_location['path'] != ''){
+					$website_auth_location['path'] .= '/';
+				}
+				$basic_auth_locations[] = array('htpasswd_location' => '/'.$website_auth_location['path'],
 												'htpasswd_path' => $website['document_root'].'/web/'.$website_auth_location['path']);
 			}
 		}
-		$tpl->setLoop('basic_auth_locations', $basic_auth_locations);
-		file_put_contents($basic_auth_file,$tpl->grab());
-		$app->log('Writing the http basic authentication file: '.$basic_auth_file,LOGLEVEL_DEBUG);
-		unset($tpl);
-		$app->services->restartServiceDelayed('httpd','reload');		
+		return $basic_auth_locations;
+		//$tpl->setLoop('basic_auth_locations', $basic_auth_locations);
+		//file_put_contents($basic_auth_file,$tpl->grab());
+		//$app->log('Writing the http basic authentication file: '.$basic_auth_file,LOGLEVEL_DEBUG);
+		//unset($tpl);
+		//$app->services->restartServiceDelayed('httpd','reload');
 	}
 	
 	//* Update the awstats configuration file
@@ -1445,7 +1422,7 @@
 		
 		$pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']);
 		if(substr($pool_dir,-1) != '/') $pool_dir .= '/';
-		$pool_name = 'web'.$data['new']['domain_id'];
+		$pool_name = 'web'.$data['old']['domain_id'];
 		
 		if ( @is_file($pool_dir.$pool_name.'.conf') ) {
 			unlink($pool_dir.$pool_name.'.conf');

--
Gitblit v1.9.1