340 lines
No EOL
11 KiB
Markdown
340 lines
No EOL
11 KiB
Markdown
# RuscoMap
|
|
|
|
_Una mappa della propria città dove utenti in anonimo possono inserire dei marker con nome, descrizione e foto del'oggetto abbandonato, segnalandolo a tutti i visitatori della mappa._
|
|
<br> Sulla falsa riga del "_te lo regalo se vieni a prenderlo_", questo è più il "_segnalo che c'è sta roba lì, è tua se te la vai a prendere_"
|
|
|
|
### ToDo per essere funzionale alla versione 0.1
|
|
|
|
- [x] Aggiungere il marker (visivo) al clic di inserimento marker [[commit f611832592](https://git.lattuga.net/scossa/ruscomap/commit/f6118325925ba91173cf5bcc0a206b85fa3ef1a3)]
|
|
- [x] Al momento si possono aggiungere infiniti marker (temporanei), da fixare [[commit 0fba9efe99](https://git.lattuga.net/scossa/ruscomap/commit/0fba9efe99057119ef5eedec078987482a193fea)]
|
|
|
|
### ToDo per essere funzionale alla versione 0.2
|
|
|
|
- [ ] ~~Cancellare i marker creati > di 24h (sia record db che img)~~ [[commit 78d4b6b216](https://git.lattuga.net/scossa/ruscomap/commit/78d4b6b2169d43550aa3af800ac2f946ebeb9743)]
|
|
- [ ] Rimuovere pezzi di codice js per cancellare marker creati > di 24h. Dovrebbe essere solo il [commit 78d4b6b216](https://git.lattuga.net/scossa/ruscomap/commit/78d4b6b2169d43550aa3af800ac2f946ebeb9743)
|
|
- [x] Scrivere script bash (<code>delete_rusco.sh</code>) che cancella tutti marker [[commit c0c4ee99e9](https://git.lattuga.net/scossa/ruscomap/commit/c0c4ee99e9262624ca86a1501429a85890452478)]
|
|
- [x] Scrivere script bash (<code>pulisci_vecchio_rusco.sh</code>) che cancella tutti marker più vecchi di 24h (automatico) [[commit c0c4ee99e9](https://git.lattuga.net/scossa/ruscomap/commit/c0c4ee99e9262624ca86a1501429a85890452478)]
|
|
- [ ] Come mettere nel cron del server lo script che cancella i marker più vecchi di 24h
|
|
- [x] Scrivere script bash (<code>pulisci_manualmente_vecchio_rusco.sh</code>) che cancella tutti marker più vecchi di 24h (manuale) [[commit c0c4ee99e9](https://git.lattuga.net/scossa/ruscomap/commit/c0c4ee99e9262624ca86a1501429a85890452478)]
|
|
- [ ] pushare e spostare script in cartella <code>/script</code>
|
|
|
|
### ToDo per essere funzionale alla versione 0.3
|
|
|
|
- [x] Implementare il bottone in alto a dx: quando premuto per passare alla modalità inserimento diventa una _X rossa_ che se premuta annulla l'inserimento marker [[commit fa82dc221e](https://git.lattuga.net/scossa/ruscomap/commit/fa82dc221e2e8d1648c78534c0320bd099f897f0)]
|
|
- [ ] A marker aggiunto con successo come icona del bottone in alto a dx rimane la X rossa (in modalità inserimento marker) invece di ritornare l'icona del marker (ovvero passare in modalità normale/visualizzazione)
|
|
|
|
### ToDo per essere funzionale alla versione 0.4
|
|
|
|
- [ ] Mostrare data/ora pubblicazione del marker per far capire al visitatore quanto tempo fa è stato avvistato il rusco
|
|
- [ ] Al momento sul marker temporaneo si vede l'immagine rotta. fixare: sul temporaneo non bisogna mostrare nulla
|
|
|
|
### ToDo per essere funzionale alla versione 0.5
|
|
|
|
- [ ] Riformattare visualizzazione form inserimento marker per mobile
|
|
- [ ] Milgiorare css del form inserimento dati marker
|
|
|
|
### ToDo per essere funzionale alla versione 0.6
|
|
|
|
- [ ] Creare form per ricercare tra i titoli/descrizioni dei marker esistenti (query esempio: "divano")
|
|
|
|
### ToDo per essere funzionale alla versione 0.7
|
|
|
|
- [ ] Pop-Up all'apertura di ruscomap con descrizione breve
|
|
- [ ] Scrivere il tutorial utente di ruscomap
|
|
- [ ] Creare pagina tutorial
|
|
- [ ] Link alla pagina del tutorial nel PopUp iniziale
|
|
|
|
### ToDo per essere funzionale alla versione 0.8
|
|
|
|
- [ ] Creare bottone per form/pagina "area riservata"/"accedi"
|
|
- [ ] Creare form/pagina "area riservata"/"accedi" per far accedere l'admin
|
|
- [ ] Creare ruolo Admin
|
|
- [ ] Permessi: Visita mappa, Aggiungi marker, Cancella Marker.
|
|
- [ ] Quando autenticati come admin mostrare un pulsante affianco/sopra/dentro al form dei dati del marker che ha la funzione di cancellare il marker corrispondente
|
|
- [ ] Popup che chiede la conferma della cancellazione del marker
|
|
|
|
### ToDo per essere funzionale alla versione 0.9
|
|
|
|
- [ ] Aggiungere ai permessi admin l'accesso al pannello admin.
|
|
- [ ] Creare Pannello Admin da dove poter creare utenti (nomeutente/password, no mail o altro)
|
|
- [ ] Gestione autenticazione utenti con password
|
|
|
|
### ToDo per essere funzionale alla versione 1.0
|
|
|
|
- [ ] Creare (?) Ruolo Ospite. Permessi: Visita mappa
|
|
- [ ] Creare Ruolo Utente. Permessi: Visita mappa, Aggiungi marker
|
|
|
|
#### Possibili altre implementazioni
|
|
|
|
- [ ] Scatta la foto del marker da uploadare direttamente in app (su alcuni smartphone gia lo fa)
|
|
- [ ] Inserire la posizione del marker tramite il gps dello smartphone
|
|
- [ ] Possibilità di aggiungere piu di una foto per un marker
|
|
- [x] Standardizzare gli script con controllo "myusername"
|
|
- [ ] Standardizzare con le varialibili del <code>default.json</code> gli script
|
|
- [ ] File config per popolare default.json e gli script
|
|
- [ ] Logo RuscoMap
|
|
|
|
### ToDo per essere funzionale alla versione 1.1
|
|
|
|
- [ ] Creare Ruolo Moderatore. Permessi : Visita mappa, Aggiungi marker, Cancella Marker
|
|
|
|
### ToDo per essere funzionale alla versione 1.2
|
|
|
|
- [ ] Feature da pannello admin: poter settare permessi personalizzati ai vari Ruoli (magari si vuole dare l'inserimento anche agli ospiti e/o la cancellazione dei marker agli user)
|
|
|
|
### ToDo per essere funzionale alla versione 1.3
|
|
|
|
- [ ] Creare form registrazione con mail
|
|
- [ ] Richiedere conferma mail via link spedito a l'indirizzo
|
|
|
|
|
|
<br>
|
|
|
|
---
|
|
<br><br>
|
|
|
|
# ISTRUZIONI INSTALLAZIONE
|
|
|
|
## Installazione dipendenze
|
|
|
|
#### Installa mariadb
|
|
<code>sudo apt update && sudo apt install mariadb</code>
|
|
|
|
#### Installa node e nvm
|
|
Curl da sito ufficiale [qui](https://github.com/nvm-sh/nvm?tab=readme-ov-file#install--update-script) <br>
|
|
_trobleshooting: cerca nvm in .bashrc_
|
|
|
|
## Installazione ruscomap
|
|
|
|
#### Clona il git
|
|
```
|
|
# crea la cartella
|
|
mkdir /var/www/html/leaflet/; cd /var/www/html/leaflet/;
|
|
|
|
# clona il repo
|
|
git clone https://git.lattuga.net/scossa/ruscomap.git
|
|
```
|
|
|
|
#### Personalizza il file di configurazione db
|
|
<code>nano /var/www/html/leaflet/ruscomap/config/default.json</code>
|
|
|
|
#### Inizializza db
|
|
```
|
|
# usa la versione node spcificata nel file .nvmrc
|
|
cd /var/www/html/leaflet/ruscomap/; nvm use
|
|
|
|
# sempre da cartella git
|
|
cd /var/www/html/leaflet/ruscomap/;
|
|
|
|
# inzializza Db
|
|
mysql < intDb.sql
|
|
```
|
|
#### Apri porta sul firewall
|
|
<code>sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT</code>
|
|
|
|
#### Crea il servzio
|
|
<code>nano /etc/systemd/system/ruscomap.service</code>
|
|
|
|
```
|
|
[Unit]
|
|
Description=Ruscomap Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=<utente_del_config/default.json>
|
|
WorkingDirectory=/var/www/html/leaflet/ruscomap/
|
|
ExecStart=/bin/bash -c "node index.js"
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
##### avvialo e abilitalo a startarsi in automatico
|
|
```
|
|
sudo systemctl start ruscomap.service
|
|
sudo systemctl enable ruscomap.service
|
|
```
|
|
|
|
#### Crea il file conf di apache
|
|
|
|
<code>nano /etc/apache2/site-enabled/ruscomap.conf</code>
|
|
|
|
```
|
|
#PORT 80 RUSCOMAP
|
|
<VirtualHost ruscomap.myserver.it:80>
|
|
|
|
DocumentRoot /var/www/html/leaflet/ruscomap/public
|
|
ServerName ruscomap.myserver.it
|
|
|
|
ProxyPass / http://localhost:3000/
|
|
ProxyPassReverse / http://localhost:3000/
|
|
|
|
RewriteEngine on
|
|
RewriteCond %{HTTP:Upgrade} =websocket
|
|
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
|
|
|
|
ErrorLog ${APACHE_LOG_DIR}/ruscomap.log
|
|
CustomLog ${APACHE_LOG_DIR}/ruscomap-access.log combined
|
|
|
|
</VirtualHost>
|
|
```
|
|
##### restarta apache
|
|
```
|
|
sudo systemctl restart apache2.service
|
|
```
|
|
|
|
<br>
|
|
|
|
# ISTRUZIONI ADMIN
|
|
|
|
## Script per cancellare tutti i record della table "markers" più vecchi di 24h (automatico)
|
|
|
|
<code>nano /var/www/html/leaflet/ruscomap/pulisci_vecchio_rusco.sh</code>
|
|
|
|
```
|
|
#!/bin/bash
|
|
|
|
# Database credentials
|
|
DB_USER="myusername"
|
|
DB_PASS="mypassword"
|
|
DB_NAME="ruscomap"
|
|
TABLE_NAME="markers"
|
|
|
|
# Controlla se DB_USER è "myusername"
|
|
if [ "$DB_USER" == "myusername" ]; then
|
|
echo -e "\nDevi impostare nome utente e password per usare lo script"
|
|
echo -e "editalo con nano pulisci_vecchio_rusco.sh"
|
|
exit 0
|
|
fi
|
|
|
|
# Prendi l'ora e data meno 24 ore
|
|
TIME_THRESHOLD=$(date -d '24 hours ago' '+%Y-%m-%d %H:%M:%S')
|
|
|
|
# comando sql che cancella i record piu vecchi di 24h
|
|
SQL_COMMAND="DELETE FROM $TABLE_NAME WHERE ts < '$TIME_THRESHOLD';"
|
|
|
|
esegue il comando Execute the SQL command
|
|
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "$SQL_COMMAND"
|
|
|
|
# check del comando
|
|
if [ $? -eq 0 ]; then
|
|
echo "Rusco più vecchi di 24h cancellato."
|
|
else
|
|
echo "\ERRORE!\n"
|
|
```
|
|
|
|
#### Imposta lo script su cron per essere eseguito ogni 24h
|
|
|
|
```
|
|
|
|
```
|
|
|
|
## Script per cancellare tutti i record della table "markers" più vecchi di 24h (manuale)
|
|
|
|
<code>nano /var/www/html/leaflet/ruscomap/pulisci_manualmente_vecchio_rusco.sh</code>
|
|
|
|
```
|
|
#!/bin/bash
|
|
|
|
# Database credentials
|
|
DB_USER="myusername"
|
|
DB_PASS="mypassword"
|
|
DB_NAME="ruscomap"
|
|
TABLE_NAME="markers"
|
|
|
|
# Controlla se DB_USER è "myusername"
|
|
if [ "$DB_USER" == "myusername" ]; then
|
|
echo -e "1nDevi impostare nome utente e password per usare lo script"
|
|
echo -e "editalo con nano pulisci_vecchio_rusco.sh"
|
|
exit 0
|
|
fi
|
|
|
|
# Mostra dati impostati
|
|
echo -e "\nDati impostati:"
|
|
echo -e "$DB_USER"
|
|
echo -e "$DB_PASS"
|
|
echo -e "$DB_NAME"
|
|
echo -e "$TABLE_NAME"\n
|
|
|
|
# Chiedi all'utente se i dati sono giusti
|
|
read -p "I dati sono giusti? Vuoi continuare? (y/yes/s/si): " user_input
|
|
|
|
# Converti l'input in minuscolo
|
|
user_input_lower=$(echo "$user_input" | tr '[:upper:]' '[:lower:]')
|
|
|
|
# Controlla se l'input è uno dei valori accettabili
|
|
if [[ "$user_input_lower" == "y" || "$user_input_lower" == "yes" || "$user_input_lower" == "s" || "$user_input_lower" == "si" ]]; then
|
|
|
|
echo -e "Cancello la table $TABLE_NAME..."
|
|
|
|
# Prendi l'ora e data meno 24 ore
|
|
TIME_THRESHOLD=$(date -d '24 hours ago' '+%Y-%m-%d %H:%M:%S')
|
|
|
|
# comando sql che cancella i record piu vecchi di 24h
|
|
SQL_COMMAND="DELETE FROM $TABLE_NAME WHERE ts < '$TIME_THRESHOLD';"
|
|
|
|
esegue il comando Execute the SQL command
|
|
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "$SQL_COMMAND"
|
|
|
|
# check del comando
|
|
if [ $? -eq 0 ]; then
|
|
echo "Rusco più vecchi di 24h cancellato."
|
|
else
|
|
echo "\nErrore!\n"
|
|
fi
|
|
```
|
|
|
|
## Cancella un record del db
|
|
|
|
```
|
|
mariadb -u <utente_del_config/default.json> -p
|
|
|
|
show databases;
|
|
use ruscomap;
|
|
show tables;
|
|
select * from markers;
|
|
DELETE FROM markers WHERE filename = '0a9f02167f85c845db2d4b81bbeef9d5';
|
|
```
|
|
|
|
## Script per aggiornare ruscomap
|
|
|
|
<code>nano /var/www/html/leaflet/ruscomap/AggiornaRuscoMap.sh</code>
|
|
|
|
```
|
|
echo -e "Stoppo ruscomap..."
|
|
systemctl stop ruscomap.service
|
|
sleep 1
|
|
|
|
cd /var/www/html/leaflet/ruscomap
|
|
echo -e "\nEseguo git pull..."
|
|
git pull
|
|
sleep 1
|
|
|
|
echo -e "Do permessi www-data..."
|
|
chown -R www-data:www-data /var/www/html/leaflet/ruscomap/public
|
|
|
|
echo -e "restarto apache e ruscmap"...
|
|
systemctl restart apache2.service
|
|
systemctl start ruscomap.service
|
|
|
|
echo -e "Aggiornamento completato!\n"
|
|
```
|
|
|
|
## Script per cancellare tutti i record della table "markers"
|
|
|
|
<code>nano /var/www/html/leaflet/ruscomap/delete_rusco.sh</code>
|
|
|
|
```
|
|
#!/bin/bash
|
|
|
|
# Define database credentials
|
|
DB_USER="myuser"
|
|
DB_PASS="mypassword"
|
|
|
|
# Connect to MariaDB and execute commands
|
|
mariadb -u "$DB_USER" -p"$DB_PASS" <<EOF
|
|
USE ruscomap;
|
|
TRUNCATE TABLE markers;
|
|
EOF
|
|
``` |