Este projeto implementa um sistema de comunicação distribuído em Java utilizando Sockets, TCP e criptografia RSA para comunicação segura entre clientes e servidor.
- Compila e executa
Main.javapara iniciar o servidor. - Compila e executa
ChatClient.javapara iniciar os clientes.- Nota: Podes iniciar várias instâncias de
ChatClient.java, uma para cada utilizador que fará login.
- Nota: Podes iniciar várias instâncias de
| Comando | Descrição | Exemplo |
|---|---|---|
| SEND [email] [mensagem] | Envia mensagens privadas para outro utilizador. | SEND coord_local1@protecao.gov.pt Boa Tarde Coordenador Local, como se encontra? |
| JOIN [grupo] | Junta (ou cria) um grupo. | JOIN Tempestade-Kirk |
| LEAVE [grupo] | Sai de um grupo. | LEAVE Tempestade-Kirk |
| GROUPMSG [grupo] [mensagem] | Envia mensagens para um grupo. | GROUPMSG Tempestade-Kirk Bom dia. |
| APPROVE EVACUATE | Aprova pedidos de evacuação (somente para utilizadores com role HIGH). |
APPROVE EVACUATE |
| APPROVE ACTIVATE | Aprova pedidos de ativação (roles HIGH e MEDIUM). |
APPROVE ACTIVATE |
| APPROVE DISTRIBUTE | Aprova pedidos de distribuição (roles HIGH, MEDIUM e LOW). |
APPROVE DISTRIBUTE |
Para que a funcionalidade de guardar mensagens em grupo funcione corretamente para utilizadores offline:
- Mantém
Main.javasempre em execução. - Inicia várias instâncias de
ChatClient.java, uma para cada utilizador. - Se um cliente fizer login e depois encerrar a instância, as mensagens destinadas a ele serão entregues quando ele se reconectar.
| Password | Role | |
|---|---|---|
| coord_regional@protecao.gov.pt | senha123 | HIGH |
| coord_local1@protecao.gov.pt | senha456 | MEDIUM |
| operador1@protecao.gov.pt | senha321 | LOW |
| agente_emergencia2@protecao.gov.pt | senha222 | REGULAR |
| Role | Grupos |
|---|---|
| HIGH | GRUPO-HIGH, GRUPO-MEDIUM, GRUPO-LOW, GRUPO-REGULAR, GRUPO-GERAL |
| MEDIUM | GRUPO-MEDIUM, GRUPO-LOW, GRUPO-REGULAR, GRUPO-GERAL |
| LOW | GRUPO-LOW, GRUPO-REGULAR, GRUPO-GERAL |
| REGULAR | GRUPO-REGULAR, GRUPO-GERAL |
- Java (JDK 17+)
- Sockets TCP/UDP
- Criptografia RSA
- Multithreading
Main.java→ Servidor principal que gerencia as conexões.ChatClient.java→ Cliente que permite login e envio de comandos.GroupService.java→ Gerenciamento de grupos.MessageService.java→ Envio e armazenamento de mensagens.EncryptionUtil.java/DecryptionUtil.java→ Criptografia RSA.- Ficheiros de dados:
user_groups.txt→ Grupos associados a utilizadores.system.log→ Logs de sistema.system_reports.log→ Relatórios periódicos.individual_messages.txt→ Mensagens privadas offline.group_messages.txt→ Mensagens de grupo offline.public.keyeprivate.key→ Chaves RSA.