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 b/webserver/client.c index 86a95857ade864e7a875ecddbe972ecce0740153..dc7077ca393e2999bd57e2196e8ac6bae9152316 100644 --- a/webserver/client.c +++ b/webserver/client.c @@ -9,10 +9,11 @@ #include "http_parse.h" 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; } @@ -51,13 +52,11 @@ 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\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\n"); fflush(client); } @@ -79,25 +78,24 @@ 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\n"); + }else{ send_response(fd, 404, "Not Found", "Not Found"); } fflush(fd); - fprintf(fd, "après if parse_ret\n"); //partie 7 - fprintf(fd, "avant rewrite\n"); char* absolute_path = rewrite_target(request.target); - fprintf(fd,"test - - - - - - - - %s\n",absolute_path); + printf("test - - - - - - - - %s\n",absolute_path); fclose(fd); return 0; } diff --git a/webserver/client.o b/webserver/client.o index 066d5262986b302f03094657c64a67905db02f24..2c0e013e071acfdb9c3c6a46923d20cfde59dc03 100644 Binary files a/webserver/client.o and b/webserver/client.o differ diff --git a/webserver/pawnee b/webserver/pawnee index 31cf41fdf96cf65c5704e25bfb80e00d06621ed6..f46482c23bd2832173b8165a1d603411df82bca1 100755 Binary files a/webserver/pawnee and b/webserver/pawnee differ