Initial commit for assignment 2

This commit is contained in:
akp 2023-10-30 14:44:43 +00:00
parent 5989c0f79c
commit 21d520b717
No known key found for this signature in database
GPG key ID: CF8D58F3DEB20755
7 changed files with 165 additions and 1 deletions

View file

@ -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
View 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

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

Binary file not shown.

6
firewall-server/server.c Normal file
View 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
View 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