"); //EVALUE SI UNE SAISIE A ETE EFFECTUEE: AUTO-APPEL DE LA PAGE APRES FORMULAIRE REMPLI if (isset($browser)) { //rajoute indirectement l'avertissement sur /home mais supprime dans la suite de la page si non choisi $browser = preg_replace('/\\\++/','/', $browser); //gestion de \ qui passe mal (suppression des \\ en les remplaçant par un /) exec("sudo /usr/share/se3/scripts/warn_quota.sh $browser"); $query="UPDATE params SET value=\"$browser\" WHERE name=\"quota_browser\";"; mysql_query($query); } if (isset($quota) or isset($suppr)) { $nomscript=date("Y_m_d_H_i_s"); $nomscript="tmp_quotas_$nomscript.sh"; $nbr_user=0; system ("echo \"#!/bin/bash\n\" > /tmp/$nomscript"); // system ("echo \" \n\" >> /tmp/$nomscript"); // chmod ("/tmp/$nomscript",0700);//} if (isset($suppr)) { $uids = search_uids ("(cn=".$nom.")"); $people = search_people_groups ($uids,"(sn=*)","cat"); $nbr_user=$nbr_user+count($people); system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $nom $partition suppr \n\" >> /tmp/$nomscript"); } //EVALUE SI UN NOUVEAU QUOTA A ETE DEMANDE: AUTO-APPEL DE LA PAGE APRES FORMULAIRE REMPLI //si aucun quota specifie: quota par defaut de 20% if ($depassement == "") {$depassement = "20 %";} //transforme le depassement de quota en nombre $depassement = preg_replace('/\s%/', '', $depassement); //Teste si case quota non vide et si c'est un nombre et si superieur à 10Mo dans le cas de la partition /home (pour eviter les problemes avec les repertories profiles, etc... if ($quota <> "" and $quota >= 0 and $depassement >= 0 and (intval($quota)>=10 or intval($quota)==0 or $partition=="/var/se3")){ //PB CI DESSUS AVEC LE TEST POUR SAVOIR SI LA CHAINE EST UN ENTIER VALIDE //and is_int($quota) => a modifier if ($depassement == "") { $depassement="0"; } //Si le quota est valide et les choix valides, fixe les quotas if (count($classe_gr) ) { foreach ($classe_gr as $grp){ $uids = search_uids ("(cn=".$grp.")"); $people = search_people_groups ($uids,"(sn=*)","cat"); $nbr_user=$nbr_user+count($people); //system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $[$quota *($depassement+100)/100] \n\" >> /tmp/$nomscript"); $hard_quota = (int) ($quota * ($depassement+100)/100 ); system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $hard_quota \n\" >> /tmp/$nomscript"); } } if (count($equipe_gr) ) { foreach ($equipe_gr as $grp){ $uids = search_uids ("(cn=".$grp.")"); $people = search_people_groups ($uids,"(sn=*)","cat"); $nbr_user=$nbr_user+count($people); $hard_quota = (int) ($quota * ($depassement+100)/100 ); system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $hard_quota \n\" >> /tmp/$nomscript"); } } if (count($matiere_gr) ) { foreach ($matiere_gr as $grp){ $uids = search_uids ("(cn=".$grp.")"); $people = search_people_groups ($uids,"(sn=*)","cat"); $nbr_user=$nbr_user+count($people); $hard_quota = (int) ($quota * ($depassement+100)/100 ); system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $hard_quota \n\" >> /tmp/$nomscript"); } } if (count($autres_gr) ) { foreach ($autres_gr as $grp){ $uids = search_uids ("(cn=".$grp.")"); $people = search_people_groups ($uids,"(sn=*)","cat"); $nbr_user=$nbr_user+count($people); $hard_quota = (int) ($quota * ($depassement+100)/100 ); // echo $hard_quota; system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $hard_quota \n\" >> /tmp/$nomscript"); } } //teste si utilisateur saisi pour recherche dans ldap if ($user<>"") { //recherche dans ldap si $user est valide $tabresult=search_people("uid=$user"); if(count($tabresult)==1){ if($user!="admin" and $user!="root" and $user!="www-se3" and $user!="adminse3"){ //comme $user existe et non admin et non root => fixe le quota! $nbr_user=$nbr_user+1; $hard_quota = (int) ($quota * ($depassement+100)/100 ); // echo $hard_quota; system("echo \"sudo /usr/share/se3/scripts/quota_fixer_mysql.sh $grp $partition $quota $hard_quota \n\" >> /tmp/$nomscript"); } } } }//fin du if($quota valide) //le script se supprime a la fin de son exec //system("echo \"rm -f /tmp/$nomscript \n\" >> /tmp/$nomscript"); chmod ("/tmp/$nomscript",0700); // on est alors dans le cas: if(isset($quota or $suppr)) donc on execute le script if($nbr_user>100000){ //execution differee d'une minute pour ne pas attendre la page trop longtemps echo "

".gettext("Les nouveaux quotas fixés concernant de nombreux utilisateurs")." ($nbr_user), ".gettext("ils ne seront effectifs et affichés que dans quelques minutes: pour actualiser cette page")." ".gettext("cliquer ici")."

\n"; system ("echo \"#!/bin/bash\n\" > /tmp/lanceur.sh"); system ("echo \"/bin/bash /tmp/$nomscript\n\" >> /tmp/lanceur.sh"); chmod ("/tmp/lanceur.sh",0700); system("at -f /tmp/lanceur.sh now + 1 minute"); } else { //execution immediate du script /root/tmp_quotas.sh exec("/tmp/$nomscript &"); } // la page est affichee apres avoir clique sur valider: ce n'est pas juste une selection de partition if ($valider_home == "yes") { if ($messtxt_home == "on" and $partition == "/home") { $query="UPDATE params SET value=\"1\" WHERE name=\"quota_warn_home\";"; mysql_query($query); } else { $query="UPDATE params SET value=\"0\" WHERE name=\"quota_warn_home\";"; mysql_query($query); } //effet immediat exec("sudo /usr/share/se3/scripts/warn_quota.sh"); } //fin du $valider_home=yes if ($valider_var_se3 == "yes") { if ($messtxt_var_se3 == "on" and $partition == "/var/se3") { $query="UPDATE params SET value=\"1\" WHERE name=\"quota_warn_varse3\";"; mysql_query($query); } else { $query="UPDATE params SET value=\"0\" WHERE name=\"quota_warn_varse3\";"; mysql_query($query); } //effet immediat exec("sudo /usr/share/se3/scripts/warn_quota.sh"); } //fin du $valider_var_se3=yes }//fin du cas if (isset($quota) or isset($suppr)) if (isset($grace)){ if ($grace>0) { exec("sudo /usr/share/se3/scripts/quota_grace_delai.sh $grace $partition");} } //DEBUT DES AFFICHAGES HTML echo "

".gettext("Quotas fixés sur /home et /var/se3")."

\n\n"; // Affichage du contenu de la table en HTML $arr = array("/home", "/var/se3"); echo "
\n"; foreach ($arr as $partit) { $query="SELECT type,nom,quotasoft,quotahard FROM quotas WHERE partition='$partit' ORDER BY type DESC, nom"; $resultat=mysql_query($query); echo "
\n"; echo "\n"; echo "\n"; $i=0; while ($line = mysql_fetch_assoc($resultat)) { if ($i==0){ // ligne d'entetes echo "\n"; } echo "\t\n"; $i=0; // me sert de repere pour savoir dans quelle colonne du tableau je suis (pour memoriser le nom $nom pour le lien quota_fixer.php?suppr=suppr&nom=$nom&partition=$partit) foreach ($line as $col_value) { if ($i == 0) {$typ= $col_value;} if ($i == 1) { $nom= $col_value; if ($typ == "u"){ #rajouter le ? pour expliquer que l'user est preponderant sur tout groupe $col_value ="$col_value    \n"; } } if ($i == 2) { $soft= $col_value; if ($soft == 0) {$col_value="Illimité";} else {$col_value="$col_value Mo";} } if ($i == 3) { if ($col_value==$soft) { if ($soft==0) {$col_value="-";} else {$col_value = "Non";} } else { $col_value=($col_value-$soft)*100/$soft; $col_value="$col_value %"; } } if ($i>0) {echo "\t\t\n";} $i=$i+1; } echo " "; echo "\t\n"; // } } //si aucun quota sur la partition, l'afficher //echo "valeur $i"; if ($i==0){echo "";} echo "
"; echo gettext("Quotas actuels sur")." $partit
".gettext("Nom (utilisateur ou groupe)")."".gettext("Quota")."".gettext("Dépassement temporaire autorisé")."
$col_value \"".gettext("Supprimer")."\"
".gettext("Aucun quota fixé sur cette partition")."
\n"; echo "
\n"; //CI DESSUS AFFICHER LA PERIODE DE GRACE ACTUELLE echo "

Période de grâce sur $partit : "; system("sudo repquota $partit|grep \"Block grace time\"|cut -b19-25|sed -e \"s/ //g\"|sed -e \"s/days/ jours/g\"|sed -e \"s/;//g\"|sed -e \"s/24:00/1 jour/g\""); //echo ""); $warn="yes"; } else { echo " sans message d'avertissement.\n"; echo "\n"; } } // Insert ou update pour avertissement IE if ($warn=="yes") { if (isset($browser)) { $browser = preg_replace('/\\\++/','/', $browser); //gestion de \ qui passe mal (suppression des \\ en les remplaçant par un /) } else $browser="$quota_browser"; // $result=mysql_query("SELECT CleID FROM corresp WHERE Intitule='warnquotas'"); if(mysql_num_rows($result)==0){ $query = "INSERT INTO corresp VALUES('','warnquotas','$browser $urlse3','','REG_SZ','systeme','','2000,XP,Vista,Seven','HKEY_CURRENT_USER\\\Software\\\Microsoft\\\Windows\\\CurrentVersion\\\Run\\\WarnQuota','Avertissement quota','config')"; mysql_query($query); $result=mysql_query("SELECT CleID FROM corresp WHERE Intitule='warnquotas'"); } // $row = mysql_fetch_row($result); $result=mysql_query("SELECT CleID FROM restrictions WHERE CleID='$row[0]'"); //echo $row[0]; if(mysql_num_rows($result)==0){ $query = "INSERT INTO restrictions VALUES('','$row[0]','overfill','$browser $urlse3','')"; } else { $query = "UPDATE restrictions SET valeur='$browser $urlse3' where CleID='$row[0]'"; } $result=mysql_query($query); //echo $result; } else { $result=mysql_query("SELECT CleID FROM corresp WHERE Intitule='warnquotas'"); if(mysql_num_rows($result)!=0){ $row = mysql_fetch_row($result); $result=mysql_query("SELECT CleID FROM restrictions WHERE CleID='$row[0]'"); if(mysql_num_rows($result)!=0){ $query="DELETE FROM restrictions WHERE cleID='$row[0]'"; $result=mysql_query($query); } } } echo "

\n"; // echo "
\n"; }//fin du for partition echo "

".gettext(" Attribution (Modification) de quotas")."

\n"; echo "
"; //si 1er affichage, afficher /home if (!isset($partition)) {$partition ="/home";} //nouvelle presentation sous forme de tableau //preparation du tableau de parametres $parametre[1] = gettext("Modifier la partition :"); $objet_var="\n"; foreach ($arr_pourc as $pourc) { $objet_var="$objet_var