diff --git a/webserver/.client.c.swp b/webserver/.client.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..a8adeb964feb5960ac505a8183ebe78242a2d52f Binary files /dev/null and b/webserver/.client.c.swp differ diff --git a/webserver/client.c b/webserver/client.c index 62184d07e2716fcca96376a2e5b000b8942f29a5..a7c3fd9c5e240a91a3e2d1df92381bdd502108e6 100644 --- a/webserver/client.c +++ b/webserver/client.c @@ -14,14 +14,18 @@ char* testCorrect(char* str, int first, char* buf){ char* strRet; char *correctStr = "GET / HTTP/1.1"; sprintf(buf,"HTTP/1.1 400 Bad Request\r\nConnection: close\r\nContent-Length: %d\r\n\r\n400 Bad request",i); - char *incorrectStr= buf; + char *incorrectStrBR= buf; sprintf(buf,"HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Length: %d\r\n\r\n200 OK", i); - char *correctStr2= buf; + char *correctStrOk= buf; + sprintf(buf, "HTTP/1.1 404 not found\r\nConnection close\r\nContent-Length:%d\r\n\r\n404 Not Found", i); + char *incorrectStrNF = buf; + char *correctStr2 = "GET /inexistant HTTP/1.1"; if(strstr(str,correctStr) == NULL && first == 0) { - strRet=incorrectStr; - //printf("---\n%s\n---",str); + strRet=incorrectStrBR; }else if(!strcmp(str,"\r\n")) { - strRet = correctStr2; + strRet = correctStrOk; + }else if(strcmp(str,correctStr2)){ + strRet = incorrectStrNF; }else{ strRet = NULL; } @@ -30,32 +34,29 @@ char* testCorrect(char* str, int first, char* buf){ } +char* fgets_or_exit(char * buffer, int size, FILE *fd){ + int first = 0; + char buf[8000]; + while(!feof(fd) && fgets(buffer,size,fd) != NULL){ + char* resTest = testCorrect(buffer,first, buf); + if(resTest!=NULL)fprintf(fd,"<Notre Serveur> %s\n",resTest); + first=1; + fflush(fd); + } + first=0; + exit(1); +} int traitementClient(int socket_client){ - /* On peut maintenant dialoguer avec le client */ - //const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur."; - -// int status = 1; - //while(status>0){ - char str[8000]; - FILE *fd; - //status = write(socket_client, message_bienvenue, strlen(message_bienvenue)); - fd = fdopen(socket_client, "a+"); - fprintf(fd,"Bienvenue client\n"); - if(fd == NULL) { - perror("Error opening file"); - exit(1); - } - //printf("test avant while\n"); - int first = 0; - char buf[8000]; - while(!feof(fd) && fgets(str,8000,fd) != NULL){ - char* resTest = testCorrect(str,first, buf); - if(resTest!=NULL)fprintf(fd,"<Notre Serveur> %s\n",resTest); - first=1; - fflush(fd); - } - first=0; - //fflush(fd); - fclose(fd); + /* On peut maintenant dialoguer avec le client */ + char str[8000]; + FILE *fd; + fd = fdopen(socket_client, "a+"); + fprintf(fd,"Bienvenue client\n"); + if(fd == NULL) { + perror("Error opening file"); + exit(1); + } + fgets_or_exit(str,8000,fd); + fclose(fd); return 0; } diff --git a/webserver/client.o b/webserver/client.o index 1f8a5cf157b63df52b50307dcf065fa7e360212c..13e7bef4e22fb8e52a7262d018cc6b5b3aa08241 100644 Binary files a/webserver/client.o and b/webserver/client.o differ diff --git a/webserver/pawnee b/webserver/pawnee index 98ddedb3240c1c49910a7cf5d9a4bfe25456e213..e88cb068de3b3df17a19d0e6a4c3196c32d04604 100755 Binary files a/webserver/pawnee and b/webserver/pawnee differ