Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

winauto
winauto
winauto
github

Key Features

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Django

To startup the project I used the popular python framework Django. Django uses the Model-View-Controller architecture to structure a typical web application.

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Fabric / Paramiko

To connect and run shell commands remotely over ssh, I used the Python framework Paramiko and the wrapper Fabric.

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

AJAX

I used AJAX to communicate between server and client and update the page in real time. A message design pattern with a router was used here to dynamically find the according Python file on the server responsible for handling the command (like fetching IP addresses again) that would be inside the JSON message and sending back the results to the corresponding JavaScript file that displays the results

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Bootstrap

Bootstrap was used to make the site look pretty without mutch setup required

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Setup Pages

Each of the five labs uses a different network configuration and different config files are required. To setup the monitor to match the Lab, setup pages were created. Here you can specify which configs should be shown when clicking on a node ect.

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Unit Testing and GitLab CD/CI pipeline

The App was designed from the get go to rely on interfaces and the Dependency Injection design pattern to make mocking and unit testing easier. On top of a small test suite, I wrote a GitLab CD/CI pipeline with a runner that would run my tests when changes get pushed.

Monitor for Internet Lab @Uni Tübingen - Bachelor Thesis

Documentary

Using Sphinx I created a web documentary simply by commenting my code.

Goals and Motivation

Finish my bachelor, help tutors out, learn Python and Django.

#Python

#Django

#Bootstrap

#Paramiko

#Fabric

#AJAX

#js

#pytest

#GitLab-CD/CI

#Sphinx