Alors j'ai donc modifier le code et repris la séquence et j'ai des résultat positif mais je rencontre encore des difficultés:
le GET ON est bien exécuté la LEDs s'allume et le statut est pris en compte, par contre j'ai toujours mon URL qui garde le commande GET : http://192.168.0.200:9623/?lum=on.
Or elle devrais se remettre : http://192.168.0.200:9623
Ensuite quand j'appui sur OFF le commande GET est exécuté la LED s'éteint mais le statut d'affichage n'est pas actualisé et j'ai toujours http://192.168.0.200:9623/?lum=off.
comment creer un timout sur la durée de validité de l'identification car je ne retrouve plus ma demande d'identification
et au final l'identification ne fonctionne plus elle est valide en permanence !!
voici le code
#include <SPI.h>
#include <Ethernet.h>
// Entrez une adresse MAC et une adresse IP pour votre contrôleur ci-dessous.
// L'adresse IP est :
byte mac[] = {
0xDE, 0xAD, 0xAF, 0xBA, 0xEE, 0xDF };
IPAddress ip(192,168,0,200);
String readString;
// Initialiser la bibliothèque du serveur Ethernet
// avec l'adresse IP et le port que vous souhaitez utiliser
EthernetServer server(9623);
void setup() {
Serial.begin(115200);
// démarrez la connexion Ethernet et le serveur :
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
pinMode(7, OUTPUT); digitalWrite(7, HIGH);
}
char linebuf[100];
int charcount=0;
boolean authentificated=false;
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("Nouvelle connexion client");
memset(linebuf,0,sizeof(linebuf));
charcount=0;
authentificated=false; // authentifié = faux
// une requête http se termine par une ligne vide
boolean currentLineIsBlank = true; //la ligne actuelle est vide = vrai
while (client.connected()) { // boucle infini -> tant que le client et connecté
if (client.available()) { // et queleclient est disponible
char c = client.read();
linebuf[charcount]=c;
if (charcount<sizeof(linebuf)) charcount++;
Serial.write(c);
// si vous êtes arrivé à la fin de la ligne (reçu un saut de ligne
// caractère) et la ligne est vide, la requête http est terminée,
// vous pouvez donc envoyer une réponse
if (c == '\n' && currentLineIsBlank) {
if (authentificated){
SendOKpage(client);
}
else
SendAuthentificationpage(client);
break;
}
if (c == '\n') {
// tu commences une nouvelle ligne
currentLineIsBlank = true; //la ligne actuelle est vide = vrai
if (strstr(linebuf,"Authorization: Basic")>0 && strstr(linebuf,"dGVzdDpUZXN0")>0) // Encryptage "ident:pass" via https://www.base64encode.org/ {forme ident:pas}
Serial.println(F("On verifie le id et pass"));
authentificated=true;
if (strstr(linebuf,"/?lum=on") >0){
Serial.println(F("On allume la led"));
digitalWrite(7, LOW);
}
if (strstr(linebuf,"/?lum=off") >0){
Serial.println(F("On eteint la led"));
digitalWrite(7, HIGH);
}
memset(linebuf,0,sizeof(linebuf));
charcount=0;
}
else if (c != '\r') {
// vous avez un caractère sur la ligne actuelle
currentLineIsBlank = false;
// Serial.println(F("arrivée de nouvelle donnee"));
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
Serial.println(F(""));
}
}
void SendOKpage(EthernetClient &client)
{
// envoyer un en-tête de réponse http standard
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println(F("<body style=\"color: #ffffff; background-color: #0c273d;\">"));
client.println(F("<style> #Bouton_1{background-color:red; width:150px; height:100px;} #Bouton_2{width:150px; height:100px; font size:9; } #Bouton_3{background-color:#ED2FD7;}</style>"));
client.println(F("<br />"));
client.println(F("<a href=\"/?lum=on\"\"><input type=button value=ON id='Bouton_2' ></a>"));
client.println(F("<a href=\"/?lum=off\"\"><input type=button value=OFF id='Bouton_2' ></a>"));
client.println(F("<br />"));
client.println(F("<br />"));
client.print(F("Etat de l'Eclairage : "));
if(digitalRead(7) == HIGH){
client.println(F("<font color=#9E9F6C>"));
client.print(F(" ETEINT"));
client.println(F("</font>"));
client.println(F("<br />"));
}
if(digitalRead(7) == LOW){
client.println(F("<font color=#F6FA04>"));
client.print(F(" ALLUME"));
client.println(F("</font>"));
client.println(F("<br />"));
}
client.println(F("<br />"));
client.println("</html>");
}
void SendAuthentificationpage(EthernetClient &client)
{
client.println("HTTP/1.1 401 Authorization Required");
client.println("WWW-Authenticate: Basic realm=\"Secure Area\"");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println(F("<body style=\"color: #ffffff; background-color: #0c273d;\">"));
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<HTML> <HEAD> <TITLE>Error</TITLE>");
client.println(" </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>");