# Prattle

### What is Prattle?

Prattle is a simple chat application written using C++11, SFML and TGUI as a group project by me and Amish Naidu, with support from Manasij Mukherjee and Bruno Van de Velde.

Prattle uses a single server, multi client model and different instances of the server cannot communicate with each other. Full protocl and technical documentation guide can be found here.

Current features supported are:

• Signup
• Chatting with multiple clients
• Friend system
• User statuses (online/offline)
• Server controller

Planned features can be found on our TODO.

Prattle still doesn’t boast of ANY security layer. Using Prattle for regular communication is not advisable.

### Source, Building & Running

To build Prattle, there are a few dependencies:

First clone the repo:

$git clone https:github.com/TheIllusionistMirage/Prattle There are three separate CMake build scripts to build prattle-server, prattle-client and prattle-server-controller separately. Doing this will build the server(prattle-server): $ cd Prattle
$mkdir build && cd build$ cmake ..
$make  Doing this will build the client(prattle-client): $ cd ../../
$cd Client$ mkdir build && cd build
$cmake ..$ make


Doing this will build the server-controller(prattle-server-controller):

$cd ../../$ cd Server-Controller
$mkdir build && cd build$ cmake ..
$make  How to run the server Now put the contents of Prattle/Server/build into a server (e.g., a VPS), allow firewall exceptions for TCP traffic through port 19999 and then invoke the server: $ ./prattle-server

Log messages will be written to server_log.txt, which you can consult in case of errors, warnings etc.

Client and Server-Controller usage

Now that the prattle-server is running, cd into the directory where prattle-client was built. Then edit the server_addr field in Prattle/Client/resources/config/client.conf to the public IP of the server where prattle-server is running and invoke it:

\$ ./prattle-client

Log messages will be written to client_log.txt, which you can consult in case of errors, warnings etc.

Similarly, the prattle-server-controller can be used to control the prattle-server. It requires using a passphrase to bind the prattle-server-controller to the prattle-server.

NOTES

1. Port 19999 is used by default. You are free to edit the port of course. Just make the necessary changes in Prattle/Server/resources/server.conf and Prattle/Client/resources/config/client.conf.

2. You can also host the prattle-server on a regular machine provided the machine has a static IP and required network configuration so that clients can connect to it (firewall settings, NAT filters, etc.).