| | |
| | | |
| | | //* 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); |
| | |
| | | |
| | | 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); |
| | |
| | | |
| | | //* 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); |
| | |
| | | } |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | ?> |