MashaFile

Documentation for the project MashaFile.

Description
MashaFile is planned to a free software (under the GPLv3 license) application for online file storage and synchronization. Its core is be a server written in C, and a client (Desktop, devices etc). The client for the Desktop is written in C and C++(Qt). For now the project is in the active development, pre-alpha stage.

Project contains three parts in the stage of development: mashafile, mashafile-desktop, and mashafile-api (the client API).

mashafile
mashafile is the server written in C. For now it permits just to upload and download files, but this is a pre-alpha stage. The server listens the port 19800 for incoming connections.

mashafile-desktop
It uses the mashafile-api API and the GUI part is developed in C++ (Qt).

https://gitlab.com/sv-ti/mashafile-desktop

mashafile-api
It is an API written in C for client side implementation and now it is used by mashafile-desktop.

https://gitlab.com/sv-ti/mashafile-api

Project code repositories

 * mashafile - https://gitlab.com/sv-ti/mashafile
 * mashafile-desktop - https://gitlab.com/sv-ti/mashafile-desktop
 * mashafile-api - https://gitlab.com/sv-ti/mashafile-api

What It should do
Main features


 * Easy to store files on the server (for example, just by moving the files in a special folder). [started, pre-alpha]
 * Synchronize files (for example, files stored on the server and those on the client folder). [not implemented]
 * Strong data encryption (on data transmission and storing on the server) [not implemented]
 * Support versioning (with Git) [not implemented]
 * Easy install [started, pre-alpha]

Other features


 * File sharing through HTTP [not implemented]
 * Web client [not implemented]
 * Desktop and mobile clients [not implemented]
 * API for client implementation [started, pre-alpha]

Used technologies

 * sqlite3 - for database
 * librsync - for delta compression

Similar projects

 * https://opensource.dropbox.com/
 * http://seafile.com/en/home/
 * https://github.com/syncany/syncany

Synchronization

 * https://en.wikipedia.org/wiki/Delta_encoding
 * https://rsync.samba.org/tech_report/
 * http://librsync.sourcefrog.net/doc/librsync.html
 * http://rproxy.samba.org/doxygen/librsync/refman.pdf

Libraries used in the project

 * libconfig - http://www.hyperrealm.com/libconfig/
 * sqlite3 - http://www.sqlite.org/
 * librsync - http://librsync.sourcefrog.net/