Simplest analog of distributed file storages such as DropBox/SugarSync/etc.
- Python 2.7.5
- PostgreSQL
- Twisted
- Autobahn.ws
- OpenSSL
- SQLAlchemy ORM
- Flask
- pytest
- wxPython
- PyCrypto with python-cryptoplus extension
- opening/writing/renaming/removing/transfering file or catalog
- synchronization files
- encryption by AES-256/Serpent/Twofish
- console/GUI clients
- supporting multiple file servers
- shared files between users (via creating links)
Console application:
Client GUI:
For start working with distributed file storage you will need:
- Run the server.py by doing
python server.py [port]
- Start few (minimum one) file servers
# take example of fs.json
python fileserver.py [path_to_config.json] [port]
[path_to_config.json] its configuration file for fileserver.py, which contains:
- "path" its a place on HDD/SSD, where all files will be stored
- "base_dir" its just name for basic directory, which using for creating with "path" argument
- "server_ip" means IP-address of this computer, which get access to connecting new users
- "server_port" means port, which listening server for connected users
- "debug" - boolean flag, which means sending information about fileserver to server (by default its shall be false)
-
Open in your browser
or run the Python console client
python client_console.py [port]
or run the Python GUI client
python client_gui.py [port]
NOTE: by default client applications using port=9000
TLS server keys and certificate can be generated by doing:
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
openssl x509 -in server.crt -out server.pem
To run the server 2 files are required.
Private key (with no passphrase set!):
server.key
Certificate:
server.crt
Big thanks to:
- Jean-Paul Calderone [creator of Twisted] for help and advices on event-based programming with Twisted
- Tobias Oberstein [creator of Autobahn.ws] for programming tips on Autobahn.ws
Especially thanks http://www.fatcow.com/ for free icons