tbrehm
2011-03-08 9d5a447cc1021b4743fee4b1db6ea02c5799c1f9
server/plugins-available/apache2_plugin.inc.php
@@ -75,11 +75,16 @@
      $app->plugins->registerEvent('webdav_user_insert',$this->plugin_name,'webdav');
      $app->plugins->registerEvent('webdav_user_update',$this->plugin_name,'webdav');
      $app->plugins->registerEvent('webdav_user_delete',$this->plugin_name,'webdav');
      $app->plugins->registerEvent('client_delete',$this->plugin_name,'client_delete');
   }
   // Handle the creation of SSL certificates
   function ssl($event_name,$data) {
      global $app, $conf;
      //* Only vhosts can have a ssl cert
      if($data["new"]["type"] != "vhost") return;
      if(!is_dir($data["new"]["document_root"]."/ssl")) exec("mkdir -p ".$data["new"]["document_root"]."/ssl");
      $ssl_dir = $data["new"]["document_root"]."/ssl";
@@ -161,8 +166,8 @@
         $csr_file = $ssl_dir.'/'.$domain.".csr";
         $crt_file = $ssl_dir.'/'.$domain.".crt";
         $bundle_file = $ssl_dir.'/'.$domain.".bundle";
         file_put_contents($csr_file,$data["new"]["ssl_request"]);
         file_put_contents($crt_file,$data["new"]["ssl_cert"]);
         if(trim($data["new"]["ssl_request"]) != '') file_put_contents($csr_file,$data["new"]["ssl_request"]);
         if(trim($data["new"]["ssl_cert"]) != '') file_put_contents($crt_file,$data["new"]["ssl_cert"]);
         if(trim($data["new"]["ssl_bundle"]) != '') file_put_contents($bundle_file,$data["new"]["ssl_bundle"]);
         /* Update the DB of the (local) Server */
         $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data["new"]["domain"]."'");
@@ -215,7 +220,7 @@
         $old_parent_domain_id = intval($data["old"]["parent_domain_id"]);
         $new_parent_domain_id = intval($data["new"]["parent_domain_id"]);
         // If the parent_domain_id has been chenged, we will have to update the old site as well.
         // If the parent_domain_id has been changed, we will have to update the old site as well.
         if($this->action == 'update' && $data["new"]["parent_domain_id"] != $data["old"]["parent_domain_id"]) {
            $tmp = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$old_parent_domain_id." AND active = 'y'");
            $data["new"] = $tmp;
@@ -469,7 +474,7 @@
         exec("setquota -T -u $username 604800 604800 -a &> /dev/null");
      }
      if($this->action == 'insert') {
      if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) {
         // Chown and chmod the directories below the document root
         $this->_exec("chown -R $username:$groupname ".escapeshellcmd($data["new"]["document_root"]));
         // The document root itself has to be owned by root in normal level and by the web owner in security level 20
@@ -491,6 +496,9 @@
         // make temp directory writable for the apache and website users
         $this->_exec("chmod 777 ".escapeshellcmd($data["new"]["document_root"]."/tmp"));
         // Set Log symlink to 755 to make the logs accessible by the FTP user
         $this->_exec("chmod 755 ".escapeshellcmd($data["new"]["document_root"])."/log");
         $command = 'usermod';
         $command .= ' --groups sshusers';
@@ -553,7 +561,11 @@
         if($data["new"]['php'] == 'mod') {
            $master_php_ini_path = $web_config['php_ini_path_apache'];
         } else {
            $master_php_ini_path = $web_config['php_ini_path_cgi'];
            if($data["new"]['php'] == 'fast-cgi' && file_exists($fastcgi_config["fastcgi_phpini_path"])) {
               $master_php_ini_path = $fastcgi_config["fastcgi_phpini_path"];
            } else {
               $master_php_ini_path = $web_config['php_ini_path_cgi'];
            }
         }
         if($master_php_ini_path != '' && substr($master_php_ini_path,-7) == 'php.ini' && is_file($master_php_ini_path)) {
            $php_ini_content .= file_get_contents($master_php_ini_path)."\n";
@@ -890,6 +902,9 @@
         $app->log("Apache status is: ".$apache_online_status_before_restart,LOGLEVEL_DEBUG);
         $app->services->restartService('httpd','restart');
         // wait a few seconds, before we test the apache status again
         sleep(2);
      
         //* Check if apache restarted successfully if it was online before
         $apache_online_status_after_restart = $this->_checkTcp('localhost',80);
@@ -911,7 +926,7 @@
      }
      
      // Remove the backup copy of the config file.
      unlink($vhost_file.'~');
      if(@is_file($vhost_file.'~')) unlink($vhost_file.'~');
      
      //* Unset action to clean it for next processed vhost.
@@ -1329,6 +1344,27 @@
         $app->log("Removed awstats config file: ".$awstats_conf_dir.'/awstats.'.$data["old"]["domain"].'.conf',LOGLEVEL_DEBUG);
      }
   }
   function client_delete($event_name,$data) {
      global $app, $conf;
      $app->uses("getconf");
      $web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
      $client_id = intval($data['old']['client_id']);
      if($client_id > 0) {
         $client_dir = $web_config['website_basedir'].'/clients/client'.$client_id;
         if(is_dir($client_dir) && !stristr($client_dir,'..')) {
            @rmdir($client_dir);
            $app->log('Removed client directory: '.$client_dir,LOGLEVEL_DEBUG);
         }
         $this->_exec('groupdel client'.$client_id);
         $app->log('Removed group client'.$client_id,LOGLEVEL_DEBUG);
      }
   }
   //* Wrapper for exec function for easier debugging
   private function _exec($command) {