Bonjour à tous?
Je rencontre un problème de traitement de ma commande GET, celle-ci est bien lu mais n'est pas traité, auriez vous une idée ?
Elle est bien reçu mais n'est pas traité ! (moniteur série ce dessous)
en vous remerciant par avance pour vos contribution.
#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(2856);
void setup() {
Serial.begin(9600);
// 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}
authentificated=true;
memset(linebuf,0,sizeof(linebuf));
charcount=0;
if (strstr(linebuf,"/?lumon") >0){
memset(linebuf,0,sizeof(linebuf));
digitalWrite(7, LOW);
}
if (strstr(linebuf,"/?lumoff") >0){
memset(linebuf,0,sizeof(linebuf));
digitalWrite(7, HIGH);
}
}
else if (c != '\r') {
// vous avez un caractère sur la ligne actuelle
currentLineIsBlank = false;
}
}
}
// 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=\"/?lumon\"\"><input type=button value=ON id='Bouton_2' ></a>"));
client.println(F("<a href=\"/?lumoff\"\"><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>");
}
voici les retour du moniteur serie :
09:40:20.400 -> Nouvelle connexion client
09:40:20.434 -> GET /?lumon HTTP/1.1
09:40:20.468 -> Host: 192.168.0.200:2856
09:40:20.501 -> Connection: keep-alive
09:40:20.501 -> Authorization: Basic dGVzdDpUZXN0
09:40:20.569 -> Upgrade-Insecure-Requests: 1
09:40:20.569 -> User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
09:40:20.705 -> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
09:40:20.875 -> Referer: http://192.168.0.200:2856/?lumoff
09:40:20.910 -> Accept-Encoding: gzip, deflate
09:40:20.945 -> Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
09:40:20.979 ->
09:40:21.050 -> client disonnected
09:40:21.084 ->
09:40:21.422 -> Nouvelle connexion client
09:40:21.456 -> GET /favicon.ico HTTP/1.1
09:40:21.456 -> Host: 192.168.0.200:2856
09:40:21.489 -> Connection: keep-alive
09:40:21.523 -> Authorization: Basic dGVzdDpUZXN0
09:40:21.557 -> User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
09:40:21.692 -> Accept: image/avif,image/webp,image/apng,image/svg+xml,image/,/*;q=0.8
09:40:21.761 -> Referer: http://192.168.0.200:2856/?lumon
09:40:21.796 -> Accept-Encoding: gzip, deflate
09:40:21.830 -> Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
09:40:21.899 ->
09:40:21.967 -> client disonnected
09:40:21.967 ->