diff --git a/parselib/Makefile b/parselib/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..0a86850ccb33f46599070db1a29c981b396b08b4 --- /dev/null +++ b/parselib/Makefile @@ -0,0 +1,21 @@ +CFLAGS=-Wall -Wextra -Werror -g +LIB=libhttp_parse.a + +SRC=$(wildcard *.c) +OBJS=$(SRC:.c=.o) +HDR=$(wildcard *.h) + +$(LIB): $(OBJS) + ar rs $@ $^ + ranlib $@ + +makefile.dep: $(SRC) $(HDR) + $(CC) $(CFLAGS) -MM $(SRC) > $@ + +.PHONY: clean mrproper +clean: + $(RM) $(OBJS) +mrproper: clean + $(RM) $(LIB) + +include makefile.dep \ No newline at end of file diff --git a/parselib/libhttp_parse.a b/parselib/libhttp_parse.a new file mode 100644 index 0000000000000000000000000000000000000000..0c4dd11a5c7b87ccd3b3f3e8a126fe136ee4de57 Binary files /dev/null and b/parselib/libhttp_parse.a differ diff --git a/parselib/makefile.dep b/parselib/makefile.dep new file mode 100644 index 0000000000000000000000000000000000000000..6f3c2ce772a94adbb62573fe6767e5b25b17b0ff --- /dev/null +++ b/parselib/makefile.dep @@ -0,0 +1 @@ +http_parse.o: http_parse.c http_parse.h diff --git a/webserver/.client.c.swp b/webserver/.client.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..bfa669678568879eec95db0d19c2152d2695122b Binary files /dev/null and b/webserver/.client.c.swp differ diff --git a/webserver/client.c b/webserver/client.c index 1440815d309ad63e733a6849dd5b635dc4ec42c0..aeb4efc0ccc564f09aee59316be2fb4b5e523b38 100644 --- a/webserver/client.c +++ b/webserver/client.c @@ -39,10 +39,11 @@ FILE* check_and_open(const char* target, const char *document_root){ }*/ char* rewrite_target(char *target){ - char* ret = strchr(target, '?'); - char* rep =""; + char* ret = strrchr(target, '?'); + char* rep = malloc(strlen(target)*sizeof(char)); if (ret!= NULL){ - strncpy(rep,target,atoi(ret)-1); + size_t i = (int)(strlen(target)-strlen(ret)); + rep = strncpy(rep,target,i); } return rep; } @@ -81,14 +82,12 @@ void send_status(FILE *client, int code, const char *reason_phrase){ } void send_response(FILE *client, int code, const char *reason_phrase, const char *message_body){ - fprintf(client, "entree dans send_response\r\n"); send_status(client,code,reason_phrase); //transmet la réponse complète (la suite) fprintf(client,"Content-Lenght: %u\r\n",(unsigned int)strlen(message_body)); fprintf(client,"\r\n"); fprintf(client,"%s\r\n",message_body); - fprintf(client, "sortie de send_response\r\n"); - fflush(client); + fflush(client); } @@ -109,25 +108,14 @@ int traitementClient(int socket_client){ fgets_or_exit(str,8000,fd); int parse_ret = parse_http_request(str,&request); skip_headers(fd); - fprintf(fd, "avant if parse_ret\n"); if (parse_ret == -1) { if (request.method == HTTP_UNSUPPORTED){ send_response(fd, 405, "Method Not Allowed", "Method Not Allowed"); }else{ send_response(fd, 400, "Bad Request", "Bad request"); } - }else if (strcmp(request.target, "/") == 0){ + }else if (strcmp(request.target, "/test?aled") == 0){ send_response(fd, 200, "OK", motd); - fprintf(fd, "fin du else-if\r\n"); - }else{ - send_response(fd, 404, "Not Found", "Not Found"); - } - - //partie 7/ - char* absolute_path = rewrite_target(request.target); - //--- les printf ne fonctionnent pas ;( - fprintf(fd,"avant test\r\n"); - fprintf(fd,"test - - - - - - - - \n%s\r\n",absolute_path); //--- /* FILE* fichier = check_and_open(absolute_path, "document.txt"); @@ -138,7 +126,13 @@ int traitementClient(int socket_client){ if(copy(fichier,fd))==-1){ //error }*/ - fflush(fd); + }else{ + send_response(fd, 404, "Not Found", "Not Found"); + } + fflush(fd); + //partie 7 + char* absolute_path = rewrite_target(request.target); + printf("test - - - - - - - - %s\n",absolute_path); fclose(fd); return 0; } diff --git a/webserver/client.o b/webserver/client.o index 00a723fbf8ab01dc33cddc216582363fe381cb67..231792ee3b185c0270bda04d5b4f9f5bbe0b2fca 100644 Binary files a/webserver/client.o and b/webserver/client.o differ diff --git a/webserver/pawnee b/webserver/pawnee index 0e20b4bf5952b4c3e01ae1f3c150b9af7a1e28f2..1bec3235ec9bd1a52495f0b3d87b4a45080e03b7 100755 Binary files a/webserver/pawnee and b/webserver/pawnee differ