From a39c363e0300adeb31caf481995933d5532e9fdb Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Wed, 22 Aug 2012 06:50:31 -0400
Subject: [PATCH] Bugfix: web folder protection was not re-added after deleting subdomains/aliasdomains
---
server/plugins-available/apache2_plugin.inc.php | 36 +++++++++++++++++++++++++++++-------
1 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index a861265..7aaee6f 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,23 @@
} else {
$apache_chrooted = false;
}
+
+ //* Remove the mounts
+ $log_folder = 'log';
+ if($data['old']['type'] == 'vhostsubdomain') {
+ $tmp = $app->db->queryOneRecord('SELECT `domain` 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
@@ -1585,6 +1606,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