csync
is a file synchronization client and server written in C/C++ for the Protocol Design lecture during the summer term 2018.
It features:
- A custom file transfer protocol based on UDP (read more...)
- Transfer package integrity checks (checksums)
- Multi user support
- User authentication support
- Delta Sync (read more...)
- End-to-End encryption with a multiway Diffie-Hellman handshake (read more...)
To compile csync
you need a C++17 capable compiler (G++ >= 7 , Clang++ >= 6).
For Buildsystems you need cmake >= 3
In order to build you need to execute in the repo
mkdir build
cd build
cmake ..
make
./build/csync -s -p 12345 -cc 0
-cc <uint>
messages per second (0 = unlimited)
-s
run as server
-p <uint>
server listen port
./build/csync -h 192.168.178.24 -p 12345 -f build -u user0 -pass password0
-h <host>
the server address
-p <uint>
the server listen port
-f <path>
the sync path
-u <string>
the username
-pass <string>
the password for the username
The server accepts the following users:
users["user0"] = User{"user0", "password0"};
users["user1"] = User{"user1", "password1"};
users["user2"] = User{"user2", "password2"};
users["user3"] = User{"user3", "password3"};
users["user4"] = User{"user4", "password4"};
To add more users just edit src/UserStore.cpp
and recompile.
- Watch the Issues tracker for an up to date list of all broken features.
At the moment we do not plan to continue developing the csync
client/server.