An open API service indexing awesome lists of open source software.

https://github.com/liblor/cirrolus

Matriculation Project
https://github.com/liblor/cirrolus

Last synced: about 1 year ago
JSON representation

Matriculation Project

Awesome Lists containing this project

README

          

# Cirrolus - A P2P-Cloud

Cirrolus Logo

I programmed Cirrolus a P2P-Cloud storage prototype as part of my matriculation project (German: Maturaarbeit).
In Switzerland, each student has to do a matriculation project to complete high school.
A matriculation project is a project in an area of interest of the student which includes a written part and a presentation.

Cirrolus is a prototype for a peer-to-peer storage solution, which allows users to upload public and private files.
A file uploaded is split into, so called, fragments.
The approach used is similar to Shamir's secret sharing.
That way a node does not possess the original file.
Therefore, it can not be held accountable for potentially illegal files uploaded.
Furthermore, multiple fragments are generated and an arbitrary subsets of 4 fragments allow to reassemble the file.

Looking back on this project, I see a lot of room for improvements, but I got a good grade :)

## Usage

Start the program:
```
./Cirrolus.py USERNAME [port]
```
The following commands exisit in the interactive prompt.
```
download FILE
getuser
join IP [PORT]
leave
list
search [FILENAME]
setuser NAME
upload FILE [p]
```

To test the program locally, copy the files into at least 5 different locations.
Start the program on different ports with different usernames.
Run `join 127.0.0.1 [Port of one node]` on each node.
You should now be able to upload files with `upload FILE` and download it again with `download FILENAME`.

## Requirements
* Python >=2.7
* PyCrypto (optional)