https://github.com/liblor/cirrolus
Matriculation Project
https://github.com/liblor/cirrolus
Last synced: about 1 year ago
JSON representation
Matriculation Project
- Host: GitHub
- URL: https://github.com/liblor/cirrolus
- Owner: Liblor
- Created: 2020-02-14T12:47:22.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-02-14T17:43:34.000Z (over 6 years ago)
- Last Synced: 2025-02-01T09:29:30.408Z (over 1 year ago)
- Language: Python
- Size: 18.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Cirrolus - A P2P-Cloud

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)