tbrehm
2012-11-30 7a870917d669f4f54edf67b380f66ff2993c2c29
Fixed: FS#2541 - Mount bind /log in fstab doesn't change when the site domain change
2 files modified
34 ■■■■ changed files
server/plugins-available/apache2_plugin.inc.php 17 ●●●● patch | view | raw | blame | history
server/plugins-available/nginx_plugin.inc.php 17 ●●●● patch | view | raw | blame | history
server/plugins-available/apache2_plugin.inc.php
@@ -440,6 +440,11 @@
            if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
            //* Change the log mount
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
            $app->system->removeLine('/etc/fstab',$fstab_line);
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nobootwait    0 0';
            $app->system->replaceLine('/etc/fstab',$fstab_line,$fstab_line,1,1);
        }
@@ -469,19 +474,23 @@
        if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
            if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']);
            if(is_link($data['old']['document_root'].'/'.$log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$log_folder);
            //* remove old log mount
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
            $app->system->removeLine('/etc/fstab',$fstab_line);
        }
        
        //* Create the log dir if nescessary and mount it
        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_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) {
            if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder);
            if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']);
            $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);
            exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder));
            //* add mountpoint to fstab
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind    0 0';
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nobootwait    0 0';
            $app->system->replaceLine('/etc/fstab',$fstab_line,$fstab_line,1,1);
        }
        
@@ -1524,7 +1533,7 @@
        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';
        $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
        $app->system->removeLine('/etc/fstab',$fstab_line);
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['parent_domain_id'] > 0) {
server/plugins-available/nginx_plugin.inc.php
@@ -454,6 +454,11 @@
            if($nginx_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);
            //* Change the log mount
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
            $app->system->removeLine('/etc/fstab',$fstab_line);
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nobootwait    0 0';
            $app->system->replaceLine('/etc/fstab',$fstab_line,$fstab_line,1,1);
        }
@@ -483,19 +488,23 @@
        if($this->action == 'update' && $data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain']) {
            if(is_dir('/var/log/ispconfig/httpd/'.$data['old']['domain'])) exec('rm -rf /var/log/ispconfig/httpd/'.$data['old']['domain']);
            if(is_link($data['old']['document_root'].'/'.$log_folder)) $app->system->unlink($data['old']['document_root'].'/'.$log_folder);
            //* remove old log mount
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
            $app->system->removeLine('/etc/fstab',$fstab_line);
        }
        
        //* Create the log dir if nescessary and mount it
        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_dir($data['new']['document_root'].'/'.$log_folder) || !is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain']) || is_link($data['new']['document_root'].'/'.$log_folder)) {
            if(is_link($data['new']['document_root'].'/'.$log_folder)) unlink($data['new']['document_root'].'/'.$log_folder);
            if(!is_dir('/var/log/ispconfig/httpd/'.$data['new']['domain'])) exec('mkdir -p /var/log/ispconfig/httpd/'.$data['new']['domain']);
            $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);
            exec('mount --bind '.escapeshellarg('/var/log/ispconfig/httpd/'.$data['new']['domain']).' '.escapeshellarg($data['new']['document_root'].'/'.$log_folder));
            //* add mountpoint to fstab
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind    0 0';
            $fstab_line = '/var/log/ispconfig/httpd/'.$data['new']['domain'].' '.$data['new']['document_root'].'/'.$log_folder.'    none    bind,nobootwait    0 0';
            $app->system->replaceLine('/etc/fstab',$fstab_line,$fstab_line,1,1);
        }
        
@@ -1593,7 +1602,7 @@
        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';
        $fstab_line = '/var/log/ispconfig/httpd/'.$data['old']['domain'].' '.$data['old']['document_root'].'/'.$log_folder.'    none    bind';
        $app->system->removeLine('/etc/fstab',$fstab_line);
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['parent_domain_id'] > 0) {