From 0ce767385eea01dad6c47c3229a29baffe44779c Mon Sep 17 00:00:00 2001
From: Neesergparajuli <neesergparajuli@this.com>
Date: Tue, 17 Apr 2018 15:51:28 +1000
Subject: [PATCH] headers, yet to check on necar instance

---
 GETheader.c     |  21 +++++---
 GETheader.h     |   4 +-
 RESPheader.h    |  20 ++++++++
 form_response.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++++
 sample          | Bin 9064 -> 14680 bytes
 server.c        |  24 ++++------
 server.h        |  15 +++++-
 7 files changed, 182 insertions(+), 26 deletions(-)
 create mode 100644 RESPheader.h
 create mode 100644 form_response.c

diff --git a/GETheader.c b/GETheader.c
index 7cf041c..a51c9eb 100644
--- a/GETheader.c
+++ b/GETheader.c
@@ -1,26 +1,32 @@
 #include "GETheader.h"
+#include "server.h"
+#include "RESPheader.h"
 #include <stdio.h>
 #include <string.h>
 
 
 
-int main(int argc, char const *argv[])
+/*int main(int argc, char const *argv[])
 {
 	char getrequest[BUFFERSIZE];
+	root = "/home/neeserg/Dropbox/CompSys/practice";
 	memset(getrequest, 0, BUFFERSIZE);
 	fread(getrequest, 1, BUFFERSIZE, stdin);
-
+	
 	struct GET_header header;
 
 	parse_GET_request(getrequest, &header);
-
 	printf("%s\n", header.filepath);
-	printf("%s\n", header.httpversion);
+	sendresponse(0, &header);
+
+
+
+	
 
 
 	return 0;
 }
-
+*/
 int parse_GET_request(char* message, struct GET_header* header){
 	char workingcopy[BUFFERSIZE];
 	char delimeter[6] = " \r\n\t\v";
@@ -48,8 +54,9 @@ int parse_GET_request(char* message, struct GET_header* header){
 		header->status = FILENOTFOUND;
 		return -1;
 	}
-
-	strcpy(header->filepath, temp);
+	memset(header->filepath, 0, PATHLEN);
+	strcat(header->filepath, root);
+	strcat(header->filepath, temp);
 
 
 
diff --git a/GETheader.h b/GETheader.h
index 4b7d512..d289322 100644
--- a/GETheader.h
+++ b/GETheader.h
@@ -1,15 +1,15 @@
 #ifndef GETheader
 #define GETheader
 
-#define BUFFERSIZE 1000
 #define BADREQUEST 400
 #define FILENOTFOUND 404
+#define PATHLEN 128
 
 struct GET_header
 {
 	char httpversion[10];
 	int status;
-	char filepath[128];
+	char filepath[PATHLEN];
 
 };
 
diff --git a/RESPheader.h b/RESPheader.h
new file mode 100644
index 0000000..f52b312
--- /dev/null
+++ b/RESPheader.h
@@ -0,0 +1,20 @@
+#ifndef RESPheader
+#define RESPheader 
+
+#include "GETheader.h"
+
+#define CONTENTTYPESIZE 40
+struct RESP_header{
+	char httpversion[10]; 
+	int status;
+	char contenttype [40];
+	int content_length;
+};
+int sendresponse(int sockfd, struct GET_header* header);
+int getfiletype(const char *filepath, struct RESP_header* resphead);
+
+
+
+
+
+#endif
\ No newline at end of file
diff --git a/form_response.c b/form_response.c
new file mode 100644
index 0000000..945a1f7
--- /dev/null
+++ b/form_response.c
@@ -0,0 +1,124 @@
+#include "RESPheader.h"
+#include "GETheader.h"
+#include "server.h"
+
+const char* html = "Content-Type: text/html\n\n";
+const char* htmlext = ".html";
+const char* javascript = "Content-Type: application/javascript\n\n";
+const char* jsext = ".js";
+const char* jpeg = "Content-Type: image/jpeg\n\n";
+const char* jpegext= ".jpg";
+const char* css = "Content-Type: text/css\n\n";
+const char* cssext= ".css";
+
+
+int formresponse(char buffer[BUFFERSIZE], struct RESP_header* header){
+	strcat(buffer, header->httpversion);
+	strcat(buffer, " ");
+
+	if(header->status == 200){
+		char status[4];
+		sprintf(status, "%d", header->status);
+		strcat(buffer, status);
+		strcat(buffer, " OK\n");
+		char content_length[30];
+		sprintf(content_length, "Content-Length: %d\n", header->content_length);
+		strcat(buffer, content_length);
+		strcat(buffer, header->contenttype);
+		return 0;
+
+	}
+
+	else if (header->status ==404)
+	{
+		char status[4];
+		sprintf(status, "%d", header->status);
+		strcat(buffer, status);
+		strcat(buffer, " Not Found\n\n");
+		return 1;
+	}
+
+	else{
+		char status[4];
+		sprintf(status, "%d", header->status);
+		strcat(buffer, status);
+		strcat(buffer, " Error\n\n");
+	}
+
+	return 2;
+} 
+
+
+int sendresponse(int sockfd, struct GET_header* header){
+	FILE *fp;
+	fp = fopen(header->filepath, "r");
+	struct RESP_header resphead;
+	char buffer[BUFFERSIZE];
+	printf("%zu\n", sizeof(buffer));
+	memset(buffer, 0, BUFFERSIZE);
+	if (fp == NULL)
+	{
+		strcpy(resphead.httpversion, header->httpversion);
+		resphead.status = 404;
+		formresponse(buffer, &resphead);
+		return send(sockfd, buffer, BUFFERSIZE, 0);
+	}
+
+	else{
+		resphead.status = 200,
+		strcpy(resphead.httpversion, header->httpversion);
+
+		fseek(fp, 0, SEEK_END);
+		int size = ftell(fp);
+		fseek(fp, 0,SEEK_SET);
+		resphead.content_length = size;
+		if(getfiletype(header->filepath, &resphead)!=0){
+			formresponse(buffer, &resphead);
+			fclose(fp);
+			return send(sockfd, buffer, BUFFERSIZE, 0);
+		}
+		formresponse(buffer, &resphead);
+		fclose(fp);
+		return send(sockfd, buffer, BUFFERSIZE, 0);
+
+	}
+	fclose(fp);
+	return -1;
+}
+
+
+int getfiletype(const char *filepath, struct RESP_header* resphead){
+	if (strstr(filepath, htmlext) != NULL)
+	{
+		strcpy(resphead->contenttype, html);
+		return 0;
+	}
+	else if (strstr(filepath, jsext) != NULL)
+	{
+
+		strcpy(resphead->contenttype, javascript);
+		return 0;
+	}
+
+	else if (strstr(filepath, cssext) != NULL)
+	{
+		strcpy(resphead->contenttype, css);
+		return 0;
+	}
+
+	else if (strstr(filepath, jpegext) != NULL)
+	{
+		strcpy(resphead->contenttype, jpeg);
+		return 0;
+	}
+
+	else{
+		resphead-> status = 400;
+		return -1;
+	}
+}
+
+
+
+
+
diff --git a/sample b/sample
index 90ae967dd8c8ad29b067d9a47f9f7361e88538d0..98067b0fb98aa4bf835cb299210e69b51d864995 100755
GIT binary patch
literal 14680
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
Devs`=

literal 9064
zcmb<-^>JfjWMqH=CI&kO5N`sT16T+`GBB)=26MrL1A_$vCxZinJcA4a8v_FaD+2=q
zOq~Oi1*3m}3}awmfYBUa6Brnn85kH?7#J8Vm>>ccOb`=bv<yU;0Y*cO0lN)kA5<E}
zW{}twZV<`90HYZg6u<%?{UEmr@PWAu0(=Qz28>RCx}yL}!}Ni;AblE8eHu`GF!}<>
zU<L*T7!C6u$ZsGV0y2PsfguFyKN#%-ww-|iMuXIXgaV$Hq=48hTp%6;LkkxqTwt^f
zM3@0agVchA0-u(ofZPdU6N3eyih`i_;R=@zQ2)VbD3?J$Co{>+L_a4*HzzZ%v_iMS
z!c5o9M6Wns&j=i^AoD?L-TgwrHi3cx<UUYrfZQy?07(NN`2(vbv_{{md&<c&VN>C^
zZO3Q+S(XY?4~j~V86bV2_-Fu|#J~U&PY+E5SpgNnq(EwfFohW;85kI_i96#Em%||r
z3V&?o1mIBbi9<Yz0pv4Ghl0!oVRRW&9OmdVFfa%*NHG)$K+-iV9Wvx(CMAQS#f+i2
zq$s(dlA$2As3^aPp`f&+m?1vCxFj(-J3cuhJ3cKjGl!wLBqcKsq_QMGn;|zfw>Y(g
zA+0DiF$E-+oLj&U9}hARq^+nVJ~uHlk0CxjJvToODiY7&?&Im?9B-s&0%sZNfgH`i
z1cuCD5)``-J|hDYI8VbOQzSE!7nCvz85kHqVx>}<oD2+14Aszp_`whHA1F=0{m8%o
z_cy3)0L492IfDc=JlGi+!1lnz6_CV1u7QbbAc=#@D44hbk~k>+!o)3*#6fn$#2t{t
zL2iYKdmxE}+yoO3KoaMK2{JG+L?DSniv+N&NAnvFk8V~|E(HdU)&nK1FE%qUFnBZ{
z;W!MIh7<oymADib{;R5RDKPNMJ23oL1@SXL@-H9!|NsBLsuY(3Lk1|Dy}SVC3xW8c
zAbEKJ%;y5}K|%3y1DMYQ;)8<V<pMDO7pDS42FU9#CxH2%KzxvwUp9dGuRwf|S6>!@
z`Hw(+P}IFl0P~AD6&TVcfE)zEhHpJPFUEOvKJsXO@*yC^^Z0=TE(ZpW;|D)*f~ezd
z><$bs+W-Im|0RuI-i3i-N4Y=(L#T%?DBXKB|KRiJd|D>G17s2?SOjDDgCzbxNaL4p
z0SPk19tMR%njVb54<sMz(fAHTdmQ}7?9utuqw|Bu!58)(jK@4K{wooMo5l?@jbEN2
z_Atc$23tc;1qOyv!BCIRr!VsU|NkF*j8%?Pfr0Te*rxpod<hI5&GrnXtgk2Y%QL_Y
z`v}tT|3d7`s{jB0gV-L8ZzixXFm&#%`ThUDN9Wdp-~a!ocyzO<YJg(4)Afhp0gv8R
zfj|HM?|Q+^z_1VG9goiAFS7pq|L@T)x|l<O0V?m&c@d%n6ssU5>L4Y(QyV}ALyYj~
zyatl61sUDj3YKU-AOI42{rCTW52#S*@fUag{{IhgbGPr06c1w_uyaaSUp)T%|NqIu
zP=_n9Ffe#@?tKBWpmXa3OqU;TW%%>|zXC58XWH>rmOuahb2E5!PX((-aZoJS_NgGn
zaL<5UdITiV+4=!wL-Sq`#ZaoWzl6(y;l)glRCg=L*5eL56Brp7c7PJr%O4=mb%V9+
zs{<vX&f_mY=C>Xwf$EIMp%WCg9=%{EdvqS#4+`lQ&LFj&tv?_R08tF3@(>3|fTZ9K
zm;!Ua>nab3phs_jfJZk(Yv(bK&g(DA{(u7+>`j;jk3eGBE!Yl{f|!Nu!`G593%aL*
z90ZM2Nw8|v*fRYCiY<P52FGy6FvrgSj-ierKE0}ZED8*v9=*CCI@q)Gn`h@$AI+!W
zvgP1k<`>gJo^5?wqF{I%mS222U-@)?bLsr=_+R9XNAqDu56jo3uRsM)bgW~HW2|GG
zWBlO>i2U{WFsN91!vRtODw;s$y`O)GLYSkErwfC-YY3=ZmS(oLU|;~ZC1Za7{}0Nk
zJb(WG2gx!0{r`Ur0|UeEzyJTAVPIg$`Tzg_8wLi3JOBUxH(_L80JS4P@xxdZ#K2e~
zz$neb&M|?JT>vBwYCCTD{r|rfNC6as#6e6{^$ZLu3=H75=7nGX|1SV3;1h7;lkno_
zF6U@qu$QvdGFDLn34_c8wb}gs{QtibB;d#=(8lD<%f_^Yhn)jrMhXK1!}CA?|E~k(
zKbSo8N=A?ZkY14gD*pZdp9<3N#3#_t<isb@$Lz|d(97b)r_sae!DrCM=D}yt%<jwQ
zP{e29$Y<clr{Tn>;KV24#3$gy#{u>?C_EPY`~M$QSc8lj#iJoWX$T~+L;4#IP#R_)
zC@F*3Fq#L%VPIg`!3t5&3+1Ok`zxS!Hb@B8zk+oiK@~qpTna=mFfd3!`%|EN1rmbE
zfBpAAAH<&l?KgoM7$E)wW{7>D1_p?K04fh_8?}Q386bTG5K{s~FfcHPLTMNUYS4h$
z(DoH958VI@BFYs|!v!QH4k8#B7#^@d?1zbOfbwDPHh`*wwc%j)|N9T|PXko_e<&Xo
zo*$t645&QR7@AYCek{60-=Oiz1|0_wgVJhH+6+p&LFq6kod%`LpftL<?#|9u3L2qF
zrFkW#3Z{A{dIq{?rC^?6ouQeYfr*}_CPZAp$iUFdz|6oB-3SamGXo<7Y}^1@64cj#
z^|w*QnHfr;=>}Dtg#nh{P{mmpVCf81oQ(mN9#O^F8L-78GXn<$EdEi|b27lv5vn*B
zJiVccbHno;syGkB18BUVit{owV2KZA20jMZI1j3Neg;@RMim!eD1hc~RB=K0I0dS>
z5W@ki>V@IsFR1E8;N=0TxF`dt8I3FkVly*{F<?u-%nafTuzn&)9Sk!wNH8!!^E*ro
zL^Cr;G9+LXNA#yb>R_0e0alv9L?C@j7KV@i5h4&4sGMYEz;r*Td}LzaV>o~oFCdda
z;tXizuO0)a7tF_iUM_>$6O0T}3>8rK!^)FjP`io&Gd!!H=D^B%h$|Tw+Q8~D<7Fv$
zoDS1pAbYU+cO%#wA%+Xwka7}cKBy6mEgV4d*vvT%l3)<VNDp_w=3~bDQ>c1aeFNr#
z#vQ>7%=F342#Pbz^q|NH8Xw|g0QEXST4D8qAtUy2nvY;{%=F_6HV0$^Do(^9UW`M$
zjS>5}&P+zo_=qHY+yiEdHrO1@{JQ`w4pW7o_uvo*jb~yTe|itK7d^lH!C{U76ZUYE
zXJTLwWRhgafTmlRi*!KZ42W_DG|&K&vu1+C3uqVs#0R&X85kI@gU5-a7#h&b`3iOq
zqI`q(0lcB+*mFSAC%BEyz`zj81PV{g{GJI_4;ps>*$Zy-GcYjZfyF^0sJID-_%s~h
zunOc~Cd_!;hC{t8*nBMIe{xYtaY<=fnqD$Pe7u))P`r<4a7cVSLrQ8<YI<gINorAi
zNp5^{PJUi$F++TON`8ELPJU8iPJBv9eo=9JVrd0Ka(-?>PHIVNik`Wtr3rRL@oAZP
znemB5MTwR1sd*(ul?-V`iMgrqDW$o&l??ImNWA#Wyv!05rS7gF8L5dWsYPH%x&=A<
zy2iWuxx~jqoeX26XiQ;<cZu|K^!0RRh(|WExFoTtgdslO-7hrW)gvBanukjeL%h3>
zzmua+yuX`Uuxm(sh@+E_E64`$z-4lADcB1P@tz^R@rb|)@pT3TO-N!=PAYh;v!K$!
z0XCKi8o>mOm!gV*$3;<vz{97gLh-37i6w~`BdrKUCeU$Kgb2twjB!?UX^^RqL07PI
za|_TFpp44K$EOtM$7dwwrR1bC#C!V3gIyY5TAZ2!8`1@Z3@G3k3KENoQ{&xTL*k24
z3rkarL4ll9Tnx1gJmw1-Lq@f+xTL5gKO0pn-m5G=2%7wya}tY-!D%nV*BKV=ph$qF
zPn0NN&?~OYElEsb&;ywZrZZry%)FA+q5=lJy!?_>Jx3=`-IBy~C@(#)R4=JCGbcqi
zGlfA9#LGx5&S20>smv>`%!SY;MG%>?)S}|d{5%v+d=Z0QQEE;iNCT8rkW<2-2M!p$
zf}9e)^!ySAy^_?55(Yg`R$$O8$_GUSgI;O|H1TJo6d`yJt&m&*(E(#;B^QC+lbD;C
z%m6YLWITf&#IU5|Vg|kB{M_8syb{y`hD;u)T>+}IVf7iTy$qXwgY~~)#)H(t*dSV&
zfq?<k=Yi>mwX0$CTcCLzkUAKKmD@1BA)0<z`?~~cAZYvrrWQn_>j$-SzWx874^<9t
zr_X>2!1TlViLm|{$Se@{gZ2rb%Hi$#15g14sE0xQN)QvKAJ%^hgU(k$mBZWp51<`M
zSiciw7YKvQ0MRfU$H2e<>hr<$!}<pqP>;gwfw>>14n}7)Fff4nkT5>1AJG8S59@cL
zyB}shsNDxr3eykkZ)^YwGB7Z}^uz2&_djUN3Z&EtY9Op1`~W1#z`y|OH-q$p{DQ8(
z58Q5pjPZetfQ=jM0BK-gV1SJWfaE|JYAlEe#+_*TVf~y3Q2pRBJFrR!0h&7kv0(HR
zH2tvtPy;By7#J8}?gi-qVRZgnH2tuC(*&sgOVD%x(hI^cdqHdvUW}$6*1t-D4qR}8
z6d_@B|F4AVhs7VPA65X>kKR^8*AHozgZdB<OJMWKuz6<Cd?rK&LZa)3wBHf>Vg0%T
zQ2RyD5<GhNon&BO08OF8f(h16hs`^qt4HTwWnf_7hvq?$3t{6%5+Fl~h`)!>@PpY8
z>rW~Wss9;td>W=7*6)O^3jnp3LGFSk2Y7mdrGpu0_QU$8KR}+s<9=8;yhqay@5e$d
zfXs@5TmZo^eK7h5ntoXOJprm8N<lPZanC=f7|j2m=`xVw0;onP1rh>dbUrh<zlA7g
zz>2{0wh)#Hgo2Z><OHJyk>Vb%h=GA&2DISdfhmMaqH)1<zp%UmRRX3~Kpm<8s@xbD
k7(ny=pt*EdxPi(tkU~)Yg!vuBhv5^@fx!!ChNIgL0D@E#+5i9m

diff --git a/server.c b/server.c
index 797d6a2..eb181bc 100644
--- a/server.c
+++ b/server.c
@@ -1,13 +1,7 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h> 
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <unistd.h>
 # include <pthread.h>
+#include "server.h"
+#include "GETheader.h"
+#include "RESPheader.h"
 
 #define MAXUSER 5
 
@@ -18,13 +12,10 @@ int main(int argc, char *argv[]){
 	int sockfd, newsockfd;
 	struct sockaddr_storage clien_addr;
 	socklen_t clien_size;
-	char ipstr[INET6_ADDRSTRLEN];
-
 	if (argc <2){
 		fprintf(stderr,"ERROR, no port provided\n");//to check if there is no port provided at start
 		exit(1);
 	}
-
 	memset(&info, 0, sizeof(info));
 	info.ai_family = AF_UNSPEC; ///sets it to unspecified
 	info.ai_socktype = SOCK_STREAM; //TCP connection stream oriented
@@ -97,18 +88,19 @@ void* handleclient(void * newsockfd){
 	int *sockfd_ptr = (int*) newsockfd;
 	int numbytes;
 	int sockfd = *sockfd_ptr;
-	char buffer[256];
-	bzero(buffer, 256);
+	char buffer[BUFFERSIZE];
+	bzero(buffer, BUFFERSIZE);
 
 	if ((numbytes = recv(sockfd, buffer, 255, 0)) <0)
 	{
 		perror("ERROR recieving");
 		return NULL;
 	}
+	struct GET_header header;
 
-	printf("%s\n", buffer);
+	parse_GET_request(buffer, &header);
 
-	if (send(sockfd, "hello world", 13, 0) <0)
+	if (sendresponse(sockfd, &header) <0)
 	{
 		perror("ERROR sending");
 		return NULL;
diff --git a/server.h b/server.h
index decc240..1517830 100644
--- a/server.h
+++ b/server.h
@@ -1,6 +1,19 @@
 #ifndef SERVER
 #define SERVER
 
-char root[32];
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h> 
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <unistd.h>
+
+#define BUFFERSIZE 2048
+
+char *root;
 
 #endif
\ No newline at end of file
-- 
GitLab