[imp] Courier IMAP and 'imp_show_quota'/today's HEAD Version.
Tjeerd van der Zee
Tjeerd.vdzee@chello.nl
Thu, 6 Jun 2002 12:26:09 +0200
Hi,
I've modified the quota script for use with courier imap and ldap.
the only thing this is being done with ldap is retreive the homedir from
ldap.
you change that with the function in the original script.
I've had some troubles also with quota functions of courier imap.
You need to compile courier imap with
--enable-workarounds-for-imap-client-bugs
otherwise c-client will fail to retreive the quota for a user.
The passwords is retreived from Horde, but if you wan't, you could also get
it from ldap since the user is known.
The user gets his quota with his own username and password.
It searches for the maildirsize file in the homedir, when it isn't present,
it just skips
the quotabar creation.
With kind regards,
Tjeerd van der Zee.
if (!function_exists('imp_show_quota')) {
function imp_show_quota ($imp) {
$imapuser = $imp['user'];
$splitted = split("@", $imapuser);
$realname = @$splitted[0]; $realm = @$splitted[1];
$imapadminpass = Auth::getCredential('password');
$imaphost = '{localhost:143}';
$quota_html = '<table width="100%" border="0" cellpadding="0"
cellspacing="0"><tr><td class="item"><table border="0" cellspacing="0"
cellpadding="0" width="100%"><tr>';
$quota_html .= '<td align="left" class="header">Login: ' . $realname . "
(" . $imapuser . ")" . '</td>';
$ds=ldap_connect("localhost");
if ($ds) {
$r=ldap_bind($ds);
$sr=ldap_search($ds,"o=xar.nl", "mail=$imapuser");
$info = ldap_get_entries($ds, $sr);
for ($i=0; $i<$info["count"]; $i++) {
@$homedir=$info[$i]["homedirectory"][0];
}
ldap_close($ds);
}
// check for the maildirsize file.
$homedir = $homedir . "/Maildir/maildirsize";
if(file_exists("$homedir")){
$userprefix = 'user.';
$mbox = imap_open($imaphost, $imapuser, $imapadminpass, OP_HALFOPEN) or
die ("Imap host is down");
$quota = imap_get_quota($mbox, $userprefix.$imapuser) or die ("");
imap_close($mbox);
if (is_array($quota) && $quota['limit'] != 0) {
$taken = $quota['usage'] / 1024.0;
$total = $quota['limit'] / 1024.0;
$percent = $taken * 100 / $total;
if ($percent >= 90) {
$color = '#FF0000';
} elseif ($percent >= 80) {
$color = '#FCE30D';
} else {
$color = '#339933';
}
$quota_html .= '<td align="center" class="header">';
$quota_html .= sprintf("<font size=-2>Quota on /%s: %.1fMB/%.1fMB
(%.1f%%)</font>", "Maildir", $taken, $total, $percent);
$quota_html .= '</td><td width="30" class="header"
align="right"><font size="-3">0%</font></td><td width="200"
class="header">';
$quota_html .= '<table width="100%"><tr><td
bgcolor="#ccccff"><div style="height:6px; width:'. sprintf("%.1f%%",
$percent). '; font-size:3px; background-color:'.$color.'">';
$quota_html .= '</div></td></tr></table></td><td width="30"
class="header" align="left"><font size="-3">100%</font>';
} else {
$quota_html .= '<td align="center" class="header">';
$quota_html .= "Quota not available";
}
$quota_html .= '</td></tr></table></td></tr></table>';
return $quota_html;
}
}
}
----- Original Message -----
From: "Edwin Culp" <eculp@encontacto.net>
To: <imp@lists.horde.org>
Sent: Wednesday, June 05, 2002 8:32 AM
Subject: Re: [imp] Courier IMAP and 'imp_show_quota'/today's HEAD Version.
> Quoting Edwin Culp <eculp@encontacto.net>:
>
> | I fixed the prevous problems and now get no errors but no quota although
> | it works manually and the maildirsize file has been created with the
proper
> | values. Somehow I'm not reading the quota. I'm recompiling cclient
right
> | now.
> I recompiled and reinstalled
> imap-uw-2001a,1
> cclient-2001a,1
> mod_php4-4.2.1
> restarted apache and still no quota. I don't seem to be getting anything
> our of courier.
>
> ed
>
> |
> | Thanks,
> |
> | ed
>
>
>
> -------------------------------------------------------------
> http://insourcery.com - Mergence of Business and Technology
> a "Griffin Plaza Partners, LLC" Company
>
> --
> IMP mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: imp-unsubscribe@lists.horde.org
>