Collaborators: @forvkusa, @YunXiuRZ
- Generate key pairs for both server and client:
make gen-certs - Run
make clientto compile the client, andmake serverto compile the server. - Run solely
make allto compile both. - As for the parameters used to compile them, please dig into
Makefile.
- To execute the server, run:
where
./server <server_port>
<server_port>is the port the server should be listening on.
- To execute the client, run:
where
./client <server_ip> <server_port>
<server_ip>and<server_port>are the IP address (IPv4) and port the server is listening on.
- General:
register <id> <pw>: register a user with id<id>and password<pw>.login <id> <pw>: log into the user with id<id>and password<pw>.logout: log outlist: list online usersquit: shutdown the client
- P2P Chatting:
connect <id>: connect to the online user with id<id>. (You should first check the list of online users by thelistcommand :))send dm <id> <msg>: send a direct message (i.e. P2P message)<msg>to the user with id<id>.
- Group Chatting:
join <gid>: join the group of (group) id<gid>; a new group will be created on the server upon request if the group is non-existent.leave <gid>: leave the group of (group) id<gid>.send group <gid> <msg>: send a message<msg>to all members of the group with idgid.
- ChatGPT for the implementation of TLS library (
tls.(cpp|h)andtls_registry.(cpp|h)) using OpenSSL, several helper functions (e.g.interrupt_notify(),lookup_peer_from_server(),get_room_mutex(),peer_ip(),is_local_ipv4()), and theMakefile. - Our own implementation of thread pool library from SP 2023 HW4, NTU CSIE.