Skip to content
This repository was archived by the owner on Apr 23, 2023. It is now read-only.
/ proto-assignments Public archive

FileSync client/server and protocol for Protocol Design

Notifications You must be signed in to change notification settings

COM8/proto-assignments

Repository files navigation

Protocol Design Assignment

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...)

Build

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

How to use

Run the server example

./build/csync -s -p 12345 -cc 0
-cc <uint> messages per second (0 = unlimited)
-s run as server
-p <uint> server listen port

Run the client example

./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.

Limitations

  • Watch the Issues tracker for an up to date list of all broken features.

Future work

At the moment we do not plan to continue developing the csync client/server.

More information

About

FileSync client/server and protocol for Protocol Design

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published