Skip to content
Snippets Groups Projects
Commit 0e771e8e authored by Elisa Giglio's avatar Elisa Giglio
Browse files

Merge remote-tracking branch 'refs/remotes/origin/master'

update
parents 0f48bb77 5e9e0869
No related branches found
No related tags found
No related merge requests found
const char ssid[] = "AndroidAP438F_84";//"Galaxy A52s 5G8EA7_84";//"DaBroswitch"; // your network SSID (name)
const char pass[] = "yhpu9011";//"daje666.";//"iotLab/00"; // your network password (use for WPA, or use as key for WEP)
const char broker[] = "192.168.254.194";//"192.168.72.194";//"luci.local";//"192.168.1.157"//"test.mosquitto.org";
/*
ArduinoMqttClient - WiFi Advanced Callback
......@@ -22,9 +25,7 @@
//#include <PubSubClient.h>
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
const char ssid[] = "DaBroswitch"; // your network SSID (name)
const char pass[] = "iotLab/00"; // your network password (use for WPA, or use as key for WEP)
//pissir/pissir2000
// To connect with SSL/TLS:
// 1) Change WiFiClient to WiFiSSLClient.
// 2) Change port value from 1883 to 8883.
......@@ -48,7 +49,6 @@ MqttClient mqttClient(wifiClient);
//const char broker[] = "193.206.52.98";//smartcity-challenge
//const char broker[] = "192.168.20.67";
// broker non funzionanti: localhost, tcp://localhost, luci.local
const char broker[] = "192.168.1.157";//"luci.local";//"192.168.1.157"//"test.mosquitto.org";
int port = 1883;
const String willTopic = "arduino/will";
const String requestTopic = "to/all";
......
......@@ -20,8 +20,8 @@ import db.Dominio;
public class DeleteHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
// HttpsExchange he = (HttpsExchange) hex;
public void handle(HttpExchange hex) throws IOException {
HttpsExchange he = (HttpsExchange) hex;
String requestMethod = he.getRequestMethod();
if (requestMethod.compareToIgnoreCase("options") == 0) {
......
......@@ -22,8 +22,8 @@ import db.Dominio;
public class InstallHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
// HttpsExchange he = (HttpsExchange) hex;
public void handle(HttpExchange hex) throws IOException {
HttpsExchange he = (HttpsExchange) hex;
String requestMethod = he.getRequestMethod();
......
......@@ -19,8 +19,8 @@ import db.DBC;
public class StartHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
// HttpsExchange he = (HttpsExchange) hex;
public void handle(HttpExchange hex) throws IOException {
HttpsExchange he = (HttpsExchange) hex;
String requestMethod = he.getRequestMethod();
if (requestMethod.compareToIgnoreCase("options") == 0) {
......
......@@ -19,8 +19,8 @@ import db.DBC;
public class StopHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
// HttpsExchange he = (HttpsExchange) hex;
public void handle(HttpExchange hex) throws IOException {
HttpsExchange he = (HttpsExchange) hex;
String requestMethod = he.getRequestMethod();
......
......@@ -50,7 +50,7 @@ Ogni richiesta effettuata tramite API e' gestita da un nuovo Thread, il quale es
### 4.1.3. Domain Manager
Il Domain Manager e' un microservizio che opera in cloud, con funzionalita' sia da server REST sia da client con interazioni con il database (DB) dell'intero sistema. Si occupa di soddisgare le richieste provenienti dalla Webapp, controllandone la validita' e la consistenza con il DB e inoltrarle al Cloud App Manager (CAM). Ogni richiesta della Webapp viene soddisfatta istanziando un nuovo Thread e, dopo aver verificato l'autorizzazione tramite token di Keycloak, interagisce con il DB e effettua una chiamata al CAM. Terminate queste due interazioni, viene servita la risposta alla Webapp.
Il Domain Manager e' un microservizio che opera in cloud, con funzionalita' sia da server REST sia da client con interazioni con il database (DB) dell'intero sistema. Si occupa di soddisfare le richieste provenienti dalla Webapp, controllandone la validita' e la consistenza con il DB e inoltrarle al Cloud App Manager (CAM). [Ogni richiesta della Webapp viene soddisfatta istanziando un nuovo Thread e, ]dopo aver verificato l'autorizzazione tramite token di Keycloak interagisce con il DB ed effettua la chiamata al CAM. Terminate queste due interazioni, viene servita la risposta alla Webapp.
### 4.1.4. BeagleBone (BB)
- Mosquitto
- Luci: Microservizio che opera in LAN che si occupa di gestire l'accensione e lo spegnimento delle lampadine sia tramite interruttore che tramite sensori di movimento. Nel caso in cui il sensore crepuscolare di Arduino rileva che e' giorno, il sensore di movimento non viene attivato. I comandi e gli stati delle lampadine vengono letti e scritti su due topic distinti del broker Mosquitto presente sulla BB. La persistenza dello stato del microservizio e' mantenuto in locale su un file testuale in formato JSON, che viene aggiornato ad ogni variazione dello stato, ad esempio accensione o spegnimento di una lampadine, aggiunta di una nuova lampadina e modifica del sensore di movimento.
......@@ -70,7 +70,19 @@ Questo componente della LAN scrive sul broker Mosquitto della BB i valori del se
# 5. Descrizione dell'implementazione
## 5.1. UML delle classi implementate
-DomainManager:
La classe principale del DomainManager è Domain.java. Essa funge da server REST su Https.
Espone le rotte che vengono richiamate dalla WebApp per avviare, installare, creare ed eliminare i domini, oltre a fornire servizi per la corretta visualizazione
delgli elementi in app.
Prima di operare da server esso effettua una chiamata al nostro repository gitlab per popolare la tabella dei moduli del DB.
In qualità di server si avvale di un threadPoolExecutor e per ogni nuova chiamata istanzia un nuovo thread per servirla.
A seconda dell'URI richiamato viene istanziato un handler diverso, che verifica il token JWT tramite la classe Helper che a sua volta richiama TokenHandler.
Da qui viene effettuata una chiamata all'istanza di Keycloak per ottenere la chiave pubblica. Dopo di ciò il JWT che era stato precedentemente inviato dalla
Webapp viene firmato con la chiave pubblica e se il risultato è uguale alla firma inviata nel JWT allora l'utente è verificato.
## 5.2. Descrizione della UI
### 5.2.1. Autenticazione
La prima pagina che viene fornita serve per ridirigere l'utente alla pagina di login su Keycloak.
### 5.2.2. Lista di domini
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment