Fix spoolsize pour le web

This commit is contained in:
Alan Garcia 2014-03-27 11:16:31 +00:00
parent 0dbd16bbbd
commit e63de8a403
4 changed files with 47 additions and 7 deletions

1
.gitattributes vendored
View File

@ -664,6 +664,7 @@ src/quota-warning.sh -text
src/quota_delete -text
src/quota_edit -text
src/quota_get -text
src/quota_get_all -text
src/quota_init -text
src/rebuild_all_webconf.sh -text
src/sendmail -text

View File

@ -1,2 +1,2 @@
alterncpanel ALL = NOPASSWD : /usr/bin/quota, /usr/sbin/setquota, /usr/lib/alternc/fixperms.sh, /usr/lib/alternc/mem_add, /usr/lib/alternc/mem_del, /usr/lib/alternc/quota_edit, /usr/lib/alternc/quota_get, /usr/lib/alternc/du.pl, /usr/lib/alternc/update_mails.sh
alterncpanel ALL = NOPASSWD : /usr/bin/quota, /usr/sbin/setquota, /usr/lib/alternc/fixperms.sh, /usr/lib/alternc/mem_add, /usr/lib/alternc/mem_del, /usr/lib/alternc/quota_edit, /usr/lib/alternc/quota_get, /usr/lib/alternc/du.pl, /usr/lib/alternc/update_mails.sh, /usr/sbin/repquota
vmail ALL = NOPASSWD : /usr/lib/dovecot/deliver

29
src/quota_get_all Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
# List quotas of all users in 3 columns :
# id used quota
source /etc/alternc/local.sh
#checking if quotas are installed
command -v /usr/sbin/repquota >/dev/null || { echo "Quotas uninstalled"; exit 0; }
get_quota() {
quotadir="$1"
if [ "$quotadir" = "/" ] ; then
sudo repquota -g -v -n -p "$quotadir" 2>/dev/null || (echo "Error: can't get quota"; exit 1)
else
sudo repquota -g -v -n -p "$quotadir" 2>/dev/null || get_quota "$(dirname $quotadir)"
fi
}
# Some help : this is what we must parse
# Block limits File limits
#Group used soft hard grace used soft hard grace
#----------------------------------------------------------------------
#root -- 1612116 0 0 96181 0 0
#adm -- 14532 0 0 226 0 0
get_quota "$ALTERNC_HTML" | egrep "^\#[0-9]+"|while read gid blank bused bsoft bhard bgrace fused fsoft fhard fgrace ; do
echo ${gid/\#/} $bused $bhard
done

View File

@ -6,12 +6,22 @@ require_once("/usr/share/alternc/panel/class/config_nochk.php");
global $db;
echo "\n---------------------------\n Generating size-cache for web accounts\n\n";
$r=mysql_query("SELECT uid,login FROM membres;");
while ($c=mysql_fetch_array($r)) {
echo $c["login"]; flush();
$size=exec("sudo /usr/lib/alternc/du.pl ".ALTERNC_HTML."/".substr($c["login"],0,1)."/".$c["login"]);
$db->query("REPLACE INTO size_web SET uid='".$c["uid"]."',size='$size';");
echo " done ($size KB) \n"; flush();
exec("/usr/lib/alternc/quota_get_all", $list_quota_tmp);
$list_quota=array();
foreach ($list_quota_tmp as $qt) {
$qt = explode(" ", $qt);
$list_quota[$qt[0]] = array('used'=>$qt[1], 'quota'=>$qt[2]);
}
if ($db->query("SELECT uid,login FROM membres;")) {
$db2 = new DB_system();
while ($db->next_record()) {
if (isset($list_quota[$db->f('uid')])) {
$qu=$list_quota[$db->f('uid')];
$db2->query("INSERT OR REPLACE INTO size_web SET uid='".intval($db->f('uid'))."',size='".intval($qu['used'])."';");
echo $db->f('login')." (".$qu['used']." B)\n";
}
}
}
echo "\n---------------------------\n Generating size-cache for MySQL databases\n\n";