[imp] Cyrus Quota's in IMP...
Paul M Fleming
pfleming@siumed.edu
Tue Nov 19 16:41:51 2002
Until PHP IMAP supports getquotaroot or fsock w/ ssl = Here is a
solution using raw sockets in clear text. The alternative is to login as
an admin in the quota function..
$conf['hooks']['quota'] = 'imp_show_quota';
/* Gets the quota usage from the imap server. $imap_admin &
* $imap_passwd must be set to fit your own settings. This works
* with the Cyrus imap server and the Courier imap server > 1.3.12.
* Note the necessary changes for the Courier server in the comments.
*/
if (!function_exists('imp_show_quota'))
{
function imp_show_quota ($imp)
{
$quota_html = '';
$imap_user = $imp['user'];
$imap_passwd = Secret::read(Secret::getKey('imp'),
$imp['pass']);
$fp = fsockopen($imp['server'],143,$errno,$sockerr,60);
if( !$fp )
{
return "";
}
$input = fgets($fp,55);
$output = "1 login " . $imap_user . " " . $imap_passwd . "\n";
fputs($fp,$output);
$input = fgets($fp,70);
if (!(eregi("OK",$input)))
{
return "";
}
$output = "1 GETQUOTAROOT INBOX\n";
fputs($fp,$output);
/* read QUOTAROOT INBOX user.xxxxx */
$input = fgets($fp,128);
$var4 = fgets($fp,128);
$output = "1 logout" . "\n";
fputs($fp,$output);
$input = fgets($fp,30);
fclose($fp);
if (preg_match("/\(STORAGE (\d*)\s*(\d*)\)/",$var4,$val))
{
# quota exist do calcs and display
$taken = $val[1] / 1024.0;
$total = $val[2] / 1024.0;
$percent = $taken * 100 / $total;
if ($percent >= 90)
{
$class = 'quotaalert';
} elseif ($percent >= 75)
{
$class = 'quotawarn';
} else
{
$class = 'control';
}
$quota_html = '<table width="100%" border="0"
cellpadding="0" cellspacing="0"><tr><td cla
ss="item">'
. '<table border="0" cellspacing="2"
cellpadding="2" width="100%"><tr><td alig
n="center" class="' . $class . '">'
. 'Quota: '
. sprintf("%.0fMB available (%.1f%% used)",
$total, $percent)
. '</td></tr></table></td></tr></table>';
return $quota_html;
}
else
{
# no quota return
return "";
}
}
}
Chris Bowlby wrote:
>
> Hi All,
>
> I run several domains under a cyrus based IMAP/POP3 client with the HEAD
> version of imp/horde installed on our machines. We current are just using
> the standard cyrus server defined in servers.conf but the quota => (...)
> part of the configuration fails to return a quota to the web page. Is
> there a work around to get this going?
>
> Chris Bowlby,
> -----------------------------------------------------
> Manager of Information and Technology.
> excalibur@hub.org
> www.hub.org
> 1-902-542-3657
> -----------------------------------------------------
>
> --
> IMP mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: imp-unsubscribe@lists.horde.org
More information about the imp
mailing list