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
|
### 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