From baa7f2736bc91ca3feaed685e8a67a46db4fbb98 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 17 Feb 2014 05:02:38 -0500
Subject: [PATCH] Fixed vhostsubdomain not empty regex check to allow 1 char subdomains.
---
server/lib/classes/system.inc.php | 66 +++++++++++++++++++++++++--------
1 files changed, 50 insertions(+), 16 deletions(-)
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index a393384..34830bf 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);
@@ -1724,6 +1733,31 @@
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';
+ }
+ }
}
--
Gitblit v1.9.1