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