Florian Schaal
2014-10-17 a204303e5099dcb88e5e4760a09e7de9a96c4ea3
server/plugins-available/apache2_plugin.inc.php
@@ -104,7 +104,7 @@
      /* $data contains an array with these keys:
         * file -> full path of changed php_ini
         * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm or '' for all except 'mod')
         * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm, hhvm or '' for all except 'mod')
         * php_version -> php ini path that changed (additional php versions)
         */
@@ -118,6 +118,11 @@
         }
      } elseif($data['mode'] == 'php-fpm') {
         $qrystr .= " AND php = 'php-fpm'";
         if($data['php_version']) {
            $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . ":%'";
         }
      } elseif($data['mode'] == 'hhvm') {
         $qrystr .= " AND php = 'hhvm'";
         if($data['php_version']) {
            $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . ":%'";
         }
@@ -330,8 +335,15 @@
         //* Write new ssl files
         if(trim($data["new"]["ssl_request"]) != '') $app->system->file_put_contents($csr_file, $data["new"]["ssl_request"]);
         if(trim($data["new"]["ssl_cert"]) != '') $app->system->file_put_contents($crt_file, $data["new"]["ssl_cert"]);
         if(trim($data["new"]["ssl_bundle"]) != '') $app->system->file_put_contents($bundle_file, $data["new"]["ssl_bundle"]);
         if(version_compare($app->system->getapacheversion(true), '2.4.8', '>=')) {
            $tmp_data = '';
            if(trim($data["new"]["ssl_cert"]) != '') $tmp_data .= $data["new"]["ssl_cert"] . "\n";
            if(trim($data["new"]["ssl_bundle"]) != '') $tmp_data .= $data["new"]["ssl_bundle"];
            if(trim($tmp_data) != '') $app->system->file_put_contents($crt_file, $tmp_data);
         } else {
            if(trim($data["new"]["ssl_cert"]) != '') $app->system->file_put_contents($crt_file, $data["new"]["ssl_cert"]);
            if(trim($data["new"]["ssl_bundle"]) != '') $app->system->file_put_contents($bundle_file, $data["new"]["ssl_bundle"]);
         }
         //* Write the key file, if field is empty then import the key into the db
         if(trim($data["new"]["ssl_key"]) != '') {
@@ -1318,7 +1330,7 @@
       * PHP-FPM
       */
      // Support for multiple PHP versions
      if($data['new']['php'] == 'php-fpm'){
      if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){
         if(trim($data['new']['fastcgi_php_version']) != ''){
            $default_php_fpm = false;
            list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version']));
@@ -1327,7 +1339,7 @@
            $default_php_fpm = true;
         }
      } else {
         if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){
         if(trim($data['old']['fastcgi_php_version']) != '' && ($data['old']['php'] == 'php-fpm' || $data['old']['php'] == 'hhvm')){
            $default_php_fpm = false;
            list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version']));
            if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/';
@@ -1586,6 +1598,7 @@
      }
      $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir);
      $this->hhvm_update($data, $web_config);
      if($web_config['check_apache_config'] == 'y') {
         //* Test if apache starts with the new configuration file
@@ -1933,6 +1946,8 @@
            // remove PHP-FPM pool
            if ($data['old']['php'] == 'php-fpm') {
               $this->php_fpm_pool_delete($data, $web_config);
            } elseif($data['old']['php'] == 'hhvm') {
               $this->hhvm_update($data, $web_config);
            }
            //remove the php cgi starter script if available
@@ -2722,6 +2737,28 @@
      }
   }
   private function hhvm_update($data, $web_config) {
      global $app, $conf;
      if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) {
         $content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master');
      } else {
         $content = file_get_contents($conf['rootpath'] . '/conf/hhvm_starter.master');
      }
      if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm') {
         $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content);
         file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content);
         exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1');
         exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1');
         exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' start >/dev/null 2>&1');
       } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') {
         exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1');
         exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1');
         unlink('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' >/dev/null 2>&1');
      }
   }
   //* Update the PHP-FPM pool configuration file
   private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir) {
      global $app, $conf;