My Final Project
Find free spaces in university labs:
- find out if a machine is free, occupied, or turned off
- find out how long any occupied machine has been logged in for (in case someone forgot to log off)
- find your friends! (so you don't need to study alone... or so you can study alone)
Killed by covid-19. Because now nobody is on-site.
Demo Link
http://mapp.betterinformatics.com/demo
Link to Code
compsoc-edinburgh / mapp
🗺️📡💃 The Marauders App helps you find rooms with free machines in university labs and helps you find your friends. It does this by SSHing into every machine and dialling home.
The Marauder's App
This is now a monorepo containing:
- mapp-worker to send information to the backend
- website to display machine information
How I built it (what's the stack? did I run into issues or discover something new along the way?)
Frontend uses:
- Bootstrap 4
- JavaScript (and unfortunately, jQuery)
Backend uses:
- Python / Flask
- Redis
- Go (for the SSH bot, that
finger
s every machine) - Docker
Some tricky things include working around:
- uni breaking the
finger
command - a bug where some users will still have processes running after they log off, making it harder to determine if someone is logged on / how long they have been logged on for
I also integrated with the university's authentication system, so I built a library called 'gosign' to make it easier for others to integrate CoSign authentication into their own systems.
gosign: CoSign library for Go
gosign is an experimental library that provides an interface to a CoSign daemon. It works well, but the API might change in the future.
CoSign is a "secure single sign-on web authentication system".
This only maintains a living connection and can handle the CHECK
command (this project was created for a "CoSign filter"). There are no plans to support further protocol
commands. This library is only built to support CoSign protocol version 2 (in use as of Cosign v2.x). Contributions are welcome.
Example
Creating a CoSign client
client, err := gosign.Dial(&gosign.Config{
Address: "www.ease.ed.ac.uk:6663"
Service: "betterinformatics.com"
TLSConfig: &tls.Config{
ServerName: "www.ease.ed.ac.uk"
Certificates: []
…
Top comments (0)