# Czat IPC Aplikacja czatu klient-serwer zaimplementowana w języku C z wykorzystaniem mechanizmów IPC. System obsługuje wiadomości bezpośrednie, czaty grupowe, wiadomości offline oraz zarządzanie użytkownikami. ## Kompilacja Projekt wykorzystuje biblioteke `libconfig` do przetwarzania danych konfiguracyjnych serwera. - Instalacja na Debian/Ubuntu: `sudo apt-get install libconfig-dev` - Instalacja na Fedora: `sudo dnf install libconfig-devel` Projekt wykorzystuje standardowy plik `Makefile`. Aby skompilować serwer i klienta: ```bash make all ``` Skompilowane progarmy będą znajdować się w folderze `./build` ## Użycie ### 1. Serwer Do uruchomienia serwera, wymagany jest plik konfiguracyjny. Jeżeli nie podano ścieżki do pliku, serwer spróbuje wczytać scieżke `./example.conf` ```bash ./build/server [plik_konfiguracyjny] ``` ### 2. Klient Klient łączy się z serwerem używając `id_klienta` zdefiniowanego w konfiguracji. ```bash ./build/client ``` - ``: Musi pasować do pola `id` zdefiniowanego na liście `clients` w pliku konfiguracyjnym (np. "test1", "test2"). ## Komendy Klienta Po uruchomieniu klienta dostępne są następujące komendy: - `/msg `: Wyślij wiadomość bezpośrednią do użytkownika - `/msg # `: Wyślij wiadomość do grupy - `/join `: Dołączenie do określonej grupy - `/leave `: Opuszczenie danej grupy - `/list active`: Wyświetla listę aktualnie połączonych użytkowników. - `/list all`: Wyświetla listę wszystkich użytkowników - `/list groups`: Wyświetla listę dostępnych grup - `/inbox`: Pobranie wiadomości offline - `/mute `: Wyciszenie użytkownika/grupy - `/unmute `: Odciszenie użytkownika/grupy - `/quit`, `/exit`, `/q`: Wylogowanie i wyjście z programu ## Struktura Projektu - **`server.c`**: Program serwera - **`client.c`**: Program klienta - **`util/`**: Funkcje pomocnicze i moduł ładowania konfiguracji. - **`commands.h`**: Współdzielone definicje struktur protokołu i stałych. - **`example.conf`**: Przykładowy plik konfiguracyjny dla użytkowników i grup.