15 июня 2006 г. в 12:35:18GMT +0400 Вы, Dmitry Akindinov писали мне
по поводу "[CGP] Как спросить quota через LDAP":
>> Есть необходимость проверять забитость ящика (квоту) через ldap >> вот только где она в директории хранится никак не найду подсобите.
DA> В директории и в настройках акаунтов доля использованной квоты не DA> хранится. Эти данные можно получить через CLI и IMAP. Может пригодится кому:
#!/usr/local/bin/php
<?php // Подсчитать _LINES_OUTPUT самых жирных аккаунтов и послать начальству
define("_LINES_OUTPUT",25); // количество строк в отчете define("_RCPT_LIST","suh@id.rsk,boss@id.rsk"); // список получателей define("_PIPE_DIR","/var/CommuniGate/Submitted"); // CGP pipe directory define("_MAX_MSG",49152); // max. generated msg size define("_DOMAIN","id.rsk"); // доменdefine("_DETAIL_URL","https://mx.id.rsk:9010/Domains/"._DOMAIN."/"); // см. подробности
error_reporting(E_NONE);
// Загрузка класса и создание экземпляра
require_once("/home/mail/bin/CLI_login.php");
function Du($dir) {
$du = popen("/usr/bin/du -sk $dir", "r");
$res = fgets($du, 256);
pclose($du);
$res = strtok($res,"\t");
return $res;
}
$total = floor(disk_total_space("/var/CommuniGate/Domains/"._DOMAIN)/1024);
$occu = Du("/var/CommuniGate/Domains/"._DOMAIN);
$perc = floor(($occu * 100)/$total);
$GT = "Всего:<b>".floor($occu/1024)." Mb</b> из ".floor($total/1024)." Mb (${perc}%)\n";
if(isset($_SERVER["argv"][1])){
$mode=$_SERVER["argv"][1];
}else{
$mode="msg";
}
if($mode=="reset"){
$la = $cli->ListAccounts(_DOMAIN); reset($la);
while(list($acc,$i)=each($la)) {
$cli->ResetAccountStat($acc);
}
}elseif($mode=="msg"){
$la = $cli->ListAccounts(_DOMAIN); reset($la);
$accs=array();
while(list($acc,$i)=each($la)) {
$acc.="@"._DOMAIN; $x=$cli->GetAccountInfo($acc,"LastLogin"); $xx=$cli->GetAccountInfo($acc,"StorageUsed"); $xxx=$cli->GetAccountStat($acc); $accs[$acc]['size']=$xx; $accs[$acc]['msg']=$xxx["MessagesReceived"]; $accs[$acc]['bytes']=$xxx["BytesReceived"]; $accs[$acc]['last']=$x; $i=$cli->GetAccountSettings($acc); $accs[$acc]['name']=iconv("utf-8","koi8-r"," ".$i["RealName"]." (".$i["departmentNumber"].") ");}
$msg =sprintf("From: . <.@.>\n");
$msg.=sprintf("To: \"Big Shots\"\n");
$msg.=sprintf("Bcc: "._RCPT_LIST."\n");
$msg.=sprintf("MIME-Version: 1.0\n");
$msg.=sprintf("Content-Type: text/html;\n");
$msg.=sprintf("Content-Transfer-Encoding: 8bit\n");
$msg.=sprintf("Subject: Объем хранимой почты и стат за текущий месяц на ".date("d-m-y")."("._LINES_OUTPUT." лидеров)\n\n");
$msg.=sprintf("<HTML><HEAD>\n");
$msg.=sprintf("<TITLE>title-title</TITLE>\n");
$msg.=sprintf("<META http-equiv='Content-Type' content='text/html; charset=koi8-r'>\n<STYLE><!--\n");
$msg.=sprintf(".imy {font-weight:bold;color:navy;font-family:courier}\n");
$msg.=sprintf(".last {text-align:right;font-size:xx-small}\n");
$msg.=sprintf(".num {text-align:right}\n");
$msg.=sprintf(".num, .imy, .last {border-bottom:1px solid #9D9D77;border-right:1px solid #7D7D55;}\n");
$msg.=sprintf("th {background-color:AAAAA0;border-bottom:1px solid black;}\n");
$msg.=sprintf("\n-->\n</STYLE></HEAD>\n");
$msg.=sprintf("<BODY bgcolor=#CCCCA1 topmargin=5>\n");
$msg.=sprintf("<TABLE align=center bgcolor=#AAAA8A cellpadding=0 cellspacing=0>\n\n");
$msg.=sprintf("<TR><TD align=\"right\"\n");
$msg.=sprintf(" colspan=5 style=\"border:1 solid 3D3D88;color:cyan\">\n");
$msg.="$GT";
$msg.=sprintf("\n</TD></TR>\n");
$msg.=sprintf("<tr valign=top><th>Имя<br>пользователя</td><th>Объем почты<br>Mb.</th><th title='...за текущий месяц'>Получено<br>Mb. </th><th>Получено<br>сообщений</th><th title='..за текущий месяц'>Последнее обращение<br>за почтой</th></tr>\n" );
for($i=0;$i<_LINES_OUTPUT;++$i){
list($k,$x)=each($accs); $name = ereg_replace("@"._DOMAIN," ",$k); $msg.=sprintf( "<tr title=\"%176s \"> <td class=imy> %-14s </td> <td class=num> %6.1f </td> <td class=num> %6.1f </td> <td class=num> %5.0f </td> <td class=last> %25.25s </td> <td></td> </tr>\n" , $x["name"],$name,$x["size"]/1048576,$x["bytes"]/1048576,$x["msg"],$x["last"]);}
fwrite($fh,$msg,_MAX_MSG); fclose($fh); rename($fn,$fn.".sub");
?>
mailto:suh@udmene.ru Получено Thu Jun 15 09:47:31 2006
Этот архив был сгенерирован hypermail 2.1.8 : Thu 15 Jun 2006 - 14:12:48 MSD