From 6f6caf9ae749122edce9219b24f0d0db91103351 Mon Sep 17 00:00:00 2001
From: Manax <paul.ripault.etu@univ-lille.fr>
Date: Sat, 27 Mar 2021 16:17:18 +0100
Subject: [PATCH] 7.1 rewrite fonctionne

---
 parselib/Makefile        |  21 +++++++++++++++++++++
 parselib/libhttp_parse.a | Bin 0 -> 7484 bytes
 parselib/makefile.dep    |   1 +
 webserver/client.c       |  20 +++++++++-----------
 webserver/client.o       | Bin 12936 -> 13144 bytes
 webserver/pawnee         | Bin 30928 -> 31040 bytes
 6 files changed, 31 insertions(+), 11 deletions(-)
 create mode 100644 parselib/Makefile
 create mode 100644 parselib/libhttp_parse.a
 create mode 100644 parselib/makefile.dep

diff --git a/parselib/Makefile b/parselib/Makefile
new file mode 100644
index 0000000..0a86850
--- /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
GIT binary patch
literal 7484
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

literal 0
HcmV?d00001

diff --git a/parselib/makefile.dep b/parselib/makefile.dep
new file mode 100644
index 0000000..6f3c2ce
--- /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 86a9585..dc7077c 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
GIT binary patch
delta 2890
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
BLBaq4

delta 2656
zcmcbS){#0vgULg8qLx&oNAnv6kIvc`9^I}l_SrKqFnDwxf58BzU4MA=vO<|3Jeq5N
zFqEizbi4k5sc3$|=#hNEquUpx`GZI2Ihce;x9f+K8&8EYPqty<o2<wpJ=ufBfGzX^
zNPMy)lepjqn93a><4+!Dn7okX;^b=95H1B>1ziQzVlD>h$v0RP7%evcWS!4a@5Jg3
zQV7M|Ob`a+9B)<z1_=;{(MbxVf@R{L9rco60T+&A3=9lR6EmcWONtm6UD-iunI}$g
zgh;#buV-OkV42vkvtBAKg@MtXgP9qmJOLsdzy>moX<`hR%fy&GS(00U(R8vEw`{$s
z6hvtT#AZ`9h|&}&*TN5MZv>PZ4B-YaNQ0eazy_i~*c3!CFfcIAVP=E*!axGWXaf}#
zqYcbJW^pr3jDQ-ZI{6{DtdgoENE7qK6;Q9KL%q7ekwFGz2cyDd1s=tC1xb)@rimF0
z;$Trxc2EF;m>}#5BEYV>1b2<73`hmjM5tFpH6X4Dkp%^qs0qkcrimU>MX4nWjAD})
z@W`6S!A*hqo*QNYL=g`>PKr_s7#Mk>+=R^{yq6d!zvq)=w3z%+Pn@x6vm$>XqvUQ@
z4i4|NtdgayO1oIuY*;xtqF5QdS<MY6?-W?gxO;M{pgQkvjy<f>9J^VWIMO-RZk{Q)
zjb(Cxn1m|G;~)%j57<$Td;)Du&b(|)kv!}i4B&vVnLJTUo-t<fMlpHDn#mW%<QeBo
z{wOBTxM#AUxU@V-_Z^US1_lOjf`ggB%*MpS&M{e0PjYjHxCbL++~kcC=8R^OFG`3r
zT7yVQX9flaAqGYUu*D1v46v{b1j#b`fJo19sG7x4E3Bb(JXHK1l<x+mbD-iXj1U1>
z>Zt&kCfNX$jfBcxfhc0=1IaQ@1(S0?q$J2bklS>jc?j$^1_p*LAX&!UVDb={yb31o
zOx`Hv$&s8<#E@8$pE;RFI-0Gxq$npfZ*rQn7YhRegXH9m(&CaTPzyn(f{Khk{~^G7
zvY?DOW60!((&Ca$P&FW3A`A=+Fg0^0JIaWAvO}E?k`+dh6+;piLlSp|io<OD3$gHj
z&}2qg@%k1tSw5)UoltR*EuahubHh9&aZu8QiLXKu2c-y@_;#o`%yvzv`9~n)li6hj
zJ?}u+3@|lzP&E&s;^=Pp02PO+cZ90{3-XbnC`cGovM?|(fI=9SFr=X3=%%Sn{wOP6
z?+BFzQ6OEQ<OMP|2qb`HS_Mdufq@|sDh@JD9x1f5q2eG4WKK0yeE~>-fq?;}UI9sc
z6+~PMEFp>{F$p387DtZe)sr{MiP!H!k_DAgu;9J~6$eou>-(VAUk3?5tw)Z|&rop?
z1ya8Vs{R*90Lj}hadu{~f_kvCq>!8|4v~Pz;a0FZ1_n7a@q<utZKyaXJdn+?hl+#j
z2RZ00RJ}V?9Hd@}AsCS<VxbZ+4d<a6vY_H14agQWLB(O}FG1C}Pj-|Sub+Y@`v@vK
z8;AG`s5rVUTad(Mk%H+AR2*je8>smgA>xzW<pm{QLfG)2WP~R7cOVxsGEV-eAZ{oE
zvJfeL1fXgZq2eG4R3pREh3;fUMe)r6iUAyqx|0`bE@zCK?5Wkys51GcRyor>hRH$N
zag2*6Z`9UjjGO#WyMA(oPC~r{)NLTQf-tO<PCyd}m6RYMP}vHiL25x5Rx&RD2}0cp
z5{H${2hhY}W%2`vI2SkoKpJ#6C+dnbGFnWo)HCPQ03}}r28M#kJN3*ND<*%`vuCWB
zY^ZO~Spo7i0|SHp<Vt;W&gG!g!@$5GKY6FVIp+*eo?~EO5SaW^-<<Op55$U#lPwL*
z8K+M!G_Yq{p*?w%fgR^@XaQI@`KN(7(+%y(Muv8bwv!7D?U_!BPTpi_$Mj5ea-g`_
zWDX+@t{0#T%fP_!gJH6jkr~qm?a4((cAO7Dr7r^mL&D^pM&_Ijpv1?(!0>qTPa|`#
P89ES~H!w`D(vt%K@&y#l

diff --git a/webserver/pawnee b/webserver/pawnee
index 31cf41fdf96cf65c5704e25bfb80e00d06621ed6..f46482c23bd2832173b8165a1d603411df82bca1 100755
GIT binary patch
delta 4545
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
QlM5@%nauJhuPRgn0I}ctssI20

delta 4605
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
LAUyZUibe7O^B~J@

-- 
GitLab