security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } // Load settings if (!loadSettings()) { die("Erreur chargement settings"); } // // Protection contre les attaques. // if (isset($_POST['valid_param_mdp'])) { check_token(); settype($_POST['nombre_tentatives_connexion'],"integer"); settype($_POST['temps_compte_verrouille'],"integer"); if ($_POST['nombre_tentatives_connexion'] < 1) $_POST['nombre_tentatives_connexion'] = 1; if ($_POST['temps_compte_verrouille'] < 0) $_POST['temps_compte_verrouille'] = 0; if (!saveSetting("nombre_tentatives_connexion", $_POST['nombre_tentatives_connexion'])) { $msg1 = "Il y a eu un problème lors de l'enregistrement du paramètre nombre_tentatives_connexion."; } else { $msg1 = ""; } if (!saveSetting("temps_compte_verrouille", $_POST['temps_compte_verrouille'])) { $msg2 = "Il y a eu un problème lors de l'enregistrement du paramètre temps_compte_verrouille."; } else { $msg2 = ""; } if (($msg1 == "") and ($msg2 == "")) $msg = "Les paramètres ont été correctement enregistrées"; else $msg = $msg1." ".$msg2; } //Activation / désactivation du login if (isset($_POST['disable_login'])) { check_token(); if (!saveSetting("disable_login", $_POST['disable_login'])) { $msg = "Il y a eu un problème lors de l'enregistrement du paramètre d'activation/désactivation des connexions."; } else { $msg = "l'enregistrement du paramètre d'activation/désactivation des connexions a été effectué avec succès."; } } //Activation / désactivation de la procédure de réinitialisation du mot de passe par email if (isset($_POST['enable_password_recovery'])) { check_token(); if (!saveSetting("enable_password_recovery", $_POST['enable_password_recovery'])) { $msg = "Il y a eu un problème lors de l'enregistrement du paramètre d'activation/désactivation des connexions."; } else { $msg = "l'enregistrement du paramètre d'activation/désactivation des connexions a été effectué avec succès."; } } //EXPORT CSV if(isset($_GET['mode'])){ if($_GET['mode']=="csv"){ if (!isset($_SESSION['donnees_export_csv_log'])) { $ligne_csv = false ; } else {$ligne_csv = $_SESSION['donnees_export_csv_log'];} $chaine_titre="Export_log_Annee_scolaire_".getSettingValue("gepiYear"); $now = gmdate('D, d M Y H:i:s') . ' GMT'; $nom_fic=$chaine_titre."_".$now.".csv"; send_file_download_headers('text/x-csv',$nom_fic); $nb_ligne = count($ligne_csv); $fd=""; for ($i=0;$i<$nb_ligne;$i++) { $fd.=$ligne_csv[$i]; } echo echo_csv_encoded($fd); die(); } } //FIN EXPORT CSV if(isset($_POST['valid_envoi_mail_connexion'])){ check_token(); $envoi_mail_connexion=isset($_POST['envoi_mail_connexion']) ? $_POST['envoi_mail_connexion'] : "n"; if($envoi_mail_connexion!="y") { $envoi_mail_connexion="n"; } if (!saveSetting("envoi_mail_connexion", $envoi_mail_connexion)) { $msg = "Il y a eu un problème lors de l'enregistrement du paramètre d'envoi ou non de mail lors des connexions."; } else { $msg = "l'enregistrement du paramètre d'envoi ou non de mail lors des connexions a été effectué avec succès."; } } if(isset($_POST['valid_message'])){ check_token(); $message_login=isset($_POST['message_login']) ? $_POST['message_login'] : 0; //$sql="UPDATE setting SET value='$message_login' WHERE name='message_login'"; saveSetting('message_login',$message_login); } //================================ // End standart header require_once("../lib/header.inc.php"); //================================ // debug_var(); //isset($mode_navig); $mode_navig = isset($_POST["mode_navig"]) ? $_POST["mode_navig"] : (isset($_GET["mode_navig"]) ? $_GET["mode_navig"] : NULL); if ($mode_navig == 'accueil') { $retour = "../accueil.php"; } else { $retour = "index.php#gestion_connect"; } ?>

Retour Retour

Utilisateurs connectés

now())"; $sql = "select u.login, concat(u.prenom, ' ', u.nom) utilisa, u.email, u.auth_mode, u.statut, l.END from log l, utilisateurs u where (l.LOGIN = u.login and l.END > now()) ORDER BY statut"; $res = sql_query($sql); if ($res) { ?>
Utilisateurs connectés en ce moment
Utilisateur Statut Envoyer un mail Déconnecter en changeant le mot de passe Fin théorique de session
fetch_array(); $sql= " SELECT classe FROM classes WHERE id='$id[id_classe]'"; $res2 = mysqli_query($mysqli, $sql); $classe_eleve = $res2->fetch_array(); } elseif ($row[4]=="responsable") { $sql= " SELECT pers_id FROM resp_pers where login='$row[0]'"; $res3 = mysqli_query($mysqli, $sql); $id = $res3->fetch_array(); echo "".$row[1].""; } else { ?> (*)

Activation/désactivation des connexions

Les connexions sont actuellement désactivées.

Les connexions sont actuellement activées.

Les connexions futures sont actuellement désactivées.
Aucune nouvelle connexion n'est acceptée.

En désactivant les connexions, vous rendez impossible la connexion au site pour les utilisateurs, hormis les administrateurs.

/>
( Attention, les utilisateurs actuellement connectés sont automatiquement déconnectés. )

/>
( et attendre la fin des connexions actuelles pour pouvoir désactiver les connexions et procéder à une opération de maintenance, par exemple )

/>


Faire apparaitre un message sur la page de login

num_rows == 0) { ?>

Aucun message n'a encore été saisi.

Saisir de nouveaux messages.

/>

fetch_object()) { ?>

id) {echo " checked='checked'";} ?> />

Saisir de nouveaux messages ou modifier des messages existants.


Protection contre les attaques forces brutes.

Configuration de GEPI de manière à bloquer temporairement le compte d'un utilisateur après un certain nombre de tentatives de connexion infructueuses.
En contrepartie, un pirate peut se servir de ce mécanisme d'auto-défense pour bloquer en permanence des comptes utilisateur ou administrateur.
Si vous ête un jour confronté à cette situation d'urgence, vous pourrez dans le fichier "config.inc.php", forcer le débloquage des comptes administrateur et/ou mettre en liste noire, la ou les adresses IP incriminées.


Avertissement lors des connexions

Il est possible d'avertir les utilisateurs par mail lors de leur connexion, sous réserve que leur adresse mail soit renseignée dans Gepi (information modifiable par le lien 'Gérer mon compte').
Si l'adresse n'est pas renseignée aucun mail ne peut parvenir à l'utilisateur qui se connecte.
Si l'adresse est correctement renseignée, en cas d'usurpation comme de connexion légitime, l'utilisateur recevra un mail.
S'il ne réagit pas en changeant de mot de passe et en avertissant l'administrateur lors d'une usurpation, des intrusions ultérieures pourront être opérées sans que l'utilisateur soit averti si l'intrus prend soin de supprimer/modifier l'adresse mail dans 'Gérer mon compte'.

Activer l'envoi de mail lors de la connexion : /> />


Journal des connexions

?mode=csv'>CSV
now() - interval " . $duree2 . " day";} if ($duree2 == '20dernieres') {$requete1 = "LIMIT 0,20"; $requete='';} $sql = "select l.LOGIN, concat(prenom, ' ', nom) utili, l.START, l.SESSION_ID, l.REMOTE_ADDR, l.USER_AGENT, l.REFERER, l.AUTOCLOSE, l.END, u.email, u.statut from log l LEFT JOIN utilisateurs u ON l.LOGIN = u.login ".$requete; $sql.=" order by "; if(isset($_GET['order_by'])) { $order_by=$_GET['order_by']; if($order_by=='ip') { $sql.="l.REMOTE_ADDR, "; } else { unset($order_by); } } $sql.="START desc ".$requete1; $day_now = date("d"); $month_now = date("m"); $year_now = date("Y"); $hour_now = date("H"); $minute_now = date("i"); $now = mktime($hour_now, $minute_now, 0, $month_now, $day_now, $year_now); //$res = sql_query($sql); $res = mysqli_query($mysqli, $sql); $ligne_csv[0] = "statut;login;debut_session;fin_session;adresse_ip;navigateur;provenance\n"; $nb_ligne = 1; if ($res) { $alt=1; // for ($i = 0; ($row = sql_row($res, $i)); $i++) { while ($row = $res->fetch_row()) { $alt=$alt*(-1); $annee_f = mb_substr($row[8],0,4); $mois_f = mb_substr($row[8],5,2); $jour_f = mb_substr($row[8],8,2); $heures_f = mb_substr($row[8],11,2); $minutes_f = mb_substr($row[8],14,2); $secondes_f = mb_substr($row[8],17,2); $date_fin_f = $jour_f."/".$mois_f."/".$annee_f." à ".$heures_f." h ".$minutes_f; $end_time = mktime($heures_f, $minutes_f, $secondes_f, $mois_f, $jour_f, $annee_f); $annee_b = mb_substr($row[2],0,4); $mois_b = mb_substr($row[2],5,2); $jour_b = mb_substr($row[2],8,2); $heures_b = mb_substr($row[2],11,2); $minutes_b = mb_substr($row[2],14,2); $secondes_b = mb_substr($row[2],17,2); //$date_debut = $jour_b."/".$mois_b."/".$annee_b." à ".$heures_b." h ".$minutes_b; $date_debut = $jour_b."/".$mois_b."/".$annee_b." à ".$heures_b." h ".$minutes_b; $temp1 = ''; $temp2 = ''; if ($end_time > $now) { $temp1 = ""; $temp2 = ""; } if ($row[1] == '') {$row[1] = "Utilisateur inconnu";} echo "\n"; echo "\n"; echo "\n"; echo "\n"; //$ligne_csv[$nb_ligne] = "$row[10];$row[0];$date_debut;"; $ligne_csv[$nb_ligne] = my_ereg_replace(" "," ","$row[10];$row[0];$date_debut;"); if ($row[7] == 4) { echo "\n"; } else if ($end_time > $now) { echo "\n"; } else if (($row[7] == 1) or ($row[7] == 2) or ($row[7] == 3)) { echo "\n"; } else { echo ""; } if (!(isset($active_hostbyaddr)) or ($active_hostbyaddr == "all")) { $result_hostbyaddr = " - ".@gethostbyaddr($row[4]); } else if($active_hostbyaddr == "no_local") { if ((mb_substr($row[4],0,3) == 127) or (mb_substr($row[4],0,3) == 10.) or (mb_substr($row[4],0,7) == 192.168)) { $result_hostbyaddr = ""; } else{ $tabip=explode(".",$row[4]); if(($tabip[0]==172)&&($tabip[1]>=16)&&($tabip[1]<=31)) { $result_hostbyaddr = ""; } else{ $result_hostbyaddr = " - ".@gethostbyaddr($row[4]); } } } else{ $result_hostbyaddr = ""; } echo "\n"; echo "\n"; //echo "\n"; echo "\n"; //$ligne_csv[$nb_ligne] .= "$date_fin_f;$result_hostbyaddr;".detect_browser($row[5]).";$row[6]\n"; $ligne_csv[$nb_ligne] .= my_ereg_replace(" "," ","$date_fin_f;$result_hostbyaddr;".detect_browser($row[5]).";$row[6]\n"); echo "\n"; $nb_ligne++; flush(); } } $_SESSION['donnees_export_csv_log']=$ligne_csv; ?>
Statut Identifiant Début session Fin session Adresse IP et nom de la machine cliente Navigateur Provenance
".$temp1.$row[10].$temp2."".$temp1.$row[0]."
"; if($row[9]!='') { echo "".$row[1].""; } else { echo $row[1]; } echo $temp2."
".$temp1.$date_debut.$temp2."Tentative de connexion
avec mot de passe erroné.
" .$date_fin_f. "" .$date_fin_f. "" .$date_fin_f. "".$temp1.$row[4].$result_hostbyaddr.$temp2. "".$temp1. detect_browser($row[5]) .$temp2. "".$temp1. $row[6] .$temp2. ""; if($row[6]=="") { echo " "; } else { echo $temp1. $row[6] .$temp2; } echo "

NOTES :

La résolution d'adresse IP en nom DNS peut ralentir l'affichage de cette page.
Dans le cas d'un serveur situé sur un réseau local, il se peut qu'aucun serveur DNS ne soit en mesure d'assurer la résolution IP/NOM.
Si l'attente vous pèse, vous pouvez modifier le paramétrage de la variable $active_hostbyaddr dans le fichier lib/global.inc.php

Valeurs possibles pour la variable :
Valeur Signification
all la résolution inverse de toutes les adresses IP est activée.
Cela peut se traduire par des lenteurs à l'affichage de la présente page.
no la résolution inverse des adresses IP est désactivée.
Radical, mais toutes les adresses fournies sont en IP.
no_local la résolution inverse des adresses IP locales (privées) est désactivée.
Seules les adresses IP de réseaux non-privés sont traduites en noms DNS. L'organisme gérant l'espace d'adressage public (adresses IP routables) est l'Internet Assigned Number Authority (IANA). La RFC 1918 définit un espace d'adressage privé permettant à toute organisation d'attribuer des adresses IP aux machines de son réseau interne sans risque d'entrer en conflit avec une adresse IP publique allouée par l'IANA. Ces adresses dites non-routables correspondent aux plages d'adresses suivantes :

  • Classe A : plage de 10.0.0.0 à 10.255.255.255 ;
  • Classe B : plage de 172.16.0.0 à 172.31.255.255 ;
  • Classe C : plage de 192.168.0.0 à 192.168.255.55 ;

Toutes les machines d'un réseau interne, connectées à internet par l'intermédiaire d'un routeur et ne possédant pas d'adresse IP publique doivent utiliser une adresse contenue dans l'une de ces plages. Pour les petits réseaux domestiques, la plage d'adresses de 192.168.0.1 à 192.168.0.255 est généralement utilisée.

"; $tabdiv_infobulle[]=creer_div_infobulle('ip_priv',"Espaces d'adressage","",$texte,"",30,0,'y','y','n','n'); ?>

La valeur actuelle de la variable $active_hostbyaddr sur votre GEPI est: