Marius Cramer
2014-03-19 0a0ca4f6a79f15308c6c2c6b4b7d1de9c8454e3b
server/lib/classes/system.inc.php
@@ -1478,7 +1478,11 @@
   function maildirmake($maildir_path, $user = '', $subfolder = '') {
      global $app;
      global $app, $conf;
      // load the server configuration options
      $app->uses("getconf");
      $mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail');
      if($subfolder != '') {
         $dir = escapeshellcmd($maildir_path.'/.'.$subfolder);
@@ -1521,25 +1525,30 @@
      //* Add the subfolder to the subscriptions and courierimapsubscribed files
      if($subfolder != '') {
         // Courier
         if(!is_file($maildir_path.'/courierimapsubscribed')) {
            $tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed');
            touch($tmp_file);
            chmod($tmp_file, 0744);
            chown($tmp_file, 'vmail');
            chgrp($tmp_file, 'vmail');
         if($mail_config['pop3_imap_daemon'] == 'courier') {
            if(!is_file($maildir_path.'/courierimapsubscribed')) {
               $tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed');
               touch($tmp_file);
               chmod($tmp_file, 0744);
               chown($tmp_file, 'vmail');
               chgrp($tmp_file, 'vmail');
            }
            $this->replaceLine($maildir_path.'/courierimapsubscribed', 'INBOX.'.$subfolder, 'INBOX.'.$subfolder, 1, 1);
         }
         $this->replaceLine($maildir_path.'/courierimapsubscribed', 'INBOX.'.$subfolder, 'INBOX.'.$subfolder, 1, 1);
         // Dovecot
         if(!is_file($maildir_path.'/subscriptions')) {
            $tmp_file = escapeshellcmd($maildir_path.'/subscriptions');
            touch($tmp_file);
            chmod($tmp_file, 0744);
            chown($tmp_file, 'vmail');
            chgrp($tmp_file, 'vmail');
         if($mail_config['pop3_imap_daemon'] == 'dovecot') {
            if(!is_file($maildir_path.'/subscriptions')) {
               $tmp_file = escapeshellcmd($maildir_path.'/subscriptions');
               touch($tmp_file);
               chmod($tmp_file, 0744);
               chown($tmp_file, 'vmail');
               chgrp($tmp_file, 'vmail');
            }
            $this->replaceLine($maildir_path.'/subscriptions', $subfolder, $subfolder, 1, 1);
         }
         $this->replaceLine($maildir_path.'/subscriptions', $subfolder, $subfolder, 1, 1);
      }
      $app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder, LOGLEVEL_DEBUG);
@@ -1724,7 +1733,58 @@
      if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1);
      return $init_script_directory.'/'.$servicename.' '.$action;
   }
   function getapacheversion($get_minor = false) {
      global $app;
      $cmd = '';
      if($this->is_installed('apache2ctl')) $cmd = 'apache2ctl -v';
      elseif($this->is_installed('apachectl')) $cmd = 'apachectl -v';
      else {
         $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_WARN);
         return '2.2';
      }
      exec($cmd, $output, $return_var);
      if($return_var != 0 || !$output[0]) {
         $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN);
         return '2.2';
      }
      if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) {
         return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : '');
      } else {
         $app->log("Could not check apache version, did not find version string in apachectl output.", LOGLEVEL_WARN);
         return '2.2';
      }
   }
   function getapachemodules() {
      global $app;
      $cmd = '';
      if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES';
      elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES';
      else {
         $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN);
         return array();
      }
      exec($cmd . ' 2>/dev/null', $output, $return_var);
      if($return_var != 0 || !$output[0]) {
         $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN);
         return array();
      }
      $modules = array();
      for($i = 0; $i < count($output); $i++) {
         if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) {
            $modules[] = $matches[1];
         }
      }
      return $modules;
   }
}
?>