cfoe
2012-08-31 ebc41d2bed365692c35ccb99e26f51a9f3ebfa15
server/plugins-available/apache2_plugin.inc.php
@@ -651,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);
            }
            
@@ -682,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);
            }
@@ -714,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);
            }
                
@@ -722,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);
            }
@@ -1452,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')) {
@@ -1460,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
@@ -1495,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') {
@@ -1558,8 +1579,6 @@
                    }
                }
                // end removing symlinks
            } else {
                // vhost subdomain
            }
            // Delete the log file directory
@@ -1581,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 {
@@ -1589,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