CoroSechat

Author: Raphael Dray

CoroSechat is a chat server over a Secure TCP connection with SmartCard Challenge-Response Authentication based.

It is written in Java 17 including libraries like so:


Implementations:

Here is described some implemented features:

  • Multi-Threaded Server (Threads for Accepting Connection and the Main thread used to handle Administration Management)
  • Server Administration Management
    • /kill username         -- Kill a connected user
    • /killall              -- Kill all connected users
    • /halt              -- Stop the server
    • /deleteAccount username     -- Delete an existing account
    • /addAccount username password -- Add an account
    • /loadBDD            -- Load the Database
    • /saveBDD           -- Save the Database
  • Regular User Server Commands:
    • /logout | /exit          -- Disconnect / Quit
    • /list              -- List current connected users
    • /msg username message     -- Send a Private Message to username
  • Hand-Crafted Logger
  • PostgreSQL Database Persistence in conjunction with ActiveJDBC ORM

How it works ?:

Launch the server and connect to it, simple.

INFO: 2022-01-22 11:47:18.901 ServerChat: Listening on port 4444
INFO: 2022-01-22 11:48:00.937 ServiceChat: A new user has initiated a connection on IP 0:0:0:0:0:0:0:1
INFO: 2022-01-22 11:48:05.215 ServiceChat: A new user has been created with username Raphael
INFO: 2022-01-22 11:48:12.608 ServiceChat: A new user has initiated a connection on IP 0:0:0:0:0:0:0:1
INFO: 2022-01-22 11:48:19.588 ServiceChat: [Raphael] Coucou
Salut !
INFO: 2022-01-22 11:48:27.503 ServiceChat: <ADMIN> Salut !
/list
<SYSTEM> List of connected users: 
<SYSTEM> Raphael
INFO: 2022-01-22 11:49:32.777 ServiceChat: <ADMIN> /list
/killall
INFO: 2022-01-22 11:49:43.169 ServiceChat: Raphael has been killed by the administrator.
INFO: 2022-01-22 11:49:43.173 ServiceChat: <ADMIN> /killall
/halt

Process finished with exit code 0

Improvements:

Some improvements to come further:

  • In-Docker PostgreSQL Deployment
  • PostgreSQL Database Persistence
  • Message Reply
  • Password Hashing