From 8c512ca29279d1e36ac7fa2134b807e112fcb818 Mon Sep 17 00:00:00 2001
From: Neeserg Parajuli <n.parajuli@student.unimelb.edu.au>
Date: Tue, 17 Apr 2018 08:40:53 +0000
Subject: [PATCH] not working with tests but working sending and recieving
 using clients.

---
 form_response.c           |  18 +++++--
 server                    | Bin 14728 -> 14752 bytes
 server.c                  |   5 +-
 test/directory/index.html |   5 ++
 test/directory/sample.jpg | Bin 0 -> 17868 bytes
 test/directory/script.js  |   3 ++
 test/directory/style.css  |   3 ++
 test/index.html           |   5 ++
 test/sample.jpg           | Bin 0 -> 17868 bytes
 test/script.js            |   3 ++
 test/style.css            |   3 ++
 test_log.txt              |   8 ++++
 test_script.sh            |  96 ++++++++++++++++++++++++++++++++++++++
 13 files changed, 144 insertions(+), 5 deletions(-)
 create mode 100644 test/directory/index.html
 create mode 100644 test/directory/sample.jpg
 create mode 100644 test/directory/script.js
 create mode 100644 test/directory/style.css
 create mode 100644 test/index.html
 create mode 100644 test/sample.jpg
 create mode 100644 test/script.js
 create mode 100644 test/style.css
 create mode 100644 test_log.txt
 create mode 100755 test_script.sh

diff --git a/form_response.c b/form_response.c
index 945a1f7..b77caaf 100644
--- a/form_response.c
+++ b/form_response.c
@@ -54,7 +54,6 @@ int sendresponse(int sockfd, struct GET_header* header){
 	fp = fopen(header->filepath, "r");
 	struct RESP_header resphead;
 	char buffer[BUFFERSIZE];
-	printf("%zu\n", sizeof(buffer));
 	memset(buffer, 0, BUFFERSIZE);
 	if (fp == NULL)
 	{
@@ -78,8 +77,21 @@ int sendresponse(int sockfd, struct GET_header* header){
 			return send(sockfd, buffer, BUFFERSIZE, 0);
 		}
 		formresponse(buffer, &resphead);
-		fclose(fp);
-		return send(sockfd, buffer, BUFFERSIZE, 0);
+		if(send(sockfd, buffer, BUFFERSIZE, 0)<0){
+			return -1;	
+			}
+	while(!feof(fp)){
+		memset(buffer, 0, BUFFERSIZE);
+		int n_bytes = fread(buffer, 1, BUFFERSIZE, fp);
+		if(n_bytes <=0){
+		break;
+		}
+		if(send(sockfd, buffer,n_bytes,0)<0){
+			return -1;	
+		}
+		
+	}
+	return 0;
 
 	}
 	fclose(fp);
diff --git a/server b/server
index 1c46ef1dce07553ecf74015d404308972ce0da59..b3ce87548f745b9c48c1b643b9813367ae78a383 100755
GIT binary patch
delta 2729
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

delta 2622
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
bGXdHHOxRp$R?oz^d-6|<cE;0_8!hDlsNsrQ

diff --git a/server.c b/server.c
index 30ef036..ede5a95 100644
--- a/server.c
+++ b/server.c
@@ -16,7 +16,6 @@ int main(int argc, char *argv[]){
 		fprintf(stderr,"ERROR, no port provided\n");//to check if there is no port provided at start
 		exit(1);
 	}
-	printf("%s\n", argv[2]);
 	strcpy(root, argv[2]);
 	memset(&info, 0, sizeof(info));
 	info.ai_family = AF_UNSPEC; ///sets it to unspecified
@@ -93,9 +92,10 @@ void* handleclient(void * newsockfd){
 	char buffer[BUFFERSIZE];
 	bzero(buffer, BUFFERSIZE);
 
-	if ((numbytes = recv(sockfd, buffer, 255, 0)) <0)
+	if ((numbytes = recv(sockfd, buffer, BUFFERSIZE, 0)) <0)
 	{
 		perror("ERROR recieving");
+		close(sockfd);
 		return NULL;
 	}
 	struct GET_header header;
@@ -105,6 +105,7 @@ void* handleclient(void * newsockfd){
 	if (sendresponse(sockfd, &header) <0)
 	{
 		perror("ERROR sending");
+		close(sockfd);
 		return NULL;
 	}
 
diff --git a/test/directory/index.html b/test/directory/index.html
new file mode 100644
index 0000000..e499c4e
--- /dev/null
+++ b/test/directory/index.html
@@ -0,0 +1,5 @@
+<html>
+    <body>
+        <p>hello</p>
+    </body>
+</html>
\ No newline at end of file
diff --git a/test/directory/sample.jpg b/test/directory/sample.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..14ce979b6625ed3b809778ab969b7b0f30690cb6
GIT binary patch
literal 17868
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
A=>Px#

literal 0
HcmV?d00001

diff --git a/test/directory/script.js b/test/directory/script.js
new file mode 100644
index 0000000..57efed4
--- /dev/null
+++ b/test/directory/script.js
@@ -0,0 +1,3 @@
+function test(){
+	alert("hello world!");
+}
diff --git a/test/directory/style.css b/test/directory/style.css
new file mode 100644
index 0000000..4a57d6b
--- /dev/null
+++ b/test/directory/style.css
@@ -0,0 +1,3 @@
+body {
+    background-color: lightblue;
+}
\ No newline at end of file
diff --git a/test/index.html b/test/index.html
new file mode 100644
index 0000000..e499c4e
--- /dev/null
+++ b/test/index.html
@@ -0,0 +1,5 @@
+<html>
+    <body>
+        <p>hello</p>
+    </body>
+</html>
\ No newline at end of file
diff --git a/test/sample.jpg b/test/sample.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..14ce979b6625ed3b809778ab969b7b0f30690cb6
GIT binary patch
literal 17868
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
A=>Px#

literal 0
HcmV?d00001

diff --git a/test/script.js b/test/script.js
new file mode 100644
index 0000000..57efed4
--- /dev/null
+++ b/test/script.js
@@ -0,0 +1,3 @@
+function test(){
+	alert("hello world!");
+}
diff --git a/test/style.css b/test/style.css
new file mode 100644
index 0000000..4a57d6b
--- /dev/null
+++ b/test/style.css
@@ -0,0 +1,3 @@
+body {
+    background-color: lightblue;
+}
\ No newline at end of file
diff --git a/test_log.txt b/test_log.txt
new file mode 100644
index 0000000..cd676f4
--- /dev/null
+++ b/test_log.txt
@@ -0,0 +1,8 @@
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
+ERROR sending: Connection reset by peer
diff --git a/test_script.sh b/test_script.sh
new file mode 100755
index 0000000..17f5081
--- /dev/null
+++ b/test_script.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+if [ "$#" -ne 2 ]; then
+  echo "Usage: $0 server_name port" >&2
+  exit 1
+fi
+./$1 $2 ./test &>test_log.txt &
+echo "Starting server, saving log: $temp_log_file"
+
+sleep 1s
+server_pid=$!
+if ps -p $server_pid > /dev/null
+then
+    echo "Server started with PID: $server_pid"
+else
+    echo "Error starting server, check test_log.txt"
+    exit 1
+fi
+base_url="http://127.0.0.1:$2/" 
+sub_url="${base_url}directory/"
+
+web_root="./test/"
+sub_root=${web_root}"directory/"
+index_file="index.html"
+css_file="style.css"
+javascript_file="script.js"
+jpeg_file="sample.jpg"
+mime_html="Content-Type: text/html$"
+mime_jpeg="Content-Type: image/jpeg$"
+mime_css="Content-Type: text/css$"
+mime_javascript="Content-Type: text/javascript$|Content-Type: application/javascript$"
+
+do_http_get () {
+    test_num=$1
+    test_desc=$2
+    test_url=$3
+    test_file=$4
+    test_resp=$5
+    test_mime=$6
+
+    temp_file="$(mktemp /tmp/myscript.XXXXXX)"
+    
+    temp_header="$(mktemp /tmp/myscript.XXXXXX)"
+    
+    header_pass=false
+    get_pass=false
+    mime_pass=false
+    wget -q --server-response -O $temp_file $test_url 2> $temp_header
+    if [ "$test_resp" == "404" ];then
+        if grep -Eiq 'HTTP/1.0 404|HTTP/1.1 404' $temp_header 
+        then
+            header_pass=true
+        fi
+        get_pass=true
+        mime_pass=true
+    else
+        if grep -Eiq 'HTTP/1.0 200 OK$|HTTP/1.1 200 OK$' $temp_header 
+        then
+            header_pass=true
+        fi
+        if grep -Eiq "$test_mime" $temp_header 
+        then
+            mime_pass=true
+        fi
+        diff $test_file $temp_file &>/dev/null
+        diff_res=$?
+        if [ $diff_res -eq 0 ];
+        then
+            get_pass=true
+        else
+            get_pass=false
+	    diff $test_file $temp_file
+        fi
+    fi
+    rm -f "$temp_file"
+    rm -f "$temp_header"
+    
+    if $header_pass && $get_pass && $mime_pass;
+    then
+        echo "Test $test_num: $test_desc: PASS"
+    else
+        echo "Test $test_num: $test_desc: FAIL: header:$header_pass, get:$get_pass, mime:$mime_pass"
+    fi
+} 
+
+do_http_get 1 "GET HTML file in root" $base_url$index_file $web_root$index_file "200" "$mime_html"
+do_http_get 2 "GET Non-existent HTML file in root" $base_url"junk.html" $web_root$index_file "404"
+do_http_get 3 "GET CSS file in root" $base_url$css_file $web_root$css_file "200" "$mime_css"
+do_http_get 4 "GET JavaScript file in root" $base_url$javascript_file $web_root$javascript_file "200" "$mime_javascript"
+do_http_get 5 "GET JPEG file in root" $base_url$jpeg_file $web_root$jpeg_file "200" "$mime_jpeg"
+do_http_get 6 "GET HTML file in directory" "$sub_url$index_file" "$sub_root$index_file" "200" "$mime_html"
+do_http_get 7 "GET CSS file in directory" "$sub_url$css_file" "$sub_root$css_file" "200" "$mime_css"
+do_http_get 8 "GET JavaScript file in directory" "$sub_url$javascript_file" "$sub_root$javascript_file" "200" "$mime_javascript"
+do_http_get 9 "GET JPEG file in directory" "$sub_url$jpeg_file" "$sub_root$jpeg_file" "200" "$mime_jpeg"
+
+
+kill $server_pid
-- 
GitLab