117 lines
5.1 KiB
PHP
117 lines
5.1 KiB
PHP
<?php
|
|
// Cette page affiche le code HTML (sans les en-têtes) de la liste des connexions par salle.
|
|
// Elle est incluse dans un <div> et rechargée à intervalles réguliers par le script salles_live.php.
|
|
include_once("winlog_admin_conf.php");
|
|
include_once('connexions.php');
|
|
include_once('client_http.php');
|
|
include_once('session.php');
|
|
|
|
$username = Username();
|
|
$profil = Profil($username);
|
|
FiltreProfil($profil);
|
|
|
|
$machines = Machines(); // récupération de toutes les machines connues
|
|
$machines_de_salle = Machines_de_salle($machines); // range les machines dans le tableau $machines_de_salle
|
|
$connexion_machine = Connexion_machine(); // récupère toutes les connexions en cours
|
|
|
|
$supervis = ($profil >= $niveaux[$roles[2]]); // booleen : utilisateur superviseur ?
|
|
|
|
// Fonction de récupération de la liste des salles bloquées sur SquidGuard
|
|
Function Get_salles_bloquees($url) {
|
|
$salles_bloquees = array();
|
|
$res = GetURL($url);
|
|
if ($res != "") {
|
|
$salles_bloquees = json_decode($res);
|
|
}
|
|
return $salles_bloquees;
|
|
};
|
|
|
|
|
|
// connexions dans les salles
|
|
$salles_bloquees = Get_salles_bloquees($url_salles_bloquees);
|
|
|
|
while ($mdc = current($machines_de_salle)) {
|
|
$salle = key($machines_de_salle);
|
|
|
|
if (!in_array($salle, $salles_invisibles)) {
|
|
|
|
// si utilisateur administrateur alors lien bloque/débloque activé
|
|
$bloque = '<i>autorisé</i>';
|
|
$debloque = '<i>bloqué</i>';
|
|
if ($supervis) {
|
|
$bloque = '<i><a href="bloque_salle.php?a=b&s='.strtolower($salle).'">bloque</a></i>';
|
|
$debloque = '<i><a href="bloque_salle.php?a=d&s='.strtolower($salle).'">debloque</a></i>';
|
|
}
|
|
$lien = $bloque;
|
|
|
|
// calcul dernière plus ancienne connexion
|
|
$jours_last_con = Connexion_doyenne_salle($machines_de_salle[$salle]);
|
|
$class_jour ='jours j-10';
|
|
if ($jours_last_con >= $j10) { $class_jour = 'jours j10'; }
|
|
if ($jours_last_con >= $j20) { $class_jour = 'jours j20'; }
|
|
if ($jours_last_con >= $j30) { $class_jour = 'jours j30'; }
|
|
|
|
// lien bloque/debloque
|
|
if (in_array(strtolower($salle), $salles_bloquees)) {
|
|
$lien = $debloque;
|
|
}
|
|
|
|
// calcul nombre de machines connectées / nombre machines de la salle
|
|
$nb_machines_salle = count($mdc);
|
|
$i = 0;
|
|
if (!empty($connexion_machine)) {
|
|
foreach($mdc as $mac) {
|
|
if ( array_key_exists($mac, $connexion_machine)) { // on ne compte que les machines connectées
|
|
$i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// affichage ligne de salle
|
|
echo "<a class=\"anchor\" id=\"$salle\"></a>\n";
|
|
$fichier_salle = $repertoire_salles.$salle.".php";
|
|
$lien_salle = "<span id=\"l-$salle\">$salle</span>";
|
|
if ( file_exists($fichier_salle) ) {
|
|
$lien_salle = "<a href=\"salles/?salle=$salle\" id=\"l-$salle\">$salle</a>";
|
|
}
|
|
echo "<div class=\"salle\"><span id=\"b-$salle\" class=\"toggler_style toggler\"></span>$lien_salle ($i connexions sur $nb_machines_salle machines = ". number_format($i / $nb_machines_salle * 100, 1) ." %) <span id='j-".$salle."' class='".$class_jour."' title='".$class_jour."'> </span> ($lien)</div>\n";
|
|
echo "<div class=\"connexions\" id=\"c-$salle\"><table>\n";
|
|
|
|
if (!empty($connexion_machine)) {
|
|
// parcours des machines connectées de la salle courante
|
|
foreach($mdc as $mac) {
|
|
if (array_key_exists($mac, $connexion_machine)) { // on n'affiche que les machines connectées
|
|
$username = $connexion_machine[$mac]["username"];
|
|
$cpt = Compte($username); // récupère les informations sur l'utilisateur courant
|
|
$style = "";
|
|
$fin_style = "";
|
|
if ($cpt[2] == $lib_personnel) {
|
|
$style = "<b>";
|
|
$fin_style="</b>";
|
|
}
|
|
echo "<tr id=\"".str_replace('.','-',$connexion_machine[$mac]["ip"])."\">";
|
|
echo "<td><a href=\"machine.php?id=".$mac."\" target=\"blank\">".$style.$mac.$fin_style."</a></td>";
|
|
echo "<td>".$style.date("H:i:s",$connexion_machine[$mac]["stamp"]).$fin_style."</td>";
|
|
echo "<td>".$style.$connexion_machine[$mac]["ip"].$fin_style."</td>";
|
|
echo "<td>".$style.$username.$fin_style."</td>";
|
|
echo "<td>".$style.$cpt[1]." ".$cpt[0].$fin_style."</td>";
|
|
echo "<td>".$style.$cpt[2].$fin_style."</td>";
|
|
echo "</tr>\n";
|
|
}
|
|
}
|
|
}
|
|
echo "</table></div>\n";
|
|
} // fin du test salle invisible
|
|
next($machines_de_salle);
|
|
}
|
|
|
|
// Récupération des connexions sur la blacklist Squid
|
|
// Stockage du résultat dans un dataset d'une <div> dédiée
|
|
$connexions_blacklist_live = Connexions_blacklist_live($delay, $machines);
|
|
$div_blacklist = '<div id="blacklist" data-rejected=\''.json_encode($connexions_blacklist_live).'\'></div>';
|
|
echo($div_blacklist);
|
|
|
|
?>
|
|
|
|
|