Skip to content
Snippets Groups Projects
Commit ddf5a375 authored by Romain Gabet's avatar Romain Gabet :speech_balloon:
Browse files

rr

parents c58c9812 bcf0f38e
Branches
No related tags found
No related merge requests found
No preview for this file type
# Ces variables servent à préciser le compilateur que l'on veut utiliser # Ces variables servent à préciser le compilateur que l'on veut utiliser
# ainsi que les paramètres de compilation # ainsi que les paramètres de compilation
WRAPPER=$(if $(shell which clang), clang, gcc) CC=gcc
CC=$(WRAPPER) LD=gcc
LD=$(WRAPPER) CFLAGS=-Wall -W -Werror -g
CFLAGS=-Wall -W -Werror -g -I../../parselib LDFLAGS= -g -pthread
LDFLAGS=-lpthread -lrt -L../../parselib -lhttp_parse
# Le nom de l'exécutable à fabriquer # Le nom de l'exécutable à fabriquer
EXE=pawnee EXE=pawnee
...@@ -26,11 +25,7 @@ OBJS=$(CFILES:.c=.o) ...@@ -26,11 +25,7 @@ OBJS=$(CFILES:.c=.o)
# La règle par défaut déclenche la fabrication de l'exécutable # La règle par défaut déclenche la fabrication de l'exécutable
# par dépendance # par dépendance
all: alldeps $(EXE) all: $(EXE)
.PHONY: alldeps
alldeps:
make -C ../../parselib
# Cette règle permet de construire l'exécutable. Elle dépend des fichiers # Cette règle permet de construire l'exécutable. Elle dépend des fichiers
# .o et effectue l'édition de lien. Rien de nouveau ici # .o et effectue l'édition de lien. Rien de nouveau ici
...@@ -48,7 +43,7 @@ $(EXE): $(OBJS) ...@@ -48,7 +43,7 @@ $(EXE): $(OBJS)
# Après votre première compilation, regardez le contenu du fichier # Après votre première compilation, regardez le contenu du fichier
# makefile.dep généré afin de comprendre exactement de quoi il retourne. # makefile.dep généré afin de comprendre exactement de quoi il retourne.
makefile.dep: $(CFILES) $(HEADERS) makefile.dep: $(CFILES) $(HEADERS)
$(CC) $(CFLAGS) -MM $(CFILES) > $@ $(CC) -MM $(CFILES) > $@
# Cette règle efface le fichier de dépendances et les fichiers .o # Cette règle efface le fichier de dépendances et les fichiers .o
clean: clean:
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
/*
int copy(FILE* in, FILE* out){ /*int copy(FILE* in, FILE* out){
char* ch; char* ch;
if(in && out){ if(in && out){
while((ch = fgetc(in))!= EOF ){ while((ch = fgetc(in))!= EOF ){
...@@ -36,14 +36,16 @@ int get_file_size(int fd){ ...@@ -36,14 +36,16 @@ int get_file_size(int fd){
FILE* check_and_open(const char* target, const char *document_root){ FILE* check_and_open(const char* target, const char *document_root){
return fopen(target +"/"+document_root,"r"); return fopen(target +"/"+document_root,"r");
} }*/
char* rewrite_target(char *target){ char* rewrite_target(char *target){
char* ret = strchr(target, '?'); char* ret = strchr(target, '?');
char* rep =""; char* rep ="";
if (ret!= NULL){
strncpy(rep,target,atoi(ret)-1); strncpy(rep,target,atoi(ret)-1);
}
return rep; return rep;
}*/ }
char* fgets_or_exit(char * buffer, int size, FILE *fd){ char* fgets_or_exit(char * buffer, int size, FILE *fd){
...@@ -79,11 +81,13 @@ void send_status(FILE *client, int code, const char *reason_phrase){ ...@@ -79,11 +81,13 @@ 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){ 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); send_status(client,code,reason_phrase);
//transmet la réponse complète (la suite) //transmet la réponse complète (la suite)
fprintf(client,"Content-Lenght: %u\r\n",(unsigned int)strlen(message_body)); fprintf(client,"Content-Lenght: %u\r\n",(unsigned int)strlen(message_body));
fprintf(client,"\r\n"); fprintf(client,"\r\n");
fprintf(client,"%s\r\n",message_body); fprintf(client,"%s\r\n",message_body);
fprintf(client, "sortie de send_response\r\n");
fflush(client); fflush(client);
} }
...@@ -101,9 +105,11 @@ int traitementClient(int socket_client){ ...@@ -101,9 +105,11 @@ int traitementClient(int socket_client){
perror("Error opening file"); perror("Error opening file");
exit(1); exit(1);
} }
//fprintf(fd,"pas d'erreurs d'ouverture\n");
fgets_or_exit(str,8000,fd); fgets_or_exit(str,8000,fd);
int parse_ret = parse_http_request(str,&request); int parse_ret = parse_http_request(str,&request);
skip_headers(fd); skip_headers(fd);
fprintf(fd, "avant if parse_ret\n");
if (parse_ret == -1) { if (parse_ret == -1) {
if (request.method == HTTP_UNSUPPORTED){ if (request.method == HTTP_UNSUPPORTED){
send_response(fd, 405, "Method Not Allowed", "Method Not Allowed"); send_response(fd, 405, "Method Not Allowed", "Method Not Allowed");
...@@ -112,23 +118,27 @@ int traitementClient(int socket_client){ ...@@ -112,23 +118,27 @@ int traitementClient(int socket_client){
} }
}else if (strcmp(request.target, "/") == 0){ }else if (strcmp(request.target, "/") == 0){
send_response(fd, 200, "OK", motd); send_response(fd, 200, "OK", motd);
fprintf(fd, "fin du else-if\r\n");
}else{ }else{
send_response(fd, 404, "Not Found", "Not Found"); send_response(fd, 404, "Not Found", "Not Found");
} }
//partie 7/*
//partie 7/
char* absolute_path = rewrite_target(request.target); char* absolute_path = rewrite_target(request.target);
//--- les printf ne fonctionnent pas ;( //--- les printf ne fonctionnent pas ;(
printf("test - - - - - - - - \n%s",absolute_path); fprintf(fd,"avant test\r\n");
fprintf(fd,"test - - - - - - - - \n%s\r\n",absolute_path);
//--- //---
FILE* fichier = check_and_open(absolute_path, "document.txt"); /* FILE* fichier = check_and_open(absolute_path, "document.txt");
if(fichier == NULL){ if(fichier == NULL){
send_response(fd, 404, "Not Found", "Not Found"); send_response(fd, 404, "Not Found", "Not Found");
} }
int size = get_file_size(fileno(fichier); int size = get_file_size(fileno(fichier));
if(copy(fichier,fd))==-1){ if(copy(fichier,fd))==-1){
//error //error
}*/ }*/
fflush(fd);
fclose(fd); fclose(fd);
return 0; return 0;
} }
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment