diff --git a/webserver/.client.c.swp b/webserver/.client.c.swp index e074561066df0b854f31087b8c23a582dbc374f9..da315db82efee93b4bbd889f0e7f41217db28483 100644 Binary files a/webserver/.client.c.swp and b/webserver/.client.c.swp differ diff --git a/webserver/.http_parse.h.swp b/webserver/.http_parse.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..35db80c1fbd3b7afbdceccb8029177602c51335b Binary files /dev/null and b/webserver/.http_parse.h.swp differ diff --git a/webserver/client.c b/webserver/client.c index 3003183fd20794bd7b78f7d63f28573c7d392bd6..d8ae60d92bb692f1c1736eea2d5dd55a6c56bfcb 100644 --- a/webserver/client.c +++ b/webserver/client.c @@ -7,13 +7,43 @@ #include <stdlib.h> #include "client.h" #include "http_parse.h" +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +/* +int copy(FILE* in, FILE* out){ + char* ch; + if(in && out){ + while((ch = fgetc(in))!= EOF ){ + fputc(ch,out); + } + }else{ + //error reading + exit(1); + } + return 0; +} +int get_file_size(int fd){ + struct stat sb; + if(fstat(fd,&sb)==-1){ + perror("stat"); + exit(1); + } + return sb.st_size; + return 0; +} + +FILE* check_and_open(const char* target, const char *document_root){ + return fopen(target +"/"+document_root,"r"); +} char* rewrite_target(char *target){ char* ret = strchr(target, '?'); char* rep =""; strncpy(rep,target,atoi(ret)-1); return rep; -} +}*/ char* fgets_or_exit(char * buffer, int size, FILE *fd){ @@ -62,6 +92,7 @@ void send_response(FILE *client, int code, const char *reason_phrase, const char int traitementClient(int socket_client){ /* On peut maintenant dialoguer avec le client */ char *motd="Votre requète est bonne"; + printf("test"); char str[8000]; http_request request; FILE *fd; @@ -77,18 +108,27 @@ int traitementClient(int socket_client){ if (request.method == HTTP_UNSUPPORTED){ send_response(fd, 405, "Method Not Allowed", "Method Not Allowed"); }else{ - send_response(fd, 400, "Bad Request", "Bad request"); + send_response(fd, 400, "Bad Request", "Bad request"); } }else if (strcmp(request.target, "/") == 0){ send_response(fd, 200, "OK", motd); }else{ send_response(fd, 404, "Not Found", "Not Found"); } - //partie 7 + //partie 7/* char* absolute_path = rewrite_target(request.target); - fprintf(fd,"test - - - - - - - - \n%s",absolute_path); - + //--- les printf ne fonctionnent pas ;( + printf("test - - - - - - - - \n%s",absolute_path); + //--- + FILE* fichier = check_and_open(absolute_path, "document.txt"); + if(fichier == NULL){ + send_response(fd, 404, "Not Found", "Not Found"); + } + int size = get_file_size(fileno(fichier); + if(copy(fichier,fd))==-1){ + //error + }*/ fclose(fd); return 0; } diff --git a/webserver/client.o b/webserver/client.o index d124f3cc86bedbf2cde2f5b4f691d68f3f19bcd1..4a4e219d55a52f2a94deceb86441ebf80e401b5c 100644 Binary files a/webserver/client.o and b/webserver/client.o differ diff --git a/webserver/pawnee b/webserver/pawnee index c3585590cefcc0ba0ce2a1c494f02c734cccb5cc..c01f5ab2a0c4cad2119b342bffc4b85a46bfbfd3 100755 Binary files a/webserver/pawnee and b/webserver/pawnee differ