Coder Social home page Coder Social logo

vadniks / exchatgedesktopclient Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 0.0 2.19 MB

A secured real-time message and file exchanger (desktop client)

License: GNU General Public License v3.0

CMake 1.51% C 97.04% Shell 1.45%
nuklear sdl2 c sdl2-net gui cmake secured-communication socket-client realtime-messaging multithreading thread-synchronization low-level-memory-manipulation binary-protocol socket-programming modern-c responsive-design asynchronous-programming sqlite3 e2e-encryption libsodium

exchatgedesktopclient's Introduction

Exchatge - a secured message exchanger (desktop client)

_______ _     _ _______ _     _ _______ _______  ______ _______
|______  \___/  |       |_____| |_____|    |    |  ____ |______
|______ _/   \_ |_____  |     | |     |    |    |_____| |______

Icon

The purpose of this project is to easily exchange messages via binary protocol using an encrypted communication channel in the realtime. Each client-to-server connection is encrypted, each client-to-client connection is also encrypted. All messages go through server, but because of presence of the second layer of encryption between clients, any interception of messages by the server or anyone else is useless. File exchange is supported.

Project is created for Linux x86_64 desktop platforms (PCs).

Key features:

  • Double end-to-end encryption (each connection between client and server is encrypted, as well as the each conversation channel between 2 clients),
  • Encrypted file exchanging via binary protocol,
  • Authentication and authorization (each client has login and password, ephemeral token based protection),
  • User roles (one admin and $(MAX_USERS_COUNT - 1) users),
  • Asynchronous execution,
  • Missing messages fetching,
  • Graphical user interface,
  • Human-readable options file,
  • Multiple active simultaneous connections,
  • Digital signatures checking between clients and server,
  • Broadcasting (only one layer of encryption - between client and server, from admin to all others),
  • Instant messages delivery,
  • Different languages support.

Dependencies

Client side is written entirely in C (C11, with GNU extensions).

Build is performed via GNU Make or via Ninja with help of CMake build system generator. Compilation is performed via CLang.

Client side uses the following libraries:

The project is currently in Beta

The server
Android client

Screenshots

A B C D E F G H I J K

Build

For convenience, build is performed automatically via shell scripts. Execute the following commands to download & build dependencies, then, to extract the executable & it's libraries, and finally, to run the executable itself:

# build
chmod +x buildDependencies.sh && ./buildDependencies.sh
mkdir build && (cd build; cmake .. && make)
# test
(cd build; ctest tests)
# prepare to run
chmod +x extract.sh && ./extract.sh
patchelf --set-rpath '$ORIGIN' extracted/ExchatgeDesktopClient
# run
(cd extracted; ./ExchatgeDesktopClient)

Documentation

TODO

exchatgedesktopclient's People

Stargazers

 avatar

exchatgedesktopclient's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.