summaryrefslogtreecommitdiffstats
path: root/notFinishedCode/Report
diff options
context:
space:
mode:
Diffstat (limited to 'notFinishedCode/Report')
-rw-r--r--notFinishedCode/Report/activity_diagram.pngbin0 -> 152591 bytes
-rw-r--r--notFinishedCode/Report/test.aux84
-rw-r--r--notFinishedCode/Report/test.log116
-rw-r--r--notFinishedCode/Report/test.pdfbin942986 -> 1037745 bytes
-rw-r--r--notFinishedCode/Report/test.tex36
-rw-r--r--notFinishedCode/Report/test.tex.backup59
-rw-r--r--notFinishedCode/Report/test.tex.bak581
-rw-r--r--notFinishedCode/Report/test.tex~38
-rw-r--r--notFinishedCode/Report/test.toc53
9 files changed, 798 insertions, 169 deletions
diff --git a/notFinishedCode/Report/activity_diagram.png b/notFinishedCode/Report/activity_diagram.png
new file mode 100644
index 0000000..0f4fdd2
--- /dev/null
+++ b/notFinishedCode/Report/activity_diagram.png
Binary files differ
diff --git a/notFinishedCode/Report/test.aux b/notFinishedCode/Report/test.aux
index 807e626..d305bc2 100644
--- a/notFinishedCode/Report/test.aux
+++ b/notFinishedCode/Report/test.aux
@@ -6,64 +6,68 @@
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction and Motivation}{3}}
\citation{network}
\citation{network}
-\citation{python}
\@writefile{toc}{\contentsline {section}{\numberline {2}Requirements}{4}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces }}{4}}
-\@writefile{toc}{\contentsline {section}{\numberline {3}Database design}{6}}
-\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{4}}
+\citation{python}
+\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Software requirements}{5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Hardware requirements}{6}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Database design}{7}}
+\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{7}}
\citation{mysqlManual}
\citation{wiki}
\citation{wiki}
-\@writefile{toc}{\contentsline {section}{\numberline {4}Software design}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Database access}{7}}
-\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{7}}
-\citation{socket}
-\citation{wiki}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Software design}{8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Database access}{8}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces }}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Client and Server class}{8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{8}}
+\citation{socket}
\citation{wiki}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces }}{9}}
-\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces }}{9}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Client and Server class}{9}}
\citation{wiki}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ping class}{10}}
+\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces }}{10}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces }}{10}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Data logging}{10}}
-\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces }}{10}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}SSH Class}{10}}
-\citation{beagleDataSheet}
-\@writefile{toc}{\contentsline {section}{\numberline {5}Hardware design}{11}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}BeagleBoard}{11}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ping class}{10}}
+\citation{wiki}
+\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces }}{11}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Data logging}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces }}{11}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Cell phones}{12}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{12}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Server}{12}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}SSH Class}{11}}
+\citation{beagleDataSheet}
+\@writefile{toc}{\contentsline {section}{\numberline {5}Hardware design}{12}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}BeagleBoard}{12}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces }}{12}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Cell phones}{13}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{13}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Server}{13}}
\citation{spin}
\citation{spin}
\citation{wiki}
-\@writefile{toc}{\contentsline {section}{\numberline {6}Communication protocol}{13}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Handler side}{13}}
-\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces }}{13}}
-\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces }}{13}}
-\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces }}{13}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{14}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Communication protocol}{14}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Handler side}{14}}
+\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces }}{14}}
+\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces }}{14}}
+\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces }}{14}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{15}}
\citation{sshTunnel}
-\@writefile{toc}{\contentsline {section}{\numberline {7}Security and safety of the system}{15}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{15}}
-\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces }}{15}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Security and safety of the system}{16}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{16}}
+\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces }}{16}}
\citation{https}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Security on the web site}{16}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Security on the web site}{17}}
\citation{https}
\citation{https}
-\@writefile{toc}{\contentsline {section}{\numberline {8}Web page}{20}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{20}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Results on the web page}{20}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Web page}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Results on the web page}{21}}
\citation{pChart}
-\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces }}{21}}
-\@writefile{toc}{\contentsline {section}{\numberline {9}How to use and start the system}{22}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Required libraries}{22}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Configuring hardware}{22}}
-\@writefile{toc}{\contentsline {section}{\numberline {10}Conclusion}{23}}
+\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces }}{22}}
+\@writefile{toc}{\contentsline {section}{\numberline {9}How to use and start the system}{23}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Required libraries}{23}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Configuring hardware}{23}}
+\@writefile{toc}{\contentsline {section}{\numberline {10}Conclusion}{24}}
\bibcite{network}{1}
\bibcite{python}{2}
\bibcite{mysqlManual}{3}
@@ -74,4 +78,4 @@
\bibcite{https}{8}
\bibcite{pChart}{9}
\bibcite{beagleDataSheet}{10}
-\newlabel{LastPage}{{}{24}}
+\newlabel{LastPage}{{}{25}}
diff --git a/notFinishedCode/Report/test.log b/notFinishedCode/Report/test.log
index 9a7526a..86d435b 100644
--- a/notFinishedCode/Report/test.log
+++ b/notFinishedCode/Report/test.log
@@ -1,4 +1,4 @@
-This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.9.27) 20 OCT 2011 17:24
+This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.9.27) 21 OCT 2011 12:49
entering extended mode
%&-line parsing enabled.
**test.tex
@@ -271,20 +271,17 @@ Class scrartcl Info: You've told me to use the font selection of the element
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
(scrartcl) on input line 3.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <10.95> on input line 4.
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
-(scrartcl) on input line 4.
-Class scrartcl Info: You've told me to use the font selection of the element
-(scrartcl) `sectioning' that is an alias of element `disposition'
-(scrartcl) on input line 5.
-LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <10.95> on input line 6.
+(scrartcl) on input line 7.
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
-(scrartcl) on input line 12.
+(scrartcl) on input line 8.
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
-(scrartcl) on input line 17.
+(scrartcl) on input line 15.
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
(scrartcl) on input line 20.
@@ -297,6 +294,9 @@ Class scrartcl Info: You've told me to use the font selection of the element
Class scrartcl Info: You've told me to use the font selection of the element
(scrartcl) `sectioning' that is an alias of element `disposition'
(scrartcl) on input line 29.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 32.
)
\tf@toc=\write4
\openout4 = `test.toc'.
@@ -307,111 +307,115 @@ Class scrartcl Info: You've told me to use the font selection of the element
<BigPicture_new1.png, id=18, 874.26625pt x 665.48625pt>
File: BigPicture_new1.png Graphic file (type png)
-<use BigPicture_new1.png> [4
+<use BigPicture_new1.png>
+<activity_diagram.png, id=20, 550.84535pt x 679.45181pt>
+File: activity_diagram.png Graphic file (type png)
- <./BigPicture_new1.png>] [5]
-<DBRelationship.png, id=27, 1302.8675pt x 540.0175pt>
+<use activity_diagram.png> [4
+
+ <./BigPicture_new1.png>] [5 <./activity_diagram.png>] [6] <DBRelationship.png,
+ id=33, 1302.8675pt x 540.0175pt>
File: DBRelationship.png Graphic file (type png)
- <use DBRelationship.png>
-[6 <./DBRelationship.png (PNG copy)>]
-<dbClass.png, id=31, 660.34941pt x 620.67177pt>
+
+<use DBRelationship.png> [7 <./DBRelationship.png (PNG copy)>]
+<dbClass.png, id=38, 660.34941pt x 620.67177pt>
File: dbClass.png Graphic file (type png)
<use dbClass.png>
-<serialPort.png, id=32, 518.64352pt x 371.26941pt>
+<serialPort.png, id=39, 518.64352pt x 371.26941pt>
File: serialPort.png Graphic file (type png)
<use serialPort.png>
-[7 <./dbClass.png (PNG copy)>]
+[8 <./dbClass.png (PNG copy)>]
LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <9> on input line 164.
+(Font) <9> on input line 176.
LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <5> on input line 164.
+(Font) <5> on input line 176.
-<serverClass.png, id=39, 302.12875pt x 181.67876pt>
+<serverClass.png, id=44, 302.12875pt x 181.67876pt>
File: serverClass.png Graphic file (type png)
<use serverClass.png>
-<ClientClass.png, id=40, 507.30705pt x 256.48764pt>
+<ClientClass.png, id=45, 507.30705pt x 256.48764pt>
File: ClientClass.png Graphic file (type png)
<use ClientClass.png>
-[8 <./serialPort.png (PNG copy)>] <ping.png, id=47, 419.44942pt x 97.77705pt>
+[9 <./serialPort.png (PNG copy)>] <ping.png, id=52, 419.44942pt x 97.77705pt>
File: ping.png Graphic file (type png)
-<use ping.png> [9 <./serverClass.png (PNG copy)> <./ClientClass.png (PNG copy)>
-] <logging.png, id=51, 333.00882pt x 167.21294pt>
+<use ping.png> [10 <./serverClass.png (PNG copy)> <./ClientClass.png (PNG copy)
+>] <logging.png, id=56, 333.00882pt x 167.21294pt>
File: logging.png Graphic file (type png)
- <use logging.png> [10 <./ping.png (PNG copy)> <./logging.png (PNG copy)>]
-<bb.jpg, id=55, 521.95pt x 516.93124pt>
+ <use logging.png> [11 <./ping.png (PNG copy)> <./logging.png (PNG copy)>]
+<bb.jpg, id=60, 521.95pt x 516.93124pt>
File: bb.jpg Graphic file (type jpg)
- <use bb.jpg> [11
+ <use bb.jpg> [12
- <./bb.jpg>] [12]
-<protocolCommunicationHandler.png, id=63, 2486.93823pt x 792.13588pt>
+ <./bb.jpg>] [13]
+<protocolCommunicationHandler.png, id=69, 2486.93823pt x 792.13588pt>
File: protocolCommunicationHandler.png Graphic file (type png)
<use protocolCommunicationHandler.png>
-<protocolCommunicationcControllerReceiver.png, id=64, 1808.16705pt x 766.62883p
+<protocolCommunicationcControllerReceiver.png, id=70, 1808.16705pt x 766.62883p
t>
File: protocolCommunicationcControllerReceiver.png Graphic file (type png)
<use protocolCommunicationcControllerReceiver.png>
-<protocolCommunicationcControllerCaller.png, id=65, 1808.16705pt x 766.62883pt>
+<protocolCommunicationcControllerCaller.png, id=71, 1808.16705pt x 766.62883pt>
File: protocolCommunicationcControllerCaller.png Graphic file (type png)
-<use protocolCommunicationcControllerCaller.png> [13
+<use protocolCommunicationcControllerCaller.png> [14
<./protocolCommunicationHandler.png (PNG copy)> <./protocolCommunicationcContr
ollerReceiver.png (PNG copy)> <./protocolCommunicationcControllerCaller.png (PN
-G copy)>] [14]
-<sshTunnel.png, id=74, 696.6025pt x 152.57pt>
+G copy)>] [15]
+<sshTunnel.png, id=79, 696.6025pt x 152.57pt>
File: sshTunnel.png Graphic file (type png)
- <use sshTunnel.png> [15
+ <use sshTunnel.png> [16
- <./sshTunnel.png (PNG copy)>] [16] [17]
-LaTeX Font Info: Try loading font information for OMS+cmr on input line 446.
+ <./sshTunnel.png (PNG copy)>] [17] [18]
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 458.
(/usr/share/texmf-texlive/tex/latex/base/omscmr.fd
File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <9> not available
-(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 446.
- [18] [19] [20]
-LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available
-(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 518.
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 458.
+ [19] [20] [21]
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 530.
-<resultsImage.png, id=94, 702.625pt x 431.6125pt>
+<resultsImage.png, id=99, 702.625pt x 431.6125pt>
File: resultsImage.png Graphic file (type png)
<use resultsImage.png>
-[21 <./resultsImage.png (PNG copy)>] [22] [23]
-LaTeX Font Info: Try loading font information for T1+cmtt on input line 548.
+[22 <./resultsImage.png (PNG copy)>] [23] [24]
+LaTeX Font Info: Try loading font information for T1+cmtt on input line 560.
(/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd
File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
-AED: lastpage setting LastPage [24] (./test.aux) )
+AED: lastpage setting LastPage [25] (./test.aux) )
Here is how much of TeX's memory you used:
- 4930 strings out of 495061
- 68324 string characters out of 1182621
+ 4933 strings out of 495061
+ 68430 string characters out of 1182621
255280 words of memory out of 3000000
- 8039 multiletter control sequences out of 15000+50000
- 18484 words of font info for 43 fonts, out of 3000000 for 9000
+ 8042 multiletter control sequences out of 15000+50000
+ 17720 words of font info for 42 fonts, out of 3000000 for 9000
28 hyphenation exceptions out of 8191
- 36i,11n,45p,752b,1285s stack positions out of 5000i,500n,10000p,200000b,50000s
+ 36i,11n,45p,731b,1679s stack positions out of 5000i,500n,10000p,200000b,50000s
</home/refik/.texmf-var/font
-s/pk/ljfour/jknappen/ec/ectt1200.600pk> </home/refik/.texmf-var/fonts/pk/ljfour
+s/pk/ljfour/jknappen/ec/ectt1095.600pk> </home/refik/.texmf-var/fonts/pk/ljfour
/jknappen/ec/ecrm0900.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/e
c/ecrm0600.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm0800.
-600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecti1200.600pk> </ho
+600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecti1095.600pk> </ho
me/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecsx1200.600pk> </home/refik/.t
exmf-var/fonts/pk/ljfour/jknappen/ec/ecrm1095.600pk> </home/refik/.texmf-var/fo
nts/pk/ljfour/jknappen/ec/ecsx1095.600pk> </home/refik/.texmf-var/fonts/pk/ljfo
ur/jknappen/ec/ecsx1440.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen
/ec/ecsl1095.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm120
0.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm1728.600pk></u
-sr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/te
+sr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/te
xmf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf-texlive
/fonts/type1/public/amsfonts/cm/cmsy9.pfb>
-Output written on test.pdf (24 pages, 942986 bytes).
+Output written on test.pdf (25 pages, 1037745 bytes).
PDF statistics:
- 669 PDF objects out of 1000 (max. 8388607)
+ 664 PDF objects out of 1000 (max. 8388607)
0 named destinations out of 1000 (max. 500000)
- 76 words of extra memory for PDF output out of 10000 (max. 10000000)
+ 81 words of extra memory for PDF output out of 10000 (max. 10000000)
diff --git a/notFinishedCode/Report/test.pdf b/notFinishedCode/Report/test.pdf
index b9b267b..a4d7f21 100644
--- a/notFinishedCode/Report/test.pdf
+++ b/notFinishedCode/Report/test.pdf
Binary files differ
diff --git a/notFinishedCode/Report/test.tex b/notFinishedCode/Report/test.tex
index cb5b00f..10453de 100644
--- a/notFinishedCode/Report/test.tex
+++ b/notFinishedCode/Report/test.tex
@@ -98,32 +98,44 @@ Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Mai
% first chapter
\section{Introduction and Motivation} % chapter 1
-\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
Before we had started working on our project, we had to analyze the overall network to come up with test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works.
\clearpage
\section{Requirements} % chapter 2
-At the start of the project the requirements were not completely known but as the time passed we redefined our goals.
-The first and the most important part at the start was to define the key goals of our team project. It was to build a
-test software system which could tell the operator user what is not properly working in our local University telecommunication network.
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software.
\begin{figure}[ht!]
\centering
\includegraphics[width=140mm]{BigPicture_new1.png}
\caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
\end{figure}
-Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done.
-After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used,
-were only the ones we could not develop ourself because of the time-span of our team project.
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our problem may be considered as the most important part.
+Controlling the software and hardware in a specific manner was one of the requirements in our team project. Moreover, we were required to draw a use case diagram and a simple test case diagram so that we could better understand all the problems we had to deal with but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
\par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages
Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
-The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
\par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site.
+
+\subsection{Hardware requirements}
+\par Beside the software requirements we had hardware requirements as well.
\newpage
\section{Database design}
At the start our database of choice was MySQL.
@@ -309,7 +321,7 @@ of receiving corresponding message. Otherwise it enters the exit state and then
\section{Security and safety of the system}
-\large Safety and security of the software plays a major role in our project.
+Safety and security of the software plays a major role in our project.
It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment.) Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad.
@@ -399,14 +411,14 @@ openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
\end{lstlisting}
-\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files (\emph{server.crt}, \emph{server.csr}, \emph{server.key} and \emph{server.key.secure}). Now we need to enable the SSL engine on the Apache web server.
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
\begin{lstlisting}
refik@ubuntu:/etc/apache2$ sudo mkdir ssl
cp server.key /etc/apache2/ssl
cp server.crt /etc/apache2/ssl
\end{lstlisting}
-\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
\begin{lstlisting}
refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
Enabling module ssl.
@@ -486,7 +498,7 @@ refik@ubuntu:/etc/apache2/sites-available$
\newpage
\section{Web page}
-\large One of the requests of our team project was to build a test system that could be started from the web site.
+One of the requests of our team project was to build a test system that could be started from the web site.
Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
diff --git a/notFinishedCode/Report/test.tex.backup b/notFinishedCode/Report/test.tex.backup
index 3edb31b..86e04bb 100644
--- a/notFinishedCode/Report/test.tex.backup
+++ b/notFinishedCode/Report/test.tex.backup
@@ -98,14 +98,14 @@ Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Mai
% first chapter
\section{Introduction and Motivation} % chapter 1
-\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for landline calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
+\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
Before we had started working on our project, we had to analyze the overall network to come up with test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works.
\clearpage
\section{Requirements} % chapter 2
-At the start of the project the requirements were not completely known but as the time passed we redefined our goals.
-The first and the most important part at the start was to define the key goals of our team project. It was to build a
-test software system which could tell the operator user what is not preoperly working in our local University telecommunication network.
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. It was to build a
+test software system which could tell the operator user what is not properly working in our local University telecommunication network.
Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software.
\begin{figure}[ht!]
\centering
@@ -114,14 +114,27 @@ Konrad and Dennis suggested us to look at figure 1 and depending on it to build
\end{figure}
Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done.
After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used,
-were only the ones we could not develop ourself because of the time-span of our team project.
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+\par Assuming that the requirement was to draw a use case diagram and a simple test case diagram so that we could better identify all the problems we had to deal but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
\par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages
Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
-Our programming language of choice is multiplatform, therefore our test software would be easy portable to other operating systems.
+Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
-The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests.
-\par
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
+\par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
+We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site.
+
+\subsection{Hardware requirements}
+\par Beside the software requirements we had hardware requirements as well.
\newpage
\section{Database design}
At the start our database of choice was MySQL.
@@ -136,7 +149,7 @@ When the
\section{Software design} % section 2.1
\subsection{Database access} % subsection 2.1.1
Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
-The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete backtrace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
\begin{figure}[ht!]
\centering
\includegraphics[width=100mm]{dbClass.png}
@@ -145,7 +158,7 @@ The database class has two working modes, a normal working mode and a debugging
The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
\subsection{Controlling the cell phones}
Our first version of the developed program code for controlling the cell phones used predefined timed values
-to send commands instead of using a state controlled approach to confirm that every command was successfuly received and executed by the cell phone.
+to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone.
It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
\begin{figure}[ht!]
@@ -153,7 +166,7 @@ our first approach was inferior and slower. The state controlled method connecte
\includegraphics[width=80mm]{serialPort.png}
\caption[]{GSM class diagram for controlling the cell phones}
\end{figure}
-One can easyly apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state.) We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
\subsection{Client and Server class}
@@ -210,7 +223,7 @@ Source Community.
\begin{figure}[ht!]
\centering
\includegraphics[width=130mm]{bb.jpg}
- \caption[]{BeagleBoard, a linux-on-chip board where our controller software runs the GSM device }
+ \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device }
\end{figure}
It has been equipped with a minimum set of features to allow the
user to experience the power of the OMAP3530 and is not intended as a full development
@@ -234,14 +247,14 @@ Due to the fact that we had used 5 cell phones on a single computer, the best so
Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
-Some of the cables had the cability to charge the Siemens S55 phones.
+Some of the cables had the capability to charge the Siemens S55 phones.
Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
\subsection{Server}
-We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Appache web server and MySQL.
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL.
\clearpage
\section{Communication protocol}
-\subsection{Hanlder side}
+\subsection{Handler side}
\begin{figure}[ht!]
\centering
\includegraphics[width=130mm]{protocolCommunicationHandler.png}
@@ -313,7 +326,7 @@ It is of vital importance that only as few as possible people have access to our
All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad.
We decided to use asymmetric key cryptography, where each side has two keys (private and public.) In the next sections we will explain in more details how we applied the methods.
\subsection{Encryption of the communication channels}
-At first we thoought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure 1.)
We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
Denis and Konrad suggested using the SSH Tunneling method.
@@ -324,8 +337,8 @@ Denis and Konrad suggested using the SSH Tunneling method.
\caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
\end{figure}
-Using the SSH Tunnel port forwading method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running.)
-The SSH Tunnel port forwarind method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password everytime we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running.)
+The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
This can be performed by executing the following commands in the terminal shell.
One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
@@ -336,7 +349,7 @@ jsmith@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
-Enter same passphrase again: [Pess enter key]
+Enter same passphrase again: [Press enter key]
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
@@ -424,7 +437,7 @@ refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
\end{lstlisting}
-\par Only the begining of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl} (i.e. we had to redefine the location of our SSL directory.)
\begin{lstlisting}
<IfModule mod_ssl.c>
@@ -542,11 +555,11 @@ If one of the fields is red it means the subsystem is not online or cannot be se
%bibliography start
\begin{thebibliography}{9}
-\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
-\bibitem{python} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at
-\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
+\url{http://www.python.org/}.
\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
diff --git a/notFinishedCode/Report/test.tex.bak b/notFinishedCode/Report/test.tex.bak
new file mode 100644
index 0000000..b3ebf87
--- /dev/null
+++ b/notFinishedCode/Report/test.tex.bak
@@ -0,0 +1,581 @@
+\documentclass[a4paper, titlepage, oneside, headsepline, footsepline]{scrartcl}
+%PACKAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[english]{babel} %what language are we using
+\usepackage[latin2]{inputenc} %what alphabet
+
+\usepackage[tt]{titlepic} %used for adding the title image
+\usepackage{graphicx} %used for adding images
+\usepackage{url} %used for the url in bibliography
+\usepackage{lastpage} %give me the total number of pages, used in footer: \pageref{LastPage}
+
+\usepackage[T1]{fontenc} %used for fonts
+\usepackage{scrpage2} %used for making headers, footers and correct margins
+
+\usepackage{color} %used for highlighting source code
+\usepackage{listings} %used to make a box with source code
+\usepackage{fancyvrb}
+\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE LOOK OF THE PAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{scrheadings}
+
+\renewenvironment{abstract}
+ {\begin{center}\large\textbf{}\noindent\end{center}}{\vspace{2\baselineskip}}
+
+% Disable single lines at the start of a paragraph (Schusterjungen)
+\clubpenalty = 10000
+% Disable single lines at the end of a paragraph (Hurenkinder)
+\widowpenalty = 10000 \displaywidowpenalty = 10000
+
+\setlength{\parskip}{0.01\baselineskip}
+\textheight = 620pt
+
+\ohead{\titleOfProject} %make the header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE THE STUFF FOR CODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{ %
+%language=Python, % choose the language of the code
+columns=fullflexible,
+keywordstyle=\color[rgb]{0.608,0.561,0.008},
+commentstyle=\color[rgb]{0.25,0.5,0.35},
+stringstyle=\color[rgb]{0.25,0.35,0.85},
+basicstyle=\footnotesize,%\scriptsize % the size of the fonts that are used for the code
+%numbers=left, % where to put the line-numbers
+numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
+stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
+numbersep=8pt, % how far the line-numbers are from the code
+backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
+showspaces=false, % show spaces adding particular underscores
+showstringspaces=false, % underline spaces within strings
+showtabs=false, % show tabs within strings adding particular underscores
+frame=single, % adds a frame around the code
+tabsize=2, % sets default tabsize to 2 spaces
+captionpos=b, % sets the caption-position to bottom
+breaklines=true, % sets automatic line breaking
+breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+escapeinside={\%}{)} % if you want to add a comment within your code
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\titleOfProject}{Software for self-testing of the Telecommunication network of University of Freiburg}
+
+
+
+%begin of the document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+
+
+%make the title page
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\titlepic{\includegraphics[width=70mm]{uniLogo1.jpg}}
+\title{Team project \\ ``\titleOfProject''} % type title between braces
+\date{\today} % type date between braces
+\author{Tri Atmoko\\ Refik Had\v{z}iali\'{c} } % type author(s) between braces
+\department{\vspace{1\baselineskip} \large Albert-Ludwigs-Universit\"{a}t Freiburg \\
+Lehrstuhl f\"{u}r Komunikationsysteme\\
+Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Maier \\ Dennis Wehrle \\ \vspace{1\baselineskip} Sommersemester 2011}
+
+\maketitle
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%add the table of contents
+\tableofcontents
+
+%new page to start with
+\clearpage
+
+
+
+
+% first chapter
+\section{Introduction and Motivation} % chapter 1
+\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for landline calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
+Before we had started working on our project, we had to analyze the overall network to come up with test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
+Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works.
+\clearpage
+\section{Requirements} % chapter 2
+At the start of the project the requirements were not completely known but as the time passed we redefined our goals.
+The first and the most important part at the start was to define the key goals of our team project. It was to build a
+test software system which could tell the operator user what is not preoperly working in our local University telecommunication network.
+Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{BigPicture_new1.png}
+ \caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
+\end{figure}
+Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done.
+After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourself because of the time-span of our team project.
+\par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages
+Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
+therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
+Our programming language of choice is multiplatform, therefore our test software would be easy portable to other operating systems.
+\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
+The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests.
+\par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging we had to use a database system.
+We decided to use MySQL since it is open source and well supported.
+\newpage
+\section{Database design}
+At the start our database of choice was MySQL.
+When the
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=130mm]{DBRelationship.png}
+ \caption[]{Database relationship diagram}
+\end{figure}
+
+\newpage
+\section{Software design} % section 2.1
+\subsection{Database access} % subsection 2.1.1
+Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete backtrace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{dbClass.png}
+ \caption[]{Class diagram for the dbClass}
+\end{figure}
+The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
+\subsection{Controlling the cell phones}
+Our first version of the developed program code for controlling the cell phones used predefined timed values
+to send commands instead of using a state controlled approach to confirm that every command was successfuly received and executed by the cell phone.
+It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
+our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=80mm]{serialPort.png}
+ \caption[]{GSM class diagram for controlling the cell phones}
+\end{figure}
+One can easyly apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state.) We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
+be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
+\subsection{Client and Server class}
+Our socket communication code is based on the example given in the Python socket manual \cite{socket}.
+We extended it into two classes, a client and a server class. We had used the TCP protocol to base our two classes on\footnote{TCP is reliable compared to UDP (i.e. transmitted packets get also delivered),
+packets are ordered when received and data are received in a stream (i.e. multiple packets can be read at once.)}.
+The Server class can be seen in the following figure. The server class is implemented to accept only local connections\footnote{More details are given in the section 7.1}.
+First we determine our IP address and then create the socket to listen only for the same IP address (with a different IP address than the selected one a connection cannot be even established.)
+One has to define the port on which the server object should listen.
+When receiving data one can easily define the timeout to be raised if data are not received in the timeout range or set it to \emph{0} to infinitely wait for the buffer to be filled with received data. While testing the server class we had the problem to listen on the same port if the application was forcibly\footnote{Manually closed using CTRL+C and run again.} restarted in less than 60 seconds. We got the error message: \emph{"Address already in use"}.
+This is not known as error behavior but rather an option to help the server to catch lost live packets (i.e. packets that are still in the network looking for it is goal destination.)
+We solved the problem by changing the socket options with the \emph{SO\_REUSEADDR} parameter. This enabled us to get around the error when we tried to restart our server application.
+Before solving the problem without using the socket parameter, we had another solution to get around this problem by killing the application running the port, this old method is obsolete now.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[scale=0.8]{serverClass.png}
+ \caption[]{Server class, used by the server application}
+\end{figure}
+In the process of testing the client class we did not have any major problems. The only major flow we had to debug was when one of the sides disconnects that we get out of the waiting loop if the timeout variable was set to \emph{0} (i.e. infinite waiting loop.)
+The client class can be seen in the following figure. To initialize the client object one needs to define the IP address and the port of the server application listening on it.
+\begin{figure}[hb!]
+ \centering
+ \includegraphics[scale=0.5]{ClientClass.png}
+ \caption[]{Client class, used by the client application}
+\end{figure}
+Once an instance of it is created and loaded with the IP address and the port, one needs to call the \emph{connect()} method.
+The method will produce an integer based on its connection state. Output information and the programming code can be found on our project wiki page \cite{wiki}.
+\subsection{Ping class}
+Before making any test and establishing a connection we were required to ensure that the server is online. The best way to assess the liveness property was to ping the server computer running the required service. Once the class is properly defined, we could easily set the number of ping tries.
+A ping timeout response was set up to 2 seconds. For more details and insights, one can read more about it on our wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=70mm]{ping.png}
+ \caption[]{Ping class, used by test software}
+\end{figure}
+\subsection{Data logging}
+If bugs appear it is important to reconstruct the case. One of the best ways to reconstruct the case was to log every single step part of code gets executed.
+We had used the logging class to follow our handler code run on the BeagleBoard. In case there is an error we could look inside of the log files and track the error.
+How the class works and what kind of outputs it produces can be found on our project wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{logging.png}
+ \caption[]{Logging class}
+\end{figure}
+\subsection{SSH Class}
+\clearpage
+\section{Hardware design}
+In our team project we had the option to choose all the required hardware ourself beside the two BeagleBoards, which we were supplied by Konrad and Dennis.
+Since one of the project goals was to reduce the costs as much as it was possible, we had tried to use some of the leftovers found in our lab.
+
+\subsection{BeagleBoard}
+``The BeagleBoard is an OMAP3530 platform designed specifically to address the Open
+Source Community.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=130mm]{bb.jpg}
+ \caption[]{BeagleBoard, a linux-on-chip board where our controller software runs the GSM device }
+\end{figure}
+It has been equipped with a minimum set of features to allow the
+user to experience the power of the OMAP3530 and is not intended as a full development
+platform as many of the features and interfaces supplied by the OMAP3530 are not
+accessible from the BeagleBoard'' \cite{beagleDataSheet}.
+We run on it a special precompiled version of Ubuntu for the ARM processor type. The Linux system boots up from an SD Card.
+The board has an USB hub and network port attached to it. In our project it is connected to our
+internal university LAN network and to a cell phone. We positioned the two BeagleBoards in rooms where
+we had LAN access and GSM signal coverage of our two local base stations.
+
+\subsection{Cell phones}
+Our first attempt was to control a Nokia cell phone 3310 with the supplied USB connection cable.
+The protocols used by old versions of Nokia cell phones, as the 3310, use the F-Bus protocol. It was not easy to work with.
+After performing various experiments we succeeded to send and to read SMS messages. Later on we found out that it was not possible to
+send commands for receiving and making the calls. In the meantime we found two Siemens phones, one M45 and S55.
+The first one, Siemens M45, had a cable supplied with it and it was not difficult to control it with the standard set of AT modem commands.
+At the start we did not have a cable supplied for the Siemens S55 phone. We controlled it over the Bluetooth port.
+
+\subsection{Cables for the cell phones}
+Due to the fact that we had used 5 cell phones on a single computer, the best solution was to order 5 USB cables.
+Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
+Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
+The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
+Some of the cables had the cability to charge the Siemens S55 phones.
+Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
+\subsection{Server}
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Appache web server and MySQL.
+\clearpage
+
+\section{Communication protocol}
+\subsection{Hanlder side}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=130mm]{protocolCommunicationHandler.png}
+ \caption[]{Flowchart of the protocol, on the handler side}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=130mm]{protocolCommunicationcControllerReceiver.png}
+ \caption[]{Flowchart of the protocol, on the controller side for the caller}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=130mm]{protocolCommunicationcControllerCaller.png}
+ \caption[]{Flowchart of the protocol, on the controller side for the receiver}
+\end{figure}
+
+\subsection{Verification of the protocol}
+``SPIN is a model checker - a software tool for verifying models of physical
+systems, in particular, computerized systems. First, a model is written that
+describes the behavior of the system; then, correctness properties that express
+requirements on the system's behavior are specified; finally, the model
+checker is run to check if the correctness properties hold for the model, and,
+if not, to provide a counterexample: a computation that does not satisfy a
+correctness property.'' \cite{spin}. We modeled our simple protocol in SPIN using
+the programming language PROMELA \cite{spin}. Since PROMELA is similar to C it was
+not possible to ensure 100\% matching with Python but we had made the assumptions of it.
+We modeled both sides, server and client side. As well as the server side being a caller
+and a callee. It was important to find out if our protocol is deadlock or delayed state free.
+For more details our model can be found on our wiki project page with the PROMELA source code \cite{wiki}.
+We had built in a 50\% random probability that the call test will not be successful, to make the model even more
+realistic. Our protocol idea was deadlock free and the verification results prove it:
+\begin{lstlisting}
+(Spin Version 6.1.0 -- 2 May 2011)
+ + Partial Order Reduction
+Full statespace search for:
+ never claim - (none specified)
+ assertion violations +
+ cycle checks - (disabled by -DSAFETY)
+ invalid end states +
+State-vector 44 byte, depth reached 65, errors: 0
+ 40 states, stored
+ 3 states, matched
+ 43 transitions (= stored+matched)
+ 90 atomic steps
+hash conflicts: 0 (resolved)
+ 2.195 memory usage (Mbyte)
+unreached in proctype Server1
+ (0 of 36 states)
+unreached in proctype Server2
+ (0 of 36 states)
+unreached in proctype Client
+ (0 of 67 states)
+pan: elapsed time 0 seconds
+\end{lstlisting}
+After we had modeled the basic idea we had written the code that implements our idea. The Python code
+resembles some kind of a state machine which remembers the last state and what the next state should be in case
+of receiving corresponding message. Otherwise it enters the exit state and then the start state.
+
+\clearpage
+\newpage
+
+
+\section{Security and safety of the system}
+\large Safety and security of the software plays a major role in our project.
+It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
+(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment.) Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
+All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad.
+We decided to use asymmetric key cryptography, where each side has two keys (private and public.) In the next sections we will explain in more details how we applied the methods.
+\subsection{Encryption of the communication channels}
+At first we thoought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure 1.)
+We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
+Denis and Konrad suggested using the SSH Tunneling method.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{sshTunnel.png}
+ \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
+\end{figure}
+
+Using the SSH Tunnel port forwading method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running.)
+The SSH Tunnel port forwarind method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password everytime we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+This can be performed by executing the following commands in the terminal shell.
+One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
+
+\begin{lstlisting}
+jsmith@local-host$ [Note: You are on local-host here]
+
+jsmith@local-host$ ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]
+Enter passphrase (empty for no passphrase): [Press enter key]
+Enter same passphrase again: [Pess enter key]
+Your identification has been saved in /home/jsmith/.ssh/id_rsa.
+Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
+The key fingerprint is:
+33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host
+\end{lstlisting}
+
+Then one needs to copy the public key to the remote machine (BeagleBoard) using ssh-copy-id:
+
+\begin{lstlisting}
+jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
+jsmith@remote-host's password:
+Now try logging into the machine, with "ssh 'remote-host'", and check in:
+
+.ssh/authorized_keys
+
+to make sure we haven't added extra keys that you weren't expecting.
+\end{lstlisting}
+
+After we have created the public and private keys, and coppied the public key on the machine to which we want to connect, we can test if we can make an SSH connection to the remote machine:
+
+\begin{lstlisting}
+jsmith@local-host$ ssh remote-host
+Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
+[Note: SSH did not ask for password.]
+
+jsmith@remote-host$ [Note: You are on remote-host here]
+\end{lstlisting}
+The test was successful. We tested it with our SSH Tunnel port forwarding class and it worked perfectly.
+\subsection{Security on the web site}
+Securing the communication channels without making certain the web site is safe would be worthless.
+We decided to use the \emph{https} protocol instead of the \emph{http} since a person in the middle
+could sniff our data (e.g. a person is connected with his/her smart-phone over an unprotected wireless network) \cite{https}.
+At the same time the web site should be accessible only by the authorized personel. Our first approach to this
+problem was to build an PHP page with \emph{MD5} hashed passwords, however we got a suggestion by Konrad and Denis to
+use a safer encryption method implemented in the Apache web server software, \emph{.htaccess}. By using
+these two techniques we protected the web site of some vulnerabilities known to us. If the web site
+will be only accessed from our local university network, we can additionally add an IP filter mask as well.
+In the following paragraph we will explain our procedure how to generate the keys and to enable the https protocol.
+\par First we want to generate a server key by typing the following command:
+\begin{lstlisting}
+openssl genrsa -des3 -out server.key 4096
+\end{lstlisting}
+\par This will generate a 4096 bit long private server key, one is asked to enter two times a password for the \emph{server.key}.
+Using the generated private server key, we will create a certificate signing request, \emph{server.csr}. We were prompted with a series of questions
+like country, state, organization name and etc which we had to enter to resume.
+\begin{lstlisting}
+openssl req -new -key server.key -out server.csr
+\end{lstlisting}
+\par In the next step we had to sign the certificate signing request and enter the amount of days for how long it should be valid.
+In our case we entered the duration of one year, one can make it for longer periods as well (i.e. the amount of 365 has to be changed.)
+\begin{lstlisting}
+openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+\end{lstlisting}
+\par We were asked to enter the password again for \emph{server.key}. After we have completed this step we had to make
+a version of the \emph{server.key} which did not require a password, \emph{server.key.insecure} and we will rename the files appropriately.
+\begin{lstlisting}
+openssl rsa -in server.key -out server.key.insecure
+mv server.key server.key.secure
+mv server.key.insecure server.key
+\end{lstlisting}
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files (\emph{server.crt}, \emph{server.csr}, \emph{server.key} and \emph{server.key.secure}). Now we need to enable the SSL engine on the Apache web server.
+We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2$ sudo mkdir ssl
+cp server.key /etc/apache2/ssl
+cp server.crt /etc/apache2/ssl
+\end{lstlisting}
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
+Enabling module ssl.
+See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
+Run '/etc/init.d/apache2 restart' to activate new configuration!
+\end{lstlisting}
+\par In the next procedure we had to establish a symlink from the 'available' default-ssl file to the 'enabled' file \cite{https}. Then we created a folder where our secured PHP files will be located (e.g. https://some-domain-name.com/test-software).
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
+refik@ubuntu:/etc/apache2/ssl$ cd /var/
+refik@ubuntu:/var$ sudo mkdir www-ssl
+\end{lstlisting}
+\par We had backed up our old configuration files for the virtual hosts, for the case that the damage the Apache configuration files. Then we edited the \emph{default-ssl} file.
+\begin{lstlisting}
+refik@ubuntu:/var$ cd /etc/apache2/sites-available
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par Only the begining of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl} (i.e. we had to redefine the location of our SSL directory.)
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+<VirtualHost _default_:443>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /var/www-ssl
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+\end{lstlisting}
+\par One should keep in mind that the port 443 should be free for Apache to use it. In the proceeding step we had to ensure that Apache listens on the given port for a \emph{https} connection.
+One could test that by going into the \emph{/etc/apache2/ports.conf}.
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+ # If you add NameVirtualHost *:443 here, you will also have to change
+ # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
+ # to <VirtualHost *:443>
+ # Server Name Indication for SSL named virtual hosts is currently not
+ # supported by MSIE on Windows XP.
+ Listen 443
+</IfModule>
+\end{lstlisting}
+\par In our case it was set up correctly, since the command: \emph{Listen 443} was present.
+In our last configuration step we had to edit \emph{default-ssl} file to define the correct locations of our keys and to ensure the SSL engine was turned on.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\newpage
+\par The following part of the file had to be found and modified according to our locations:
+\begin{lstlisting}
+SSLEngine on
+
+ # A self-signed (snakeoil) certificate can be created by installing
+ # the ssl-cert package. See
+ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
+ # If both key and certificate are stored in the same file, only the
+ # SSLCertificateFile directive is needed.
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ # Server Certificate Chain:
+ # Point SSLCertificateChainFile at a file containing the
+\end{lstlisting}
+\par Finally we had configured our server and can proceed with the restart of the apache web server. We created a test web site \emph{/var/www-ssl/index.php} and navigated our browser to \emph{https://localhost}. The test was successful!
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
+ * Restarting web server apache2 [Sat Oct 08 21:52:51 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
+ ... waiting [Sat Oct 08 21:52:52 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence [ OK ]
+refik@ubuntu:/etc/apache2/sites-available$
+\end{lstlisting}
+
+
+
+
+
+\newpage
+\section{Web page}
+\large One of the requests of our team project was to build a test system that could be started from the web site.
+Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
+The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
+The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
+a test user needs first to enter his username and password to acccess the web site. Then a test user can manually select what type of tests he wants to perform or he can select already defined test,
+like the simple, smart or full test. (Describe here these three type of tests.)
+Data about the performing tests are inserted into the database only in the case if the mutex lock for the web site can be obtained\footnote{The mutex lock will be explained in the next subsection.}.
+This way we can avoid inserting data about the test in case there is already a test user on the website performing some tests on the system.
+\subsection{Communication between the web page and the test software}
+Our first idea was that the PHP file starts the test software.
+However, parts of our test software open new terminal windows and
+since PHP has restrictions for starting GUI applications our approach was condemned for a failure at the start.
+We had to deal with this problem and our solution to it was to write a little Python script that will run in background and start our
+test software when required. Once a person starts the test over the web site, it automatically connects to the Python script over an TCP/IP socket.
+Before being able to start the test software one needs first to obtain the mutex lock on the web site and to check if there is a mutex lock for the test software running.
+Using this approach we can ensure that only one user at the time can be on the web site and run only one instance of the test software.
+In the next step we send the Python script a message to start the test software. The test software obtains a mutex lock as well.
+When the test software is started the web page checks if a software lock is obtained.
+Once it is obtained we can proceed with creating a new socket connection between the web site and the test software.
+Our TCP/IP communication between the web site and the test software is not encrypted since both the web page and the test software run on the same server computer.
+The mutex locks are freed after the tests are performed. Our test software has a timeout timer in case that the web site hangs or somehow the socket connection breaks
+where it automatically shuts down.
+\subsection{Results on the web page}
+All the performed test results are displayed on the web site. The results are displayed in real time after each selected test case is performed.
+After all the test cases have been performed a topological picture is generated which represents the current state of the system, this can bee seen in the following figure.
+Afterwards, when the result picture is generated, the test user can easily see what is wrong in the system. Various icons represent different subsystems.
+Reading the test results is simple as looking at the icons and identifying if they have: a green plus signs (i.e. working properly), a red minus sign (i.e. not working properly) and a yellow exclamation mark (i.e. it was not tested).
+
+\begin{itemize}
+\item Triangles represent BTS stations
+\item Cellphones represent the external networks (E-Plus, Vodaphone, T-Mobile and O2)
+\item Telephone represents the landline and a telephone with a mortarboard the University telephone network
+\item Servers represent the OpenBSC and LsfKs-Asterisk
+\item Two monitors represent the SIP system
+\end{itemize}
+
+\par The inference mechanism works as following: if a test case works, we can conclude that the subsystems connected inbetween the two ends are working properly as well.
+We use the pChart library\footnote{It is under the GNU GPLv3 license and our project is nonprofit!} to generate the topological picture of our telecommunication system \cite{pChart}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{resultsImage.png}
+ \caption[]{Result image showing working, defected and not tested subsystems}
+\end{figure}
+\par On the right side of the result picture the test user can immediatelly identify the network operability in percentage\footnote{The test user has to take into account that this percantage is only valid if a full test is performed.}. Bellow the network operability statistics are the ping results statistics located.
+If one of the fields is red it means the subsystem is not online or cannot be seen by our server computer where the test software is located.
+\newpage
+\section{How to use and start the system}
+\subsection{Required libraries}
+\subsection{Configuring hardware}
+\newpage
+\section{Conclusion}
+\newpage
+
+
+
+%bibliography start
+\begin{thebibliography}{9}
+
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{python} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
+\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
+
+\bibitem{wiki} \emph{[2011] GSM Selftest - Wiki - Lehrstuhl f\"{u}r Kommunikationssysteme}, accessed on 20.09.2011, available at \\
+\url{http://lab.ks.uni-freiburg.de/projects/gsm-selftest/wiki}.
+
+\bibitem{socket} \emph{17.2. socket - Low-level networking interface}, accessed on 20.06.2011, available at
+\url{http://docs.python.org/library/socket.html}.
+
+\bibitem{spin} M. Ben-Ari \emph{Principles of the Spin Model Checker},
+Springer Verlag, Weizmann Institute of Science, Israel, ISBN: 978-1-84628-769-5, 2008.
+
+\bibitem{sshTunnel} R. Natarajan, \emph{3 Steps to perform SSH login without password using ssh-keygen \& ssh-copy-id}, accessed on 18.08.2011, available at
+\url{http://goo.gl/fX68N}.
+
+\bibitem{https} P. Bramscher, \emph{Creating Certificate Authorities and self-signed SSL certificates}, accessed on 05.09.2011, available at
+\url{http://www.tc.umn.edu/~brams006/selfsign.html}.
+
+\bibitem{pChart} \emph{pChart}, accessed on 15.08.2011, available at
+\url{http://www.pchart.net/}.
+
+\bibitem{beagleDataSheet} \emph{BeagleBoard System Reference Manual}, accessed on 20.06.2011, available at
+\url{http://beagleboard.org/static/BBSRM_latest.pdf}.
+
+%bibliography end
+\end{thebibliography}
+
+%end of the document
+\end{document} \ No newline at end of file
diff --git a/notFinishedCode/Report/test.tex~ b/notFinishedCode/Report/test.tex~
index 0015952..40d1033 100644
--- a/notFinishedCode/Report/test.tex~
+++ b/notFinishedCode/Report/test.tex~
@@ -98,32 +98,44 @@ Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Mai
% first chapter
\section{Introduction and Motivation} % chapter 1
-\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings.
Before we had started working on our project, we had to analyze the overall network to come up with test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works.
\clearpage
\section{Requirements} % chapter 2
-At the start of the project the requirements were not completely known but as the time passed we redefined our goals.
-The first and the most important part at the start was to define the key goals of our team project. It was to build a
-test software system which could tell the operator user what is not properly working in our local University telecommunication network.
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software.
\begin{figure}[ht!]
\centering
\includegraphics[width=140mm]{BigPicture_new1.png}
\caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
\end{figure}
-Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done.
-After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used,
-were only the ones we could not develop ourself because of the time-span of our team project.
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our problem may be considered as the most important part.
+Controlling the software and hardware without any logical requirement was to draw a use case diagram and a simple test case diagram so that we could better identify all the problems we had to deal but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
\par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages
Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
-The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
\par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site.
+
+\subsection{Hardware requirements}
+\par Beside the software requirements we had hardware requirements as well.
\newpage
\section{Database design}
At the start our database of choice was MySQL.
@@ -309,7 +321,7 @@ of receiving corresponding message. Otherwise it enters the exit state and then
\section{Security and safety of the system}
-\large Safety and security of the software plays a major role in our project.
+Safety and security of the software plays a major role in our project.
It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment.) Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad.
@@ -399,14 +411,14 @@ openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
\end{lstlisting}
-\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files (\emph{server.crt}, \emph{server.csr}, \emph{server.key} and \emph{server.key.secure}). Now we need to enable the SSL engine on the Apache web server.
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
\begin{lstlisting}
refik@ubuntu:/etc/apache2$ sudo mkdir ssl
cp server.key /etc/apache2/ssl
cp server.crt /etc/apache2/ssl
\end{lstlisting}
-\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
\begin{lstlisting}
refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
Enabling module ssl.
@@ -486,7 +498,7 @@ refik@ubuntu:/etc/apache2/sites-available$
\newpage
\section{Web page}
-\large One of the requests of our team project was to build a test system that could be started from the web site.
+One of the requests of our team project was to build a test system that could be started from the web site.
Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
@@ -544,7 +556,7 @@ If one of the fields is red it means the subsystem is not online or cannot be se
%bibliography start
\begin{thebibliography}{9}
-\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
diff --git a/notFinishedCode/Report/test.toc b/notFinishedCode/Report/test.toc
index 2afe324..af429f9 100644
--- a/notFinishedCode/Report/test.toc
+++ b/notFinishedCode/Report/test.toc
@@ -1,29 +1,32 @@
\select@language {english}
\contentsline {section}{\numberline {1}Introduction and Motivation}{3}
\contentsline {section}{\numberline {2}Requirements}{4}
-\contentsline {section}{\numberline {3}Database design}{6}
-\contentsline {section}{\numberline {4}Software design}{7}
-\contentsline {subsection}{\numberline {4.1}Database access}{7}
-\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{7}
-\contentsline {subsection}{\numberline {4.3}Client and Server class}{8}
+\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{4}
+\contentsline {subsection}{\numberline {2.2}Software requirements}{5}
+\contentsline {subsection}{\numberline {2.3}Hardware requirements}{6}
+\contentsline {section}{\numberline {3}Database design}{7}
+\contentsline {section}{\numberline {4}Software design}{8}
+\contentsline {subsection}{\numberline {4.1}Database access}{8}
+\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{8}
+\contentsline {subsection}{\numberline {4.3}Client and Server class}{9}
\contentsline {subsection}{\numberline {4.4}Ping class}{10}
-\contentsline {subsection}{\numberline {4.5}Data logging}{10}
-\contentsline {subsection}{\numberline {4.6}SSH Class}{10}
-\contentsline {section}{\numberline {5}Hardware design}{11}
-\contentsline {subsection}{\numberline {5.1}BeagleBoard}{11}
-\contentsline {subsection}{\numberline {5.2}Cell phones}{12}
-\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{12}
-\contentsline {subsection}{\numberline {5.4}Server}{12}
-\contentsline {section}{\numberline {6}Communication protocol}{13}
-\contentsline {subsection}{\numberline {6.1}Handler side}{13}
-\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{14}
-\contentsline {section}{\numberline {7}Security and safety of the system}{15}
-\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{15}
-\contentsline {subsection}{\numberline {7.2}Security on the web site}{16}
-\contentsline {section}{\numberline {8}Web page}{20}
-\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{20}
-\contentsline {subsection}{\numberline {8.2}Results on the web page}{20}
-\contentsline {section}{\numberline {9}How to use and start the system}{22}
-\contentsline {subsection}{\numberline {9.1}Required libraries}{22}
-\contentsline {subsection}{\numberline {9.2}Configuring hardware}{22}
-\contentsline {section}{\numberline {10}Conclusion}{23}
+\contentsline {subsection}{\numberline {4.5}Data logging}{11}
+\contentsline {subsection}{\numberline {4.6}SSH Class}{11}
+\contentsline {section}{\numberline {5}Hardware design}{12}
+\contentsline {subsection}{\numberline {5.1}BeagleBoard}{12}
+\contentsline {subsection}{\numberline {5.2}Cell phones}{13}
+\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{13}
+\contentsline {subsection}{\numberline {5.4}Server}{13}
+\contentsline {section}{\numberline {6}Communication protocol}{14}
+\contentsline {subsection}{\numberline {6.1}Handler side}{14}
+\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{15}
+\contentsline {section}{\numberline {7}Security and safety of the system}{16}
+\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{16}
+\contentsline {subsection}{\numberline {7.2}Security on the web site}{17}
+\contentsline {section}{\numberline {8}Web page}{21}
+\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{21}
+\contentsline {subsection}{\numberline {8.2}Results on the web page}{21}
+\contentsline {section}{\numberline {9}How to use and start the system}{23}
+\contentsline {subsection}{\numberline {9.1}Required libraries}{23}
+\contentsline {subsection}{\numberline {9.2}Configuring hardware}{23}
+\contentsline {section}{\numberline {10}Conclusion}{24}