- LSaddon :: Maildir :

-> Ajout de la fonction getMaildirPath() s'occupant de la génération du
     chemin distant de la maildir à partir d'un LSldapObject.
  -> Ajout de la possibilité de la définition d'une regex pour déterminer
     le chemin distant de la maildir. Cette regex doit matcher tout ou parti
     de la chaine retourné par le LSformat LS_MAILDIR_FTP_MAILDIR_PATH.
This commit is contained in:
Benjamin Renard 2009-01-22 15:26:21 +00:00
parent 6b60147327
commit 6957badce8
2 changed files with 47 additions and 6 deletions

View file

@ -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');

View file

@ -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 <brenard@easter-eggs.com>
*
* @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