From 45a0a477789960212d21f446dec92f063b7b55ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bousqui=C3=A9?= Date: Thu, 22 Sep 2016 14:24:56 +0200 Subject: [PATCH] second initial commit --- admin/bloque_salle.php | 26 +++++ admin/con_ip.php | 11 ++ admin/connexions.php | 232 ++++++++++++++++++++++++++++++++++++++ admin/db_access.php | 29 +++++ admin/ma_salle_live.php | 35 ++++++ admin/ordi.php | 49 ++++++++ admin/recup_salles.php | 116 +++++++++++++++++++ admin/reload_ma_salle.php | 83 ++++++++++++++ admin/reload_salles.php | 122 ++++++++++++++++++++ admin/salles_live.php | 46 ++++++++ admin/stop.php | 33 ++++++ admin/taches.php | 73 ++++++++++++ winlogconf.php.example | 7 ++ 13 files changed, 862 insertions(+) create mode 100644 admin/bloque_salle.php create mode 100644 admin/con_ip.php create mode 100644 admin/connexions.php create mode 100644 admin/db_access.php create mode 100644 admin/ma_salle_live.php create mode 100644 admin/ordi.php create mode 100644 admin/recup_salles.php create mode 100644 admin/reload_ma_salle.php create mode 100644 admin/reload_salles.php create mode 100644 admin/salles_live.php create mode 100644 admin/stop.php create mode 100644 admin/taches.php create mode 100644 winlogconf.php.example diff --git a/admin/bloque_salle.php b/admin/bloque_salle.php new file mode 100644 index 0000000..ccede44 --- /dev/null +++ b/admin/bloque_salle.php @@ -0,0 +1,26 @@ +send(); + if ($r->getResponseCode() == 200) { + $r->getResponseBody(); + $reponse = json_decode($r->getResponseBody()); + } + } + catch (HttpException $ex) { + echo $ex; + } + return $r->getResponseCode(); +} +$action = $_GET["a"]; +$salle = $_GET["s"]; +$url = ""; +if ($action === "b") { $url = "http://cache.iut-rodez.fr/salles/bloque_salle.php?s=$salle"; } +if ($action === "d") { $url = "http://cache.iut-rodez.fr/salles/debloque_salle.php?s=$salle"; } + +if ($action != "" ) { bascule_salle($url); } +$precedent = $_SERVER["HTTP_REFERER"]; +header("Location: $precedent"); +?> diff --git a/admin/con_ip.php b/admin/con_ip.php new file mode 100644 index 0000000..d64e569 --- /dev/null +++ b/admin/con_ip.php @@ -0,0 +1,11 @@ + diff --git a/admin/connexions.php b/admin/connexions.php new file mode 100644 index 0000000..bdc1e36 --- /dev/null +++ b/admin/connexions.php @@ -0,0 +1,232 @@ + diff --git a/admin/db_access.php b/admin/db_access.php new file mode 100644 index 0000000..5f0208a --- /dev/null +++ b/admin/db_access.php @@ -0,0 +1,29 @@ +query($query); + return $res; +} + +// Fonction : db_fetch_row +// Renvoie un tableau indexé à partir d'une ligne de résultat d'une requête +function db_fetch_row($res) { + $row = $res->fetch_row(); + return $row; +} + +// Fonction : db_free +// Libère la mémoire +function db_free($res) { + $res->free(); +} +?> \ No newline at end of file diff --git a/admin/ma_salle_live.php b/admin/ma_salle_live.php new file mode 100644 index 0000000..1c5840e --- /dev/null +++ b/admin/ma_salle_live.php @@ -0,0 +1,35 @@ + + + + + Winlog : Connexions en cours dans les salles + + + + + + + + +
+ + +
+
+
+
+ +
+ + diff --git a/admin/ordi.php b/admin/ordi.php new file mode 100644 index 0000000..8483798 --- /dev/null +++ b/admin/ordi.php @@ -0,0 +1,49 @@ +connect(); + $conn->processUntil('session_start'); + $conn->presence(); + //$msg = "task ".$pc." | findstr DOMETUD | sort"; + //$msg = "reload-execute"; + $msg = "task ".$pc." | findstr IUT | sort"; + $conn->message('windows@iut.rdz', $msg); + $conn->disconnect(); +} catch(XMPPHP_Exception $e) { + die($e->getMessage()); +} + +?> + + + + Machine <? echo($pc); ?> + + + + + + + + + + + +

Machine

+ + +

Processus

+
+
+

Notifications

+
+ + + diff --git a/admin/recup_salles.php b/admin/recup_salles.php new file mode 100644 index 0000000..c3b618c --- /dev/null +++ b/admin/recup_salles.php @@ -0,0 +1,116 @@ + diff --git a/admin/reload_ma_salle.php b/admin/reload_ma_salle.php new file mode 100644 index 0000000..d9c6dab --- /dev/null +++ b/admin/reload_ma_salle.php @@ -0,0 +1,83 @@ +send(); + if ($r->getResponseCode() == 200) { + $r->getResponseBody(); + $salles_bloquees = json_decode($r->getResponseBody()); + } + } + catch (HttpException $ex) { + echo $ex; + } + return $salles_bloquees; + } +/* +Function Get_user_connected($ip) { + $user = array(); + $r = new HttpRequest("https://winlog.iut.rdz/admin/con_ip.php?ip=$ip", HttpRequest::METH_GET); + try { + $r->send(); + if ($r->getResponseCode() == 200) { + $r->getResponseBody(); + $user = json_decode($r->getResponseBody()); + } + } + catch (HttpException $ex) { + echo $ex; + } + return $user; + } +*/ +if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) + $ip_connectee = $_SERVER["HTTP_X_FORWARDED_FOR"]; + else + $ip_connectee = $_SERVER["REMOTE_ADDR"]; + +$con = Con_ip($ip_connectee); +if (empty($con) || $con[6] !== "Enseignant") { echo($msg_salle_live_non_autorise."
adresse IP : ".$ip_connectee); return; } // on quitte immédiatement si non autorisé +$nom = $con[4]; +$prenom = $con[5]; +$hote = $con[2]; +$machines = Machines(); +$salle = $machines[$hote][0]; +if ( is_null($salle) ) { echo "hors d'une salle"; return; } //on quitte immédiatement si on n'est pas sur une machine d'une salle + +$bloque = 'bloque'; +$debloque = 'debloque'; +$lien = $bloque; +//$salles_bloquees = Get_salles_bloquees(); +//if (in_array(strtolower($salle), $salles_bloquees)) { $lien = $debloque; } +$connexions_de_ma_salle = Connexions_par_salle($salle); +$machines_de_salle = machines_de_salle($machines); +$nb_machines_de_ma_salle = count($machines_de_salle[$salle]); +$nb_connexions = 0; +foreach($connexions_de_ma_salle as $con) { + if ($con["username"]) { // on ne compte que les machines connectées + $nb_connexions++; + } + } +echo "
$salle ($nb_connexions connexions sur $nb_machines_de_ma_salle machines) ($lien)
\n"; +echo ""; +foreach($connexions_de_ma_salle as $con) { + if ($con["username"]) { // on n'affiche que les machines connectées + $username = $con["username"]; + $cpt = Compte($username); + $style = ""; + $fin_style = ""; + if ($cpt[2]=="Enseignant") { $style = ""; $fin_style=""; } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + } + } +echo "
".$style.$con["machine"].$fin_style."".$style.date("H:i:s",$con["stamp"]).$fin_style."".$style.$con["ip"].$fin_style."".$style.$username.$fin_style."".$style.$cpt[1]." ".$cpt[0].$fin_style."".$style.$cpt[2].$fin_style."
"; + ?> diff --git a/admin/reload_salles.php b/admin/reload_salles.php new file mode 100644 index 0000000..f2db25a --- /dev/null +++ b/admin/reload_salles.php @@ -0,0 +1,122 @@ +send(); + if ($r->getResponseCode() == 200) { + $r->getResponseBody(); + $salles_bloquees = json_decode($r->getResponseBody()); + } + } + catch (HttpException $ex) { + echo $ex; + } + return $salles_bloquees; +} + +echo "Connexions Windows en cours par salle

"; +echo "
"; +// connexions dans les salles +//$salles_bloquees = Get_salles_bloquees(); + +while ($mdc = current($machines_de_salle)) { + $salle = key($machines_de_salle); + if (!in_array($salle, $salles_invisibles) ) { + $bloque = 'bloque'; + $debloque = 'debloque'; + $lien = $bloque; + // calcul dernière connexion la plus ancienne + $jours_last_con = Connexion_doyenne_salle($machines_de_salle[$salle]); + $class_jour ='jours '; + if ($jours_last_con > 9) { $class_jour = 'jours j10'; } + if ($jours_last_con > 19) { $class_jour = 'jours j20'; } + if ($jours_last_con > 29) { $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 "
$salle ($i connexions sur $nb_machines_salle machines)      ($lien)
\n"; + echo "
\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]=="Enseignant") { $style = ""; $fin_style=""; } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + } + } + } + echo "
".$style.$mac.$fin_style."".$style.date("H:i:s",$connexion_machine[$mac]["stamp"]).$fin_style."".$style.$connexion_machine[$mac]["ip"].$fin_style."".$style.$username.$fin_style."".$style.$cpt[1]." ".$cpt[0].$fin_style."".$style.$cpt[2].$fin_style."
\n"; + } // fin du test salle invisible + next($machines_de_salle); + } +// connexions wifi +/* +$connexions_wifi = Connexions_wifi(); +echo "
"; +echo "
"; +echo "Connexions WIFI en cours (".count($connexions_wifi) ." connexions)

"; +echo "
\n"; +echo "\n"; + // boucle sur les connexions wifi en cours +while ($wc = current($connexions_wifi)) { + $l = '\n"; + echo $l; + next($connexions_wifi); +} +echo "
'.date("H:i:s",$wc["debut"]).''.$wc["ip"].''.$wc["username"].''.$wc["browser"]."
\n
\n"; + +// on ajoute un appel masqué au script wifi/kanet.php pour forcer la purge des connexions wifi fermées +$lien_purge = ""; +echo $lien_purge; +*/ +$connexions_blacklist_live = Connexions_blacklist_live(); +$string_javascript_tab = ""; +foreach($connexions_blacklist_live as $bl) { + $string_javascript_tab = $string_javascript_tab."bl[\"".str_replace('.','-',$bl["ip"])."\"]=[\"".$bl["username"]."\", \"".$bl["target"]."\"];\n"; +} + +?> + + diff --git a/admin/salles_live.php b/admin/salles_live.php new file mode 100644 index 0000000..ac0ef26 --- /dev/null +++ b/admin/salles_live.php @@ -0,0 +1,46 @@ + + + + + Winlog : Connexions en cours dans les salles + + + + + + + + + + + '); + include('reload_salles.php'); + echo('
'); + } + else + { + // sinon on affiche un message + echo("Vous n'avez pas l'autorisation d'afficher cette page"); + } +?> +
+
+rechargement des comptes, machines et salles + + diff --git a/admin/stop.php b/admin/stop.php new file mode 100644 index 0000000..48237a3 --- /dev/null +++ b/admin/stop.php @@ -0,0 +1,33 @@ +addPostFields(array('act'=>$act, 'hosts'=>$hosts )); + try { $http->send(); } catch (HttpException $ex) { echo $ex; } +} +header('Location: salles_live.php'); +?> diff --git a/admin/taches.php b/admin/taches.php new file mode 100644 index 0000000..e55863a --- /dev/null +++ b/admin/taches.php @@ -0,0 +1,73 @@ +send(); + if ($r->getResponseCode() == 200) { + $r->getResponseBody(); + $reponse = json_decode($r->getResponseBody()); + } + } + catch (HttpException $ex) { + echo $ex; + } + return $reponse; +} + +// Variables + +$precedent = $_SERVER["HTTP_REFERER"]; +$host = $_GET['machine']; +//$url = "http://10.2.0.13/task.php?host=".$host; // ancien seretud06 +$url = "http://10.5.0.15:81/task.php?host=".$host; // Ghost + apache, port 81 +$processus_utilisateur = 'IUT'; // motif identifiant un processus utilisateur dans la task list +$msg = ""; + + +// si le script est appelé sans paramètre, on revient à la page précédente +if ($host == "" ) { header("Location: $precedent"); exit; } +$host_json = json_encode(array($host)); + +$proc = get_tasks($url); +if (sizeof($proc) == 0) { $msg = "La machine ".$host." n'a renvoyé aucune réponse."; } +else { + $msg=""; + $lig_proc =array(); + foreach($proc as $li) { + $li = str_replace('ÿ','',$li); + $li = str_replace('"','',$li); + $lig_prog = explode(',', $li); + $class_user = ""; + if (substr($lig_prog[5],0,strlen($processus_utilisateur))==$processus_utilisateur) { $class_user = " p_user"; }; + $msg = $msg."\n"; + } + $msg = $msg."
ProcessusmémoirePropriétaire
".$lig_prog[0]."".$lig_prog[4]."".$lig_prog[5]."
"; +} +?> + + + + Winlog : Connexions en cours dans les salles + + + + + + + +

Processus utilisateurs de la machine     [retour]

+
+ + + + +
+ + + diff --git a/winlogconf.php.example b/winlogconf.php.example new file mode 100644 index 0000000..427d980 --- /dev/null +++ b/winlogconf.php.example @@ -0,0 +1,7 @@ +