ftimme
2013-06-08 0ee99a07a3df0aed83371dff193ee752b928b7b7
server/plugins-available/apache2_plugin.inc.php
@@ -100,7 +100,7 @@
      $app->uses('getconf');
      $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
      if ($web_config['CA_path']!='' && !file_exists($web_config['CA_path'].'/openssl.cnf'))
         $app->log("CA path error, file does not exist:".$web_config['CA_path'].'/openssl.conf',LOGLEVEL_ERROR);
         $app->log("CA path error, file does not exist:".$web_config['CA_path'].'/openssl.cnf',LOGLEVEL_ERROR);
      
      //* Only vhosts can have a ssl cert
      if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain") return;
@@ -462,7 +462,7 @@
                exec('chown --recursive --from='.escapeshellcmd($data['old']['system_user']).':'.escapeshellcmd($data['old']['system_group']).' '.escapeshellcmd($data['new']['system_user']).':'.escapeshellcmd($data['new']['system_group']).' '.$new_dir);
                //* Change the home directory and group of the website user
                $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' && usermod';
                $command = 'killall -u '.escapeshellcmd($data['new']['system_user']).' ; usermod';
                $command .= ' --home '.escapeshellcmd($data['new']['document_root']);
                $command .= ' --gid '.escapeshellcmd($data['new']['system_group']);
                $command .= ' '.escapeshellcmd($data['new']['system_user']).' 2>/dev/null';
@@ -651,8 +651,8 @@
         exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path);
      }  // end copy error docs
      // Set the quota for the user
      if($username != '' && $app->system->is_user($username)) {
      // Set the quota for the user, but only for vhosts, not vhostsubdomains
      if($username != '' && $app->system->is_user($username) && $data['new']['type'] == 'vhost') {
         if($data['new']['hd_quota'] > 0) {
            $blocks_soft = $data['new']['hd_quota'] * 1024;
            $blocks_hard = $blocks_soft + 1024;
@@ -673,6 +673,9 @@
            $this->_exec('chown root:root '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder);
         }
      }
      //* add the Apache user to the client group if this is a vhost and security level is set to high, no matter if this is an insert or update and regardless of set_folder_permissions_on_update
      if($data['new']['type'] == 'vhost' && $web_config['security_level'] == 20) $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user']));
      //* If the security level is set to high
      if(($this->action == 'insert' && $data['new']['type'] == 'vhost') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhost')) {
@@ -716,9 +719,6 @@
               $app->system->server_conf['group_datei'] = $tmp_groupfile;
               unset($tmp_groupfile);
            }
            //* add the Apache user to the client group
            $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user']));
            
            //* Chown all default directories
            $app->system->chown($data['new']['document_root'],'root');
@@ -823,6 +823,8 @@
         $data['new']['custom_php_ini'] .= "\nopen_basedir = '".$data['new']['php_open_basedir']."'\n";
      }
      
      $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
      if(trim($data['new']['fastcgi_php_version']) != ''){
         list($custom_fastcgi_php_name, $custom_fastcgi_php_executable, $custom_fastcgi_php_ini_dir) = explode(':', trim($data['new']['fastcgi_php_version']));
         if(is_file($custom_fastcgi_php_ini_dir)) $custom_fastcgi_php_ini_dir = dirname($custom_fastcgi_php_ini_dir);
@@ -832,7 +834,7 @@
      //* Create custom php.ini
      if(trim($data['new']['custom_php_ini']) != '') {
         $has_custom_php_ini = true;
         if(!is_dir($custom_php_ini_dir)) $app->system->mkdir($custom_php_ini_dir);
         if(!is_dir($custom_php_ini_dir)) $app->system->mkdirpath($custom_php_ini_dir);
         $php_ini_content = '';
         if($data['new']['php'] == 'mod') {
            $master_php_ini_path = $web_config['php_ini_path_apache'];
@@ -1114,7 +1116,6 @@
       */
      if ($data['new']['php'] == 'fast-cgi') {
         $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
         $fastcgi_starter_path = str_replace('[system_user]',$data['new']['system_user'],$fastcgi_config['fastcgi_starter_path']);
         $fastcgi_starter_path = str_replace('[client_id]',$client_id,$fastcgi_starter_path);
@@ -1183,7 +1184,6 @@
      } else {
         //remove the php fastgi starter script if available
         if ($data['old']['php'] == 'fast-cgi') {
                $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
                $fastcgi_starter_path = str_replace('[system_user]',$data['old']['system_user'],$fastcgi_config['fastcgi_starter_path']);
                $fastcgi_starter_path = str_replace('[client_id]',$client_id,$fastcgi_starter_path);
                if($data['old']['type'] == 'vhost') {
@@ -1329,9 +1329,15 @@
      if($data['new']['ssl_domain'] != '' && $data['new']['ssl'] == 'y' && @is_file($crt_file) && @is_file($key_file) && (@filesize($crt_file)>0)  && (@filesize($key_file)>0)) {
         $tmp_vhost_arr = array('ip_address' => $data['new']['ip_address'], 'ssl_enabled' => 1, 'port' => '443');
         if(count($rewrite_rules) > 0)  $tmp_vhost_arr = $tmp_vhost_arr + array('redirects' => $rewrite_rules);
         if(count($alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $alias_seo_redirects);
         $ipv4_ssl_alias_seo_redirects = $alias_seo_redirects;
         if(is_array($ipv4_ssl_alias_seo_redirects) && !empty($ipv4_ssl_alias_seo_redirects)){
            for($i=0;$i<count($ipv4_ssl_alias_seo_redirects);$i++){
               $ipv4_ssl_alias_seo_redirects[$i]['ssl_enabled'] = 1;
            }
         }
         if(count($ipv4_ssl_alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $ipv4_ssl_alias_seo_redirects);
         $vhosts[] = $tmp_vhost_arr;
         unset($tmp_vhost_arr);
         unset($tmp_vhost_arr, $ipv4_ssl_alias_seo_redirects);
         $app->log('Enable SSL for: '.$domain,LOGLEVEL_DEBUG);
      }
      
@@ -1359,9 +1365,15 @@
         if($data['new']['ssl_domain'] != '' && $data['new']['ssl'] == 'y' && @is_file($crt_file) && @is_file($key_file) && (@filesize($crt_file)>0)  && (@filesize($key_file)>0)) {
            $tmp_vhost_arr = array('ip_address' => '['.$data['new']['ipv6_address'].']', 'ssl_enabled' => 1, 'port' => '443');
            if(count($rewrite_rules) > 0)  $tmp_vhost_arr = $tmp_vhost_arr + array('redirects' => $rewrite_rules);
            if(count($alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $alias_seo_redirects);
            $ipv6_ssl_alias_seo_redirects = $alias_seo_redirects;
            if(is_array($ipv6_ssl_alias_seo_redirects) && !empty($ipv6_ssl_alias_seo_redirects)){
               for($i=0;$i<count($ipv6_ssl_alias_seo_redirects);$i++){
                  $ipv6_ssl_alias_seo_redirects[$i]['ssl_enabled'] = 1;
               }
            }
            if(count($ipv6_ssl_alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $ipv6_ssl_alias_seo_redirects);
            $vhosts[] = $tmp_vhost_arr;
            unset($tmp_vhost_arr);
            unset($tmp_vhost_arr, $ipv6_ssl_alias_seo_redirects);
            $app->log('Enable SSL for IPv6: '.$domain,LOGLEVEL_DEBUG);
         }
      }
@@ -1563,6 +1575,7 @@
      $app->uses('getconf');
      $app->uses('system');
      $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
      $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
      
      if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') $app->system->web_folder_protection($data['old']['document_root'],false);
@@ -1625,10 +1638,12 @@
      if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain'){
         if(is_array($log_folders) && !empty($log_folders)){
            foreach($log_folders as $log_folder){
               if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
               //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
               exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
            }
         } else {
            if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
            //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
            exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder).' 2>/dev/null');
         }
      }
      
@@ -1742,13 +1757,13 @@
         
                //remove the php fastgi starter script if available
                if ($data['old']['php'] == 'fast-cgi') {
                    $fastcgi_starter_path = str_replace('[system_user]',$data['old']['system_user'],$web_config['fastcgi_starter_path']);
                    $fastcgi_starter_path = str_replace('[system_user]',$data['old']['system_user'],$fastcgi_config['fastcgi_starter_path']);
                    if($data['old']['type'] == 'vhost') {
                        if (is_dir($fastcgi_starter_path)) {
                            exec('rm -rf '.$fastcgi_starter_path);
                        }
                    } else {
                        $fcgi_starter_script = $fastcgi_starter_path.$web_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id'];
                        $fcgi_starter_script = $fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].'_web'.$data['old']['domain_id'];
                        if (file_exists($fcgi_starter_script)) {
                            exec('rm -f '.$fcgi_starter_script);
                        }
@@ -1808,7 +1823,7 @@
            
            if($data['old']['type'] == 'vhost') {
                //delete the web user
                $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' && userdel';
                $command = 'killall -u '.escapeshellcmd($data['old']['system_user']).' ; userdel';
                $command .= ' '.escapeshellcmd($data['old']['system_user']);
                exec($command);
                if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' '.$command);