From 2ebadd76247dd1d985ad099edd6ca61fd0a8ea97 Mon Sep 17 00:00:00 2001
From: jwarnier <jwarnier@ispconfig3>
Date: Fri, 17 Sep 2010 20:30:15 -0400
Subject: [PATCH] improve maildirmake and remove yet other execs
---
server/lib/classes/system.inc.php | 29 +++++++++++++++++++++--------
1 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index c194881..c383423 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -1188,18 +1188,31 @@
if($subfolder != '') {
$dir = escapeshellarg($maildir_path.'/.'.$subfolder);
- $dir_cur = escapeshellarg($maildir_path.'/.'.$subfolder.'/cur');
- $dir_new = escapeshellarg($maildir_path.'/.'.$subfolder.'/new');
- $dir_tmp = escapeshellarg($maildir_path.'/.'.$subfolder.'/tmp');
} else {
$dir = escapeshellarg($maildir_path);
- $dir_cur = escapeshellarg($maildir_path.'/cur');
- $dir_new = escapeshellarg($maildir_path.'/new');
- $dir_tmp = escapeshellarg($maildir_path.'/tmp');
+ }
+
+ if($user != '' && $user != 'root' && $this->is_user($user)) {
+ $user = escapeshellarg($user);
+ // I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
+ $group = $user;
+ chown($dir,$user);
+ chgrp($dir,$group);
+
+ $chown_mdsub = true;
}
- exec("mkdir -p $dir_cur $dir_new $dir_tmp");
- exec("chmod 0700 $dir $dir_cur $dir_new $dir_tmp");
+ $maildirsubs = array('cur','new','tmp');
+
+ foreach ($maildirsubs as $mdsub) {
+ mkdir($dir.'/'.$mdsub, 0700, true);
+ if ($chown_mdsub) {
+ chown($dir.'/'.$mdsub, $user);
+ chgrp($dir.'/'.$mdsub, $group);
+ }
+ }
+
+ chmod($dir, 0700);
if($user != '' && $this->is_user($user) && $user != 'root') {
$user = escapeshellarg($user);
--
Gitblit v1.9.1