decouvre.php 4.76 KB
<!DOCTYPE html>
<html>
	<head>
		<title>Choix appareil</title>
		<link 	href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" 
		      	rel="stylesheet"											     
			integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" 
		      	crossorigin="anonymous">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" 
			integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" 
			crossorigin="anonymous">
		</script>

		<style>
		.form-check-error{
			border-color:red;
		}
		table{ 
			border-collapse: collapse; 
			border: 2px solid rgb(200,200,200); 
			letter-spacing: 1px; 
			front-size: 0.8rem; 
		}	
		td,th{
			border: 1px solid rgb(190,190,190);
			padding: 10px 20px;
		}
		td{
			text-align: center;
		}
		caption{
			padding: 10px;
		}
		</style>
	</head>
	<body>
		<?php session_unset(); ?>
		<form method="post" action="index.html">
			<input type="submit" value="Retour" class="btn btn-secondary"/>
		</form>
		<br/>
		<!-- TODO : Animation de chargement ? -->
		<form method="post" action="decouvre.php">
			<input type="submit" value="Rechercher à nouveau" class="btn btn-success"/>
		</form>
		<br/>
		<?php
			$txt = shell_exec('lxi discover');
			if(strpos($txt,"Found")==false){
				echo "Aucun appareil trouvé" ;
			}else{
				$i=0; /* Variable d'iteration */
				$nb=0; /* Nombre d'appareils découverts */
				$txt = nl2br($txt); /* Ajout sauts à la ligne dans le texte recu */

				while(strpos($txt,"Found")!=false){
					$phrase = "";
					$adresse = "";


					for($i=strpos($txt,"Found"),$j=0;$txt[$i]!='<';$i++,$j++){ /* Pour toutes les phrases contenant 'Found' */
						$phrase[$j]=$txt[$i]; /* Traitement des phrases contenant 'Found' une par une */
					}

					preg_match('/"([^"]+)"/',$phrase,$tableau); /* Nom de l'appareil entre guillemets donc en prends ce que l'on trouve entre les guillemets */
					//print_r($tableau); /* DEBUG */
					$mots = explode(" ",$phrase);
					//echo count($mots); /* DEBUG */
					//print_r($mots); /* DEBUG */
					/* Si la phrase contient plus de 5 mots, alors on prends le dernier mot comme adresse IP
					 * car les phrases sont sous la forme 'Found "NAME" on address IP' 
					 * et comme ça on ne prend pas la derniere phrase qui indique le nombre d'appareils trouvés */
					if(count($mots)>=5){
						$nom = $tableau[1];
						/* Verification du type de l'appareil */
						$type = "";
						include(getcwd().'/type_appareil.php');
						if($type!=""){
							$Types[$nb] = $type;
							$Devices[$nb] = $nom;
							$Adresses[$nb] = $mots[count($mots)-1];
							$nb++;
						}
					}
					$txt = substr($txt,-(strlen($txt)-$i)); /* On enlève la phrase que l'on vient d'afficher au texte de base pour afficher d'autres phrases */
					unset($phrase);
				}	
				/* Affichage sous forme de tableau */
				echo "<form method='post' id='formulaire' action='main.php'>";
				echo "<table class='table table-striped'>";
				echo "<thead>";
				echo "<tr>";
				echo "<th>Choix</th>";
				echo "<th>Nom de l'appareil</th>";
				echo "<th>Type d'appareil</th>";
				echo "<th>Adresse IP</th>";
				echo "</tr>";
				echo "</thead>";
				echo "<tbody>";
				for($i=0;$i<=$nb-1;$i++){ /* On affiche tous les appareils trouvés en enlevant la derniere ligne qui correspond au nombre d'appareils trouvés */
					$infos = $Devices[$i].'$'.$Types[$i].'$'.$Adresses[$i];
					echo "<td><input type='checkbox' name='App[]' id='check' class='form-check-input' value='$infos'></td>"; 
					echo "<td>".$Devices[$i]."</td>";
					echo "<td>".$Types[$i]."</td>";
					echo "<td>".$Adresses[$i]."</td>";
					echo "</tr>";
				}
				echo "</tbody>";
				echo "</table>";
				/* Bouton d'envoi des donnees de l'appareil choisi */
				echo "<input type='button' id='bouton' value=\"Utiliser l'appareil\" class='btn btn-primary' pointer-events='none' onclick='count_chkBox();'>";
				echo '<br/><p id="text-load" style="display:none">Erreur, veuillez selectionner au moins un appareil à utiliser !</p>';
				echo "</form>";
			}
		?>
		<!-- TODO : Verifier si EventListener fonctionne pour plusieurs appareils en meme temps -->
		<script type="text/javascript">
			var checkbox = document.getElementById("check");
			var chk_El = document.getElementsByName("App[]");
			var display_txt = document.getElementById("text-load");
			var elem = document.getElementById("formulaire"); 
			checkbox.addEventListener('change',e=>{
				if(e.target.checked){
					display_txt.style = "display:none";
				}
			});
			function count_chkBox(){
				var nb_check = 0;
				for(var i=0;i<chk_El.length;i++){
					if(chk_El[i].checked){
						nb_check++;
					}	
				}
				if(nb_check==0){
					display_txt.style = "color:red";
				}else{
					elem.submit();
				}
			}
		</script>
	</body>
</html>