second initial commit
This commit is contained in:
parent
51d0c765b7
commit
45a0a47778
26
admin/bloque_salle.php
Normal file
26
admin/bloque_salle.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
Function bascule_salle($url) {
|
||||
$salles_bloquees = array();
|
||||
$r = new HttpRequest($url, HttpRequest::METH_GET);
|
||||
try {
|
||||
$r->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");
|
||||
?>
|
11
admin/con_ip.php
Normal file
11
admin/con_ip.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
header('Content-type: application/json; charset=utf-8');
|
||||
include('connexions.php');
|
||||
$ip = $_GET["ip"];
|
||||
$con_ip = Con_ip($ip);
|
||||
$tab = "";
|
||||
if ($con_ip) {
|
||||
$tab = json_encode($con_ip);
|
||||
}
|
||||
echo $tab;
|
||||
?>
|
232
admin/connexions.php
Normal file
232
admin/connexions.php
Normal file
@ -0,0 +1,232 @@
|
||||
<?php
|
||||
include_once('winlog_admin_conf.php');
|
||||
include_once('db_access.php');
|
||||
|
||||
// Fonction : Connexions_par_salle
|
||||
// Renvoie les connexions par salle sous la forme d'un Array
|
||||
function Connexions_par_salle($salle) {
|
||||
$machine_de_salle = Machines_de_salle(Machines());
|
||||
$machines_de_ma_salle = $machine_de_salle[$salle];
|
||||
$machines_connectees = Connexion_machine();
|
||||
$connexions_par_salle = array();
|
||||
if (!empty($machines_connectees)) {
|
||||
$i = 0;
|
||||
foreach($machines_de_ma_salle as $machine) {
|
||||
$connexions_par_salle[$i] = array();
|
||||
$connexions_par_salle[$i]["machine"] = $machine;
|
||||
$connexions_par_salle[$i]["username"] = $machines_connectees[$machine]["username"];
|
||||
$connexions_par_salle[$i]["stamp"] = $machines_connectees[$machine]["stamp"];
|
||||
$connexions_par_salle[$i]["ip"] = $machines_connectees[$machine]["ip"];
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
return $connexions_par_salle;
|
||||
}
|
||||
|
||||
// Fonction : Machines()
|
||||
// Renvoie toutes les machines existantes
|
||||
// Retourne un tableau associatif : machines[$machine_id] = ($salle, $os, $os_sp, $os_version, $ip_fixe)
|
||||
function Machines() {
|
||||
//$machines = array() ;
|
||||
$db = db_connect();
|
||||
|
||||
$req = 'select machine_id, salle, os, os_sp, os_version, ip_fixe from machines order by salle, machine_id';
|
||||
$res = db_query($db, $req);
|
||||
while ($mac = db_fetch_row($res)) {
|
||||
$machines[$mac[0]] = array($mac[1], $mac[2], $mac[3], $mac[4], $mac[5]);
|
||||
}
|
||||
db_free($res);
|
||||
return $machines;
|
||||
}
|
||||
// Fonction : Machines_de_salle($machines)
|
||||
// Renvoie les machines existantes des salles du tableau $machine (si le tableau est vide, alors appel à Machines()
|
||||
// Retourne un tableau associatif machines_de_salle[$salle_id]=($machine_id1, $machine_id2, ...)
|
||||
// En fait, cette fonction inverse le tableau associatif de la fonction machine sur la clé $salle
|
||||
function Machines_de_salle($machines) {
|
||||
$machines_de_salle = array() ;
|
||||
if (!$machines ) { $machines = Machines(); }
|
||||
while ($mac = current($machines)) {
|
||||
$machines_de_salle[$mac[0]][] = key($machines);
|
||||
next($machines);
|
||||
}
|
||||
return $machines_de_salle;
|
||||
}
|
||||
|
||||
// Fonction Connexion_machine()
|
||||
// Renvoie un tableau associatif des machines connectées:
|
||||
// connexion_machines[$machine_id]["username"] = $username
|
||||
// connexion_machines[$machine_id]["ip"] = $ip
|
||||
// connexion_machines[$machine_id]["stamp"] = $stamp
|
||||
function Connexion_machine() {
|
||||
$connexion_machine = array();
|
||||
$connexions = Connexions();
|
||||
if (!empty($connexions)) {
|
||||
foreach($connexions as $con) {
|
||||
$connexion_machine[$con["hote"]] = array();
|
||||
$connexion_machine[$con["hote"]]["username"] = $con["username"];
|
||||
$connexion_machine[$con["hote"]]["ip"] = $con["ip"];
|
||||
$connexion_machine[$con["hote"]]["stamp"] = $con["stamp"];
|
||||
}
|
||||
}
|
||||
return $connexion_machine;
|
||||
}
|
||||
|
||||
// Fonction Compte($username)
|
||||
// Renvoie les informations sur l'utilisateur du compte
|
||||
// Retourne un array (nom, prenom, groupe)
|
||||
function Compte($username) {
|
||||
$db = db_connect();
|
||||
$req = "SELECT nom, prenom, groupe FROM comptes WHERE username=\"{$username}\"";
|
||||
$res = db_query($db, $req);
|
||||
$compte = db_fetch_row($res);
|
||||
db_free($res);
|
||||
return $compte;
|
||||
}
|
||||
|
||||
// Fonction : Con_ip($ip)
|
||||
// Renvoie les informations de la connexion en cours relative à l'IP donnée
|
||||
// Retourne un array (con_id, username, hote, stamp, nom, prenom, groupe)
|
||||
|
||||
function Con_ip($ip) {
|
||||
$con = Connexions();
|
||||
$con_ip = array();
|
||||
$i = 0;
|
||||
$count = count($con);
|
||||
while($i < $count) {
|
||||
if ($con[$i]["ip"] == $ip ) {
|
||||
$cpt = Compte($con[$i]["username"]);
|
||||
$con_ip = array($con[$i]["con_id"], $con[$i]["username"], $con[$i]["hote"], $con[$i]["stamp"], $cpt[0], $cpt[1], $cpt[2]);
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return $con_ip;
|
||||
}
|
||||
|
||||
|
||||
// Fonction : Connexions()
|
||||
// Renvoie les connexions windows en cours du jour
|
||||
// Retourne un array indexé de connexions :
|
||||
// con[i]["con_id"] : id de connexion dans la table connexions
|
||||
// con[i]["username"] : login windows
|
||||
// con[i]["hote"] : nom de la machine
|
||||
// con[i]["stamp"] : timestamp unix de la connexion
|
||||
// con[i]["ip"] : adresse IP de la machine
|
||||
function Connexions() {
|
||||
$connexions = array();
|
||||
$db = db_connect();
|
||||
|
||||
$req = 'select con_id, username, hote, unix_timestamp(debut_con), ip from connexions where close=0 and (to_days(now())-to_days(debut_con)<1) order by username';
|
||||
$res = db_query($db, $req);
|
||||
$i = 0;
|
||||
while ($con = db_fetch_row($res)) {
|
||||
$connexions[$i] = array();
|
||||
$connexions[$i]["con_id"] = $con[0];
|
||||
$connexions[$i]["username"] = $con[1];
|
||||
$connexions[$i]["hote"] = $con[2];
|
||||
$connexions[$i]["stamp"] = $con[3];
|
||||
$connexions[$i]["ip"] = $con[4];
|
||||
$i++;
|
||||
}
|
||||
db_free($res);
|
||||
return $connexions;
|
||||
}
|
||||
|
||||
|
||||
// Fonction Derniere_connexion_machine($hote)
|
||||
// Renvoie les informations sur la dernière connexion sur la machine $hote
|
||||
// Retourne un array :
|
||||
// last_conn["username"] : login windows
|
||||
// last_conn["debut"] : timestamp du début de la dernière connexion
|
||||
// last_conn["fin"] : timestamp de la fin de la dernière connexion ( = debut, si connexion non encore terminée)
|
||||
// last_conn["close"] : 0 | 1 booléen indiquant si la connexion est terminée (1=close)
|
||||
function Derniere_connexion_machine($hote) {
|
||||
$last_conn = array();
|
||||
$db = db_connect();
|
||||
|
||||
$req = 'SELECT username, debut_con, fin_con, close FROM `connexions` WHERE hote="'.$hote.'" order by con_id desc limit 1';
|
||||
$res = db_query($db, $req);
|
||||
while ($con = db_fetch_row($res)) {
|
||||
$last_conn["username"] = $con[0];
|
||||
$last_conn["debut"] = $con[1];
|
||||
$last_conn["fin"] = $con[2];
|
||||
$last_conn["close"] = $con[3];
|
||||
}
|
||||
db_free($res);
|
||||
return $last_conn;
|
||||
}
|
||||
|
||||
|
||||
// Fonction Connexion_doyenne_salle
|
||||
// Renvoie la plus plus ancienne connexion d'une salle :
|
||||
// renvoie un entier correspondant au nombre de jours depuis la dernière connexion la plus ancienne dans la salle
|
||||
function Connexion_doyenne_salle($machines_de_la_salle) {
|
||||
$date_now = time();
|
||||
$date_last = $date_now;
|
||||
foreach($machines_de_la_salle as $machine) {
|
||||
$last_conn = Derniere_connexion_machine($machine);
|
||||
if (!empty($last_conn)) {
|
||||
$debut_last_machine = $last_conn["debut"];
|
||||
$date_last_machine = strtotime($debut_last_machine);
|
||||
if ($date_last_machine < $date_last) { $date_last = $date_last_machine; }
|
||||
}
|
||||
}
|
||||
$nb_jours = floor(($date_now-$date_last)/86400);
|
||||
return $nb_jours;
|
||||
}
|
||||
|
||||
// Fonction Connexions_wifi()
|
||||
// Renvoie les connexions wifi non marquées "close" en base
|
||||
// Retourne un array indexé de connexions :
|
||||
// con_wifi[i]["id"] : id de connexion wifi
|
||||
// con_wifi[i]["username"] : login CAS
|
||||
// con_wifi[i]["ip"] : ip allouée
|
||||
// con_wifi[i]["browser"] : user agent
|
||||
// con_wifi[i]["debut"] : timestamp du début de la connexion
|
||||
|
||||
function Connexions_wifi() {
|
||||
$connexions_wifi = array();
|
||||
$db = db_connect();
|
||||
|
||||
$req = 'select wifi_id, wifi_username, wifi_ip, wifi_browser, unix_timestamp(wifi_deb_conn) from wifi where close=0 and (to_days(now())-to_days(wifi_deb_conn)<1) order by wifi_deb_conn';
|
||||
$res = db_query($db, $req);
|
||||
$i = 0;
|
||||
while ($con = db_fetch_row($res)) {
|
||||
$connexions_wifi[$i]["id"] = $con[0];
|
||||
$connexions_wifi[$i]["username"] = $con[1];
|
||||
$connexions_wifi[$i]["ip"] = $con[2];
|
||||
$connexions_wifi[$i]["browser"] = $con[3];
|
||||
$connexions_wifi[$i]["debut"] = $con[4];
|
||||
$i++;
|
||||
}
|
||||
|
||||
db_free($res);
|
||||
return $connexions_wifi;
|
||||
}
|
||||
|
||||
// function connexions_blacklist_live()
|
||||
// Renvoie les enregistrements de la table proxy de moins de 15 secondes : dernières touches sur la blacklist
|
||||
// Retourne un array indexés : (ip, username, thème_blacklist) :
|
||||
// $connexion_bl_live[$i]["ip"] : ip de la machine à l'origine de la requête sur une URL blacklistée
|
||||
// $connexion_bl_live[$i]["username"] : username CAS à l'origine de la requête sur une URL blacklistée
|
||||
// $connexion_bl_live[$i]["target"] : thème de la blacklist concerné - adult, warez, games, etc
|
||||
function Connexions_blacklist_live() {
|
||||
$connexions_bl_live = array();
|
||||
$db = db_connect();
|
||||
|
||||
$req = 'select ip, username, target from proxy where timestampdiff(SECOND, timestamp(logts), timestamp(now())) < 15'; // on récupère les logs non checkés datant moins de 15s
|
||||
$res = db_query($db, $req);
|
||||
$i = 0;
|
||||
while ($log = db_fetch_row($res)) {
|
||||
$connexions_bl_live[$i]["ip"] = $log[0];
|
||||
$connexions_bl_live[$i]["username"] = $log[1];
|
||||
$connexions_bl_live[$i]["target"] = $log[2];
|
||||
$i++;
|
||||
}
|
||||
|
||||
db_free($res);
|
||||
return $connexions_bl_live;
|
||||
}
|
||||
|
||||
|
||||
?>
|
29
admin/db_access.php
Normal file
29
admin/db_access.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
// Fonction : db_connect
|
||||
// Renvoie une connexion à la base de données
|
||||
function db_connect() {
|
||||
global $db_server, $db_user, $db_passwd, $db_dbname;
|
||||
$db = new mysqli($db_server, $db_user, $db_passwd, $db_dbname);
|
||||
return $db;
|
||||
}
|
||||
|
||||
// Fonction : db_query
|
||||
// Renvoie le résultat d'une requête $query sur la base $db
|
||||
function db_query($db, $query) {
|
||||
$res = $db->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();
|
||||
}
|
||||
?>
|
35
admin/ma_salle_live.php
Normal file
35
admin/ma_salle_live.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
include_once('winlog_admin_conf.php');
|
||||
$delay = $delay * 1000;
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Winlog : Connexions en cours dans les salles</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<meta http-equiv="Content-Language" content="fr">
|
||||
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
|
||||
<script src="jquery/jquery-1.4.4.min.js"></script>
|
||||
<script>
|
||||
var auto_refresh = setInterval(
|
||||
function()
|
||||
{
|
||||
$('#loaddiv').load('reload_ma_salle.php');
|
||||
}, <?php echo($delay); ?>);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<!-- faire un bouton bloquer/débloquer l'accès Web de cette salle -->
|
||||
<!-- faire un bouton (sur un autre formulaire) bloquer/débloquer l'accès Windows de cette salle -->
|
||||
</form>
|
||||
<div class="salle"><? echo $salle ?></div>
|
||||
<div class="connexions">
|
||||
<div id="loaddiv">
|
||||
<?php
|
||||
include('reload_ma_salle.php');
|
||||
?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
49
admin/ordi.php
Normal file
49
admin/ordi.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
include 'XMPPHP/XMPP.php';
|
||||
|
||||
$pc=$_GET["pc"];
|
||||
|
||||
#Use XMPPHP_Log::LEVEL_VERBOSE to get more logging for error reports
|
||||
#If this doesn't work, are you running 64-bit PHP with < 5.2.6?
|
||||
$conn = new XMPPHP_XMPP('jabber.iut.rdz', 5222, 'winlog', 'winlog', 'xmpphp', 'iut.rdz', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
|
||||
|
||||
try {
|
||||
$conn->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());
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Machine <? echo($pc); ?></title>
|
||||
<script type="text/javascript" src="jquery/jquery-1.4.4.min.js"></script>
|
||||
<script type="text/javascript" src="strophejs/core.js"></script>
|
||||
<script type="text/javascript" src="strophejs/md5.js"></script>
|
||||
<script type="text/javascript" src="strophejs/base64.js"></script>
|
||||
<script type="text/javascript" src="infopc.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
|
||||
<h1>Machine <? echo($pc) ; ?></h1>
|
||||
|
||||
|
||||
<h2>Processus</h2>
|
||||
<div id="resultats"></div>
|
||||
<br>
|
||||
<h3>Notifications</h3>
|
||||
<div id="notifications"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
116
admin/recup_salles.php
Normal file
116
admin/recup_salles.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
// Récupération des salles et des machines dans l'AD, chargement dans la base
|
||||
include_once('winlog_admin_conf.php');
|
||||
include_once('db_access.php');
|
||||
|
||||
|
||||
// Connexion à la base winlog
|
||||
$db = db_connect();
|
||||
$req_purge_machine = "TRUNCATE machines";
|
||||
$req_purge_salle = "TRUNCATE salles";
|
||||
$req_purge_compte = "TRUNCATE comptes";
|
||||
|
||||
// connexion LDAP à l'AD
|
||||
$ldap_con = ldap_connect($ldap_host, $ldap_port);
|
||||
$ldap_auth = ldap_bind($ldap_con, $ldap_rdn, $ldap_passwd);
|
||||
|
||||
// Lecture des salles dans AD : machines pédagogiques
|
||||
$res_salles = ldap_search($ldap_con, $base_salles, $filtre_salles, $attr_salles);
|
||||
$entry_salles = ldap_get_entries($ldap_con, $res_salles);
|
||||
|
||||
// Lecture des salles dans AD : machines personnels
|
||||
$res_salles_personnel = ldap_search($ldap_con, $base_salles_personnel, $filtre_salles, $attr_salles);
|
||||
$entry_salles_personnel = ldap_get_entries($ldap_con, $res_salles_personnel);
|
||||
|
||||
// Insertion des machines
|
||||
db_query($db, $req_purge_machine);
|
||||
|
||||
// salles pédagiques
|
||||
$salles = array(); // Ce tableau indexé contiendra les salles qui possèdent des machines
|
||||
for ($i=0; $i<$entry_salles["count"];$i++) {
|
||||
$dn_tab = ldap_explode_dn($entry_salles[$i]["dn"],1);
|
||||
$salle = $dn_tab[1]; // le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine
|
||||
$salles[$i] = $salle; // tableau des salles construit à la volée
|
||||
$machine_id = $entry_salles[$i]["cn"][0];
|
||||
$os = "";
|
||||
$os_sp = "";
|
||||
$os_version = "";
|
||||
if (array_key_exists("operatingsystem", $entry_salles[$i])) { $os = addslashes($entry_salles[$i]["operatingsystem"][0]); }
|
||||
if (array_key_exists("operatingsystemservicepack", $entry_salles[$i])) { $os_sp = addslashes($entry_salles[$i]["operatingsystemservicepack"][0]); }
|
||||
if (array_key_exists("operatingsystemversion", $entry_salles[$i])) { $os_version = addslashes($entry_salles[$i]["operatingsystemversion"][0]); }
|
||||
|
||||
$req_machine = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$salle}', '{$os}', '{$os_sp}', '{$os_version}')";
|
||||
db_query($db, $req_machine);
|
||||
}
|
||||
|
||||
// machines personnels
|
||||
$salles_perso = array(); // Ce tableau indexé contiendra les salles qui possèdent des machines
|
||||
for ($i=0; $i<$entry_salles_personnel["count"];$i++) {
|
||||
$dn_tab = ldap_explode_dn($entry_salles_personnel[$i]["dn"],1);
|
||||
$salle_perso = $dn_tab[1]; // le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine
|
||||
$salles_perso[$i] = $salle_perso; // tableau des salles construit à la volée
|
||||
$machine_id = $entry_salles_personnel[$i]["cn"][0];
|
||||
$os = "";
|
||||
$os_sp = "";
|
||||
$os_version = "";
|
||||
if (array_key_exists("operatingsystem", $entry_salles[$i])) { $os = addslashes($entry_salles[$i]["operatingsystem"][0]); }
|
||||
if (array_key_exists("operatingsystemservicepack", $entry_salles[$i])) { $os_sp = addslashes($entry_salles[$i]["operatingsystemservicepack"][0]); }
|
||||
if (array_key_exists("operatingsystemversion", $entry_salles[$i])) { $os_version = addslashes($entry_salles[$i]["operatingsystemversion"][0]); }
|
||||
$req_machine = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$salle_perso}', '{$os}', '{$os_sp}', '{$os_version}')";
|
||||
db_query($db, $req_machine);
|
||||
}
|
||||
|
||||
// Insertion des salles pédagogiques
|
||||
$salles = array_unique($salles); // suppression des doublons dans le tableau des salles
|
||||
db_query($db, $req_purge_salle);
|
||||
foreach($salles as $s) {
|
||||
$req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')";
|
||||
db_query($db, $req_salle);
|
||||
}
|
||||
|
||||
// Insertion des salles personnels
|
||||
$salles_perso = array_unique($salles); // suppression des doublons dans le tableau des salles
|
||||
db_query($db, $req_purge_salle);
|
||||
foreach($salles_perso as $s) {
|
||||
$req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')";
|
||||
db_query($db, $req_salle);
|
||||
}
|
||||
|
||||
// Lecture des enseignants dans AD
|
||||
$res_enseignants = ldap_search($ldap_con, $base_enseignants, $filtre_enseignants, $attr_enseignants);
|
||||
$entry_enseignants = ldap_get_entries($ldap_con, $res_enseignants);
|
||||
|
||||
// Insertions des enseignants
|
||||
db_query($db, $req_purge_compte);
|
||||
for ($i=0; $i<$entry_enseignants["count"];$i++) {
|
||||
$dn_tab = ldap_explode_dn($entry_salles[$i]["dn"],1);
|
||||
$username = $entry_enseignants[$i]["samaccountname"][0];
|
||||
$prenom = "";
|
||||
$nom = "";
|
||||
if (array_key_exists("givenname", $entry_enseignants[$i])) { $prenom = addslashes($entry_enseignants[$i]["givenname"][0]); }
|
||||
if (array_key_exists("sn", $entry_enseignants[$i])) { $nom = addslashes($entry_enseignants[$i]["sn"][0]); }
|
||||
$req_enseignant = "INSERT INTO comptes (username, prenom, nom, groupe) VALUES ('{$username}', '{$prenom}', '{$nom}', 'Enseignant')";
|
||||
db_query($db, $req_enseignant);
|
||||
}
|
||||
|
||||
// Lecture des étudiants dans AD
|
||||
$res_etudiants = ldap_search($ldap_con, $base_etudiants, $filtre_etudiants, $attr_etudiants);
|
||||
$entry_etudiants = ldap_get_entries($ldap_con, $res_etudiants);
|
||||
|
||||
// Insertions des étudiants
|
||||
for ($i=0; $i<$entry_etudiants["count"];$i++) {
|
||||
$dn_tab = ldap_explode_dn($entry_etudiants[$i]["dn"],1);
|
||||
$groupe = $dn_tab[1];
|
||||
$username = $entry_etudiants[$i]["cn"][0];
|
||||
$prenom = "";
|
||||
$nom = "";
|
||||
if (array_key_exists("givenname", $entry_etudiants[$i])) { $prenom = addslashes($entry_etudiants[$i]["givenname"][0]); }
|
||||
if (array_key_exists("sn", $entry_etudiants[$i])) { $nom = addslashes($entry_etudiants[$i]["sn"][0]); }
|
||||
|
||||
$req_etudiant = "INSERT INTO comptes (username, prenom, nom, groupe) VALUES ('{$username}', '{$prenom}', '{$nom}', '{$groupe}')";
|
||||
db_query($db, $req_etudiant);
|
||||
}
|
||||
|
||||
ldap_close($ldap_con);
|
||||
header('Location: '.$winlog_url.'/admin/salles_live.php');
|
||||
?>
|
83
admin/reload_ma_salle.php
Normal file
83
admin/reload_ma_salle.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
include_once("connexions.php");
|
||||
Function Get_salles_bloquees() {
|
||||
$salles_bloquees = array();
|
||||
$r = new HttpRequest("http://cache.iut-rodez.fr/salles/salles_bloquees.php", HttpRequest::METH_GET);
|
||||
try {
|
||||
$r->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."<br/>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 = '<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;
|
||||
//$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 "<div class=\"salle\">$salle ($nb_connexions connexions sur $nb_machines_de_ma_salle machines) ($lien)</div>\n";
|
||||
echo "<table>";
|
||||
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 = "<b>"; $fin_style="</b>"; }
|
||||
echo "<tr>";
|
||||
echo "<td>".$style.$con["machine"].$fin_style."</td>";
|
||||
echo "<td>".$style.date("H:i:s",$con["stamp"]).$fin_style."</td>";
|
||||
echo "<td>".$style.$con["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>";
|
||||
?>
|
122
admin/reload_salles.php
Normal file
122
admin/reload_salles.php
Normal file
@ -0,0 +1,122 @@
|
||||
<?php
|
||||
include_once('connexions.php');
|
||||
|
||||
$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
|
||||
|
||||
Function Get_salles_bloquees() {
|
||||
$salles_bloquees = array();
|
||||
$r = new HttpRequest("http://cache.iut-rodez.fr/salles/salles_bloquees.php", HttpRequest::METH_GET);
|
||||
try {
|
||||
$r->send();
|
||||
if ($r->getResponseCode() == 200) {
|
||||
$r->getResponseBody();
|
||||
$salles_bloquees = json_decode($r->getResponseBody());
|
||||
}
|
||||
}
|
||||
catch (HttpException $ex) {
|
||||
echo $ex;
|
||||
}
|
||||
return $salles_bloquees;
|
||||
}
|
||||
|
||||
echo "<b>Connexions Windows en cours par salle</b><br/><br/>";
|
||||
echo "<br/>";
|
||||
// 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 = '<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 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 "<div class=\"salle\"><a href=\"salles/?salle=$salle\">$salle</a> ($i connexions sur $nb_machines_salle machines) <span class='".$class_jour."' title='".$class_jour."'> </span> ($lien)</div>\n";
|
||||
echo "<div class=\"connexions\"><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]=="Enseignant") { $style = "<b>"; $fin_style="</b>"; }
|
||||
echo "<tr id=\"".str_replace('.','-',$connexion_machine[$mac]["ip"])."\">";
|
||||
echo "<td><a href=\"taches.php?machine=".$mac."\">".$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);
|
||||
}
|
||||
// connexions wifi
|
||||
/*
|
||||
$connexions_wifi = Connexions_wifi();
|
||||
echo "<br/>";
|
||||
echo "<br/>";
|
||||
echo "<b>Connexions WIFI en cours</b> (".count($connexions_wifi) ." connexions)<br/><br/>";
|
||||
echo "<div class=\"wifi\">\n";
|
||||
echo "<table>\n";
|
||||
// boucle sur les connexions wifi en cours
|
||||
while ($wc = current($connexions_wifi)) {
|
||||
$l = '<tr id="'.str_replace('.','-',$wc["ip"]).'"><td>'.date("H:i:s",$wc["debut"]).'</td><td>'.$wc["ip"].'</td><td>'.$wc["username"].'</td><td><i><a href="http://user-agent-string.info/?Fuas='.$wc["browser"].'" target="_blank">'.$wc["browser"]."</a></i></td></tr>\n";
|
||||
echo $l;
|
||||
next($connexions_wifi);
|
||||
}
|
||||
echo "</table>\n</div>\n";
|
||||
|
||||
// on ajoute un appel masqué au script wifi/kanet.php pour forcer la purge des connexions wifi fermées
|
||||
$lien_purge = "<iframe src='/wifi/kanet.php' width='0' heigth='0' style='display: none;'></iframe>";
|
||||
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";
|
||||
}
|
||||
|
||||
?>
|
||||
<script>
|
||||
function flashLogin() {
|
||||
var bl=new Object();
|
||||
<?php
|
||||
echo $string_javascript_tab;
|
||||
?>
|
||||
for (var ip in bl) {
|
||||
//$("#"+ip).toggle("highlight");
|
||||
$("#"+ip).effect("highlight", {color:"darkorange"}, 1000);
|
||||
}
|
||||
}
|
||||
$(document).ready(flashLogin);
|
||||
</script>
|
||||
|
46
admin/salles_live.php
Normal file
46
admin/salles_live.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
header ('Content-Type: text/html; charset=utf-8');
|
||||
include_once('libhome.php');
|
||||
include_once('winlog_admin_conf.php');
|
||||
$delay = $delay * 1000;
|
||||
$username = phpCAS::getUser();
|
||||
$autorises = array("jerome.bousquie", "rosalie.viala", "monique.malric", "dominique.seryies", "nicolas.gaven", "systeme.ut1", "thierry.deltort");
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Winlog : Connexions en cours dans les salles</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<meta http-equiv="Content-Language" content="fr">
|
||||
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
|
||||
<link rel="stylesheet" href="jquery/jquery-ui-1.10.0.custom.css">
|
||||
<script src="jquery/jquery-1.9.js"></script>
|
||||
<script src="jquery/jquery-ui-1.10.0.custom.min.js"></script>
|
||||
<script>
|
||||
var auto_refresh = setInterval(
|
||||
function()
|
||||
{
|
||||
$('#loaddiv').load('reload_salles.php');
|
||||
}, <?php echo($delay); ?>);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
// Si le compte est autorisé à voir les salles, on affiche le div
|
||||
if (in_array($username, $autorises)) {
|
||||
echo('<div id="loaddiv">');
|
||||
include('reload_salles.php');
|
||||
echo('</div>');
|
||||
}
|
||||
else
|
||||
{
|
||||
// sinon on affiche un message
|
||||
echo("Vous n'avez pas l'autorisation d'afficher cette page");
|
||||
}
|
||||
?>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="recup_salles.php"><i>rechargement des comptes, machines et salles</i></a>
|
||||
</body>
|
||||
</html>
|
33
admin/stop.php
Normal file
33
admin/stop.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// Ce script récupère une action (shutdown ou restart) et un tableau json de machines
|
||||
// Il émet une requête POST à Ghost:81 pour executer le psshutdown sur le domaine
|
||||
|
||||
// URL du script stop.php sur Ghost:81
|
||||
$url = "http://10.5.0.15:81/stop.php";
|
||||
|
||||
$act = "";
|
||||
$logout = "fermer la session";
|
||||
$logout_salle = "fermer toutes les sessions";
|
||||
$eteindre = "éteindre cette machine";
|
||||
$eteindre_salle = "éteindre toute la salle";
|
||||
$restart = "redémarrer cette machine";
|
||||
$restart_salle = "redémarrer toute la salle";
|
||||
|
||||
$action_logout = array($logout, $logout_salle);
|
||||
$action_stop = array($eteindre, $eteindre_salle);
|
||||
$action_restart = array($restart, $restart_salle);
|
||||
|
||||
$action = $_POST["stop"];
|
||||
$hosts = $_POST["host"]; // on récupère une chaîne de caractères représentant un tableau json
|
||||
|
||||
// on choisit la valeur de l'option à passer à la commande shutdown sur Ghost
|
||||
if (in_array($action, $action_logout)) { $act = "l"; }
|
||||
if (in_array($action, $action_stop)) { $act = "s"; }
|
||||
if (in_array($action, $action_restart)) { $act = "r"; }
|
||||
if ($act != "") {
|
||||
$http = new HttpRequest( $url, HttpRequest::METH_POST);
|
||||
$http->addPostFields(array('act'=>$act, 'hosts'=>$hosts ));
|
||||
try { $http->send(); } catch (HttpException $ex) { echo $ex; }
|
||||
}
|
||||
header('Location: salles_live.php');
|
||||
?>
|
73
admin/taches.php
Normal file
73
admin/taches.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
// Ce script affiche les processus en cours sur une machine windows
|
||||
// Pour ceci il interroge (http) un serveur windows du domaine sur le lequel sera exécuté une commande tasklist /s $host
|
||||
|
||||
Function get_tasks($url) {
|
||||
$salles_bloquees = array();
|
||||
$r = new HttpRequest($url, HttpRequest::METH_GET);
|
||||
try {
|
||||
$r->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="<table><th>Processus</th><th>mémoire</th><th>Propriétaire</th>";
|
||||
$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."<tr class='proc".$class_user."'><td><a href=\"https://www.google.fr/search?q=".$lig_prog[0]."\" target=\"_blank\" >".$lig_prog[0]."</a></td><td>".$lig_prog[4]."</td><td>".$lig_prog[5]."</td></tr>\n";
|
||||
}
|
||||
$msg = $msg."</table>";
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Winlog : Connexions en cours dans les salles</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="refresh" content=20>
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<meta http-equiv="Content-Language" content="fr">
|
||||
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
|
||||
</head>
|
||||
<body>
|
||||
<h2>Processus utilisateurs de la machine <?php echo $host; ?> <a href="salles_live.php">[retour]</a></h2>
|
||||
<form action="stop.php" method="POST">
|
||||
<input type="hidden" name="host" value='<?php echo($host_json); ?>'>
|
||||
<!--<input type="submit" value="fermer la session" name="stop">-->
|
||||
<input type="submit" value="redémarrer cette machine" name="stop">
|
||||
<input type="submit" value="éteindre cette machine" name="stop">
|
||||
</form>
|
||||
<?php
|
||||
echo $msg;
|
||||
?>
|
||||
</body>
|
||||
</hmtl>
|
7
winlogconf.php.example
Normal file
7
winlogconf.php.example
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$db_server = "p:localhost";
|
||||
$db_dbname ="winlog";
|
||||
$db_user = "db_user";
|
||||
$db_passwd = "db_password";
|
||||
$server_code = "salt";
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user