6.0.0-git
2022-05-26

Diff for QuotaHack between 3 and 4

Here is a hack that displays quota on a server not supporting quota, like dovecot or any mail server without using the built in quota feature(If you find this simpler).



Edit your /etc/sudoer, add the following lines. Replace apache with whatever your httpd/apache user is. RHEL/Fedora user is apache.



<code type="bash">

apache  ALL = NOPASSWD: /usr/bin/du

apache ALL = NOPASSWD: /bin/ls

</code>



create a folder 'quota' on your server '/' partition



<code type="bash">

mkdir /quota

</code>



to assign quota to any user



<code type="bash">

echo "10000" > /quota/username

</code>



This would give 10MB quota to a user. Give whatever you wish to assign.



Create the following file



/var/www/html/horde/quota.php



<code type="php">

<?php

{



    $user=Auth::getAuth();

    $usage = `sudo du -s /home/$user/mail | cut -d "/" -f 1` + `sudo du -s /var/spool/mail/$user | cut -d "/" -f 1` - $archive;

    $archiveused = round($archive/1000);

    $usedmb = round($usage / 1000);

    $quota = `cat /quota/$user`+ 1;

    $quotamb = round($quota / 1000);

    $percent = round($usage * 100 / $quota);

        if ($quota > 1) {

             echo '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td class=

"item"><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';

             echo '<td align="left" class="header">Login: ' .  $user . '</td>';

             echo '<td align="right" class="header">';

             echo "Quota Used $usedmb MB of $quotamb MB ($percent %)";

             echo '</td></tr></table></td></tr></table>';

        }



if ($percent >= 100 && $quota > 2) {

             echo '<script language="JavaScript" type="text/javascript"><!--

alert("QUOTA EXCEEDED, DELETE EMAILS TO CONTINUE THE USE OF EMAIL FACILITY")

// -->

</script>';}

if ($percent >= 80 && $quota > 2) {

             echo '<script language="JavaScript" type="text/javascript"><!--

alert("You are nearing your mailbox quota limit, please delete & purge

emails to avoid any inconvinience.")

// -->

</script>';}

}

</code>



Change the above reflecting your mailserver's folder locations. Above is for dovecot on RHEL 3, with mails in /home/username/mail and /var/spool/mail/username.





Add this in horde/imp/templates/common-headers.inc (line 27, 28,29)



<code type="php">

$page_title = $GLOBALS['registry']->get('name');

if (!empty($title)) $page_title .= ' :: ' . $title;

if (!empty($refresh_time) && !empty($refresh_url)) {

    echo "<meta http-equiv="refresh" content="$refresh_time;url=$refresh_url" />n";

}

Horde::includeScriptFiles();

?>

<title><?php echo htmlspecialchars($page_title) ?></title>



//--->Add the following here <----



<?php

include_once HORDE_BASE . '/quota.php';

?>



//---end---



<link href="<?php echo $GLOBALS['registry']->getImageDir()?>/favicon.ico" rel="SHORTCUT ICON" />

<?php if (isset($mailbox_url)): ?>

</code>



Do let me know if this was useful or send in any improvements/suggestions.



jigish dot gohil at gmail dot com