Initial commit for assignment 2
This commit is contained in:
parent
5989c0f79c
commit
21d520b717
7 changed files with 165 additions and 1 deletions
|
@ -8,4 +8,5 @@
|
|||
|
||||
### Contents
|
||||
|
||||
* [Assignment 1: Firewall Rules](./firewall-rules)
|
||||
* [Assignment 1: Firewall Rules](./firewall-rules)
|
||||
* [Assignment 2: Firewall Server](./firewall-server)
|
21
firewall-server/Makefile
Normal file
21
firewall-server/Makefile
Normal file
|
@ -0,0 +1,21 @@
|
|||
CFLAGS = -Wall -Werror -g -fdiagnostics-color=always
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: server client
|
||||
|
||||
server: server.o
|
||||
$(CC) $(CFLAGS) -o server server.o -lpthread
|
||||
|
||||
server.o: server.c
|
||||
$(CC) $(CFLAGS) -c server.c
|
||||
|
||||
|
||||
client: client.o
|
||||
$(CC) $(CFLAGS) -o client client.o
|
||||
|
||||
client.o: client.c
|
||||
$(CC) $(CFLAGS) -c client.c
|
||||
|
||||
clean:
|
||||
rm -f *.o server client
|
8
firewall-server/README.md
Normal file
8
firewall-server/README.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Firewall Server
|
||||
|
||||
*Create a simple server for operating on firewall rules*
|
||||
|
||||
---
|
||||
|
||||
* [Problem statement](./ex2.pdf)
|
||||
* Formative
|
6
firewall-server/client.c
Normal file
6
firewall-server/client.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main (int argc, char **argv) {
|
||||
// Client to be written
|
||||
return 0;
|
||||
}
|
BIN
firewall-server/ex2.pdf
Normal file
BIN
firewall-server/ex2.pdf
Normal file
Binary file not shown.
6
firewall-server/server.c
Normal file
6
firewall-server/server.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main (int argc, char **argv) {
|
||||
// Server to be written
|
||||
return 0;
|
||||
}
|
122
firewall-server/test.sh
Normal file
122
firewall-server/test.sh
Normal file
|
@ -0,0 +1,122 @@
|
|||
#!/bin/bash
|
||||
|
||||
#globals
|
||||
ret=0
|
||||
server="server"
|
||||
client="client"
|
||||
serverOut=testServerOutput.txt
|
||||
clientOut=testClientOutput.txt
|
||||
successFile=testSuccess.txt
|
||||
IPADDRESS=localhost
|
||||
PORT=2200
|
||||
|
||||
# --- helper function ---
|
||||
function run(){
|
||||
echo -e "$1:"
|
||||
$1 #execute
|
||||
#check errors
|
||||
tmp=$?
|
||||
if [ $tmp -ne 0 ]; then
|
||||
ret=$tmp
|
||||
fi
|
||||
echo "" #newline
|
||||
return $tmp
|
||||
}
|
||||
|
||||
function checkConnection() {
|
||||
sleep 0.1
|
||||
case `netstat -a -n -p 2>/dev/null| grep $PORT ` in
|
||||
*":::2200"*)
|
||||
return 1;;
|
||||
esac
|
||||
sleep 0.2
|
||||
case `netstat -a -n -p 2>/dev/null| grep $PORT` in
|
||||
*":::2200"*)
|
||||
return 1;;
|
||||
esac
|
||||
sleep 0.2
|
||||
case `netstat -a -n -p 2>/dev/null| grep $PORT` in
|
||||
*":::2200"*)
|
||||
return 1;;
|
||||
esac
|
||||
sleep 0.2
|
||||
case `netstat -a -n -p 2>/dev/null| grep $PORT` in
|
||||
*":::2200"*)
|
||||
return 1;;
|
||||
esac
|
||||
sleep 0.2
|
||||
case `netstat -a -n -p 2>/dev/null| grep $PORT` in
|
||||
*":::2200"*)
|
||||
return 1;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
||||
# --- TESTCASES ---
|
||||
function basic_testcase(){
|
||||
t="testcase 1"
|
||||
|
||||
#cleanup
|
||||
rm -f $serverOut
|
||||
rm -f $clientOut
|
||||
rm -f $successFile
|
||||
echo "Rule added" > $successFile
|
||||
killall $server > /dev/null 2> /dev/null
|
||||
|
||||
# start server
|
||||
echo -en "starting server: \t"
|
||||
./$server $PORT > $serverOut 2>&1 &
|
||||
checkConnection
|
||||
if [ $? -ne 1 ]
|
||||
then
|
||||
echo -e "ERROR: could not start server"
|
||||
return -1
|
||||
else
|
||||
echo "OK"
|
||||
fi
|
||||
|
||||
# start client
|
||||
command="A 147.188.192.41 443"
|
||||
echo -en "executing client: \t"
|
||||
./$client $IPADDRESS $PORT $command > $clientOut 2>/dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo -e "Error: Could not execute client"
|
||||
killall $server > /dev/null 2> /dev/null
|
||||
return -1
|
||||
else
|
||||
echo "OK"
|
||||
fi
|
||||
killall $server > /dev/null 2> /dev/null
|
||||
if [ ! -r $clientOut ]
|
||||
then
|
||||
echo "Error: Client produced no output"
|
||||
return -1
|
||||
fi
|
||||
|
||||
echo -en "server result: \t"
|
||||
res=`diff $clientOut $successFile 2>&1`
|
||||
if [ " $res" != " " ]
|
||||
then
|
||||
echo "Error: Server returned invalid result"
|
||||
return -1
|
||||
else
|
||||
echo "OK"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# --- execution ---
|
||||
#reset
|
||||
rmmod $executable 2>/dev/null
|
||||
|
||||
run basic_testcase
|
||||
#cleanup
|
||||
if [ $ret != 0 ]
|
||||
then
|
||||
echo Basic test failed
|
||||
else
|
||||
echo Basic test succeeded
|
||||
fi
|
||||
exit $ret
|
||||
|
Reference in a new issue