From 0a0ca4f6a79f15308c6c2c6b4b7d1de9c8454e3b Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Wed, 19 Mar 2014 09:49:27 -0400 Subject: [PATCH] Fixed warning message on openSuse due to apache2 module check --- server/lib/classes/system.inc.php | 67 +++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 16 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index a05f4f4..16e91ae 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -851,7 +851,7 @@ //* We allow only some characters in the path // * is allowed, for example it is part of wildcard certificates/keys: *.example.com.crt - if(!preg_match('@^/[-a-zA-Z0-9_/.*~]{1,}$@', $path)) return false; + if(!preg_match('@^/[-a-zA-Z0-9_/.*]{1,}[~]?$@', $path)) return false; //* Check path for symlinks $path_parts = explode('/', $path); @@ -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); @@ -1750,6 +1759,32 @@ } } + 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; + } } ?> -- Gitblit v1.9.1