diff --git a/trunk/conf/LSaddons/config.LSaddons.maildir.php b/trunk/conf/LSaddons/config.LSaddons.maildir.php index 2792e0e4..aab8ad69 100644 --- a/trunk/conf/LSaddons/config.LSaddons.maildir.php +++ b/trunk/conf/LSaddons/config.LSaddons.maildir.php @@ -39,7 +39,10 @@ define('LS_MAILDIR_FTP_USER','vmail'); define('LS_MAILDIR_FTP_PWD','password'); // Serveur FTP - Maildir Path -define('LS_MAILDIR_FTP_MAILDIR_PATH','%{uid}'); +define('LS_MAILDIR_FTP_MAILDIR_PATH','%{mailbox}'); + +// Serveur FTP - Maildir Path Regex +define('LS_MAILDIR_FTP_MAILDIR_PATH_REGEX','^\/home\/vmail\/([^\/]+)\/$'); // Serveur FTP - Maildir CHMOD define('LS_MAILDIR_FTP_MAILDIR_CHMOD','700'); diff --git a/trunk/includes/addons/LSaddons.maildir.php b/trunk/includes/addons/LSaddons.maildir.php index e2f54336..4d234a3a 100644 --- a/trunk/includes/addons/LSaddons.maildir.php +++ b/trunk/includes/addons/LSaddons.maildir.php @@ -32,13 +32,16 @@ $GLOBALS['LSerror_code']['MAILDIR_SUPPORT_02']= array ( // Autres erreurs $GLOBALS['LSerror_code']['MAILDIR_01']= array ( - 'msg' => _("MAILDIR Support : Erreur durant la création de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant la création de la maildir sur le serveur distant.") ); $GLOBALS['LSerror_code']['MAILDIR_02']= array ( - 'msg' => _("MAILDIR Support : Erreur durant la suppression de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant la suppression de la maildir sur le serveur distant.") ); $GLOBALS['LSerror_code']['MAILDIR_03']= array ( - 'msg' => _("MAILDIR Support : Erreur durant le renomage de la maildir sur le serveur distant.") + 'msg' => _("MAILDIR : Erreur durant le renomage de la maildir sur le serveur distant.") +); +$GLOBALS['LSerror_code']['MAILDIR_04']= array ( + 'msg' => _("MAILDIR : Erreur durant la récupération du chemin distant de la maildir.") ); /** @@ -87,7 +90,10 @@ $retval=true; */ function createMaildirByFTP($ldapObject,$dir=null) { if (!$dir) { - $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + $dir = getMaildirPath($ldapObject); + if (!$dir) { + return; + } } $dirs = array( $dir.'/cur', @@ -114,7 +120,10 @@ $retval=true; */ function removeMaildirByFTP($ldapObject,$dir=null) { if (!$dir) { - $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + $dir = getMaildirPath($ldapObject); + if (!$dir) { + return; + } } if (!removeDirsByFTP(LS_MAILDIR_FTP_HOST,LS_MAILDIR_FTP_PORT,LS_MAILDIR_FTP_USER,LS_MAILDIR_FTP_PWD,$dir)) { LSerror::addErrorCode('MAILDIR_02'); @@ -122,6 +131,35 @@ $retval=true; } return true; } + + /** + * Retourne le chemin distant de la maildir + * + * @author Benjamin Renard + * + * @param[in] $ldapObject L'objet ldap + * + * @retval string Le chemin distant de la maildir ou false si il y a un problème + */ + function getMaildirPath($ldapObject) { + $dir = getFData(LS_MAILDIR_FTP_MAILDIR_PATH,$ldapObject,'getValue'); + + if (LS_MAILDIR_FTP_MAILDIR_PATH_REGEX != "") { + if (ereg(LS_MAILDIR_FTP_MAILDIR_PATH_REGEX,$dir,$regs)) { + $dir = $regs[1]; + } + else { + $dir = ""; + } + } + + if ($dir=="") { + LSerror::addErrorCode('MAILDIR_04'); + return; + } + + return $dir; + } /** * Rename Maildir via FTP