Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matbagnoletti/chatterbox
Applicazione di messaggistica (chat) che sfrutta il protocollo UDP in modalità multicast per la comunicazione tra più utenti.
https://github.com/matbagnoletti/chatterbox
chat instant-messaging javafx kotlin multicast socket udp
Last synced: about 2 months ago
JSON representation
Applicazione di messaggistica (chat) che sfrutta il protocollo UDP in modalità multicast per la comunicazione tra più utenti.
- Host: GitHub
- URL: https://github.com/matbagnoletti/chatterbox
- Owner: matbagnoletti
- License: other
- Created: 2024-05-28T06:54:20.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-23T13:22:47.000Z (7 months ago)
- Last Synced: 2024-06-23T14:35:57.803Z (7 months ago)
- Topics: chat, instant-messaging, javafx, kotlin, multicast, socket, udp
- Language: Java
- Homepage: https://matbagnoletti.gitbook.io/chatterbox/
- Size: 48.2 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ChatterBox
Made by @matbagnoletti
Docenti: prof.ssa @mciuchetti e prof.ssa Fioroni
Corso TPSIT a.s. 2023/2024, ITTS A. Volta (PG)
## Descrizione
ChatterBox è un'applicazione di chat che sfrutta il protocollo UDP in modalità multicast per la comunicazione tra più utenti. Il programma permette, grazie a un'apposita API RESTful, la creazione di un gruppo chat e il loro accesso tramite credenziali di autenticazione.
L'interfaccia grafica utilizzata è stata realizzata con JavaFX, mentre la gestione della comunicazione è affidata a Java e Kotlin.## Requisiti
- [JDK](https://www.oracle.com/it/java/technologies/downloads/) (v22.0.1)
- [JavaFX](https://openjfx.io/) (v22.0.1)
- [Maven](https://maven.apache.org/download.cgi)
- [Git](https://git-scm.com/downloads)È possibile visualizzare le versioni già presenti sul proprio dispositivo mediante i seguenti comandi:
```bash
java -version
mvn -v
```## Installazione e utilizzo
Per poter utilizzare l'applicazione ChatterBox esegui le seguenti operazioni:
1. Effettua il clone della repository con il comando:
```bash
git clone https://www.github.com/matbagnoletti/ChatterBox.git
```
In alternativa, effettua il download del file compresso del progetto ed estrailo in una cartella locale del tuo computer.2. Apri il progetto con un generico IDE come [IntelliJ IDEA](https://www.jetbrains.com/idea/). Attraverso l'interfaccia `Maven` del progetto, nella sezione `Plugins`, esegui:
- `clean:clean` per ripulire il progetto;
- `kotlin:compile` per compilare il codice kotlin;
- `compiler:compile` per compilare il progetto;
- `javafx:run` per eseguire il progetto.In alternativa, da IDE IntelliJ IDEA, è possibile eseguire la configurazione `ChatterBox` [storicizzata nel progetto](.idea/runConfigurations/ChatterBox.xml).
## Struttura e funzionamento
Il progetto si compone da 3 packages principali:- Package [`chatterbox`](src/main/kotlin/edu/avolta/tpsit/chatterbox): contiene le classi di gestione dell'interfaccia grafica JavaFX e la classe principale `ChatterBox`.
- Package [`multicastudpsocketchat`](src/main/kotlin/edu/avolta/tpsit/multicastudpsocketchat): contiene le classi di gestione della chat, il cui progetto di riferimento è disponibile [qui](https://www.github.com/matbagnoletti/MulticastUDPSocketChat).
- Package [`security`](src/main/kotlin/edu/avolta/tpsit/security): contiene la classe di gestione della sicurezza della comunicazione tramite crittografia End-to-End (AES).### Utilizzo
1. All'avvio dell'applicazione, una schermata di setup permetterà all'utente la configurazione del proprio username e le impostazioni di connessione al gruppo chat.
Il nome utente deve essere composto da almeno 3 caratteri. Il nome del gruppo è univoco ed ha una lunghezza minima di 6 caratteri, così come la password. La gestione e amministrazione dei gruppi e realizzata mediante una API RESTful apposita che permette la creazione, la modifica e l'eliminazione di gruppi chat. La password del gruppo chat è necessaria per garantire la sicurezza e la privacy dei messaggi scambiati tra gli utenti. Viene memorizzata in forma crittografata e non è possibile recuperarla una volta impostata.
Il TTL (Time To Live) è un valore che determina il numero di router attraverso i quali il datagramma può passare. Un valore di 1 indica che il datagramma non può lasciare la sottorete locale, mentre un valore di 255 indica che il datagramma può attraversare un numero illimitato di router. Il valore di default è 128. Per quanto riguarda il loopback dei datagrammi, invece, è possibile disattivarlo per alleggerire il traffico di rete nel solo caso in cui multiple istanze dell'applicazione NON siano eseguite sullo stesso dispositivo.
2. Una volta configurato il gruppo, l'utente verrà reindirizzato alla schermata principale dell'applicazione. Qui sarà possibile visualizzare i messaggi inviati dagli altri utenti del gruppo chat e inviare messaggi propri.
Il pulsante "Termina" permette di chiudere la connessione al gruppo chat.
Una volta terminata la chat, l'utente potrà riconnettersi al gruppo chat mediante il pulsante "Riconnetti".
Ogni messaggio inviato o ricevuto è accompagnato dal nome utente, dall'orario di invio e da un'icona che indica se il messaggio è stato ricevuto correttamente da tutti gli utenti online in quell'instante.
A partire versione v2.1.0 ogni conversazione è protetta da crittografia End-to-End (AES).
La barra di navigazione in alto permette di visualizzare i dettagli del gruppo chat e di modificare le impostazioni di connessione.
Info gruppo: informazioni di sistema
Pannello di controllo: informazioni sull'esecuzione
In questo esempio gli indirizzi IP e i numeri di porta sono stati nascondi per motivi di privacy.
Impostazioni: layout e controlli
A partire dalla versione v2.1.1 è possibile modificare il tema dell'applicazione. Inoltre, tutti i cambiamenti al layout verranno storicizzati e ripristinati all'avvio successivo.
Aiuto: a proposito di ChatterBox e comandi
## Licenza d'uso
Questo progetto (e tutte le sue versioni) sono rilasciate sotto la [MB General Copyleft License](LICENSE).