371 lines
No EOL
14 KiB
Markdown
371 lines
No EOL
14 KiB
Markdown
# RuscoMap
|
|
|
|
_Una mappa della propria città dove utenti in anonimo possono inserire dei marker con nome, descrizione e foto dell'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_"
|
|
|
|
<a href="https://ruscomap.accol.li">
|
|
<img src="screenRuscomap.png" />
|
|
</a>
|
|
|
|
### 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)]
|
|
|
|
### versione 0.2
|
|
|
|
- [x] ~~Cancellare i marker creati > di 24h (sia record db che img)~~ [[commit 78d4b6b216](https://git.lattuga.net/scossa/ruscomap/commit/78d4b6b2169d43550aa3af800ac2f946ebeb9743)]
|
|
- [x] Rimuovere pezzi di codice js per cancellare marker creati > di 24h. [[commit 971f1a0672](https://git.lattuga.net/scossa/ruscomap/commit/971f1a06725cd633da7904ae412a2e53f2afeab4)]
|
|
- [x] Scrivere script bash (<code>delete_rusco.sh</code>) che cancella tutti marker [[commit 8a5260d62f](https://git.lattuga.net/scossa/ruscomap/commit/8a5260d62f4333f4ae9c6cd1489f41481f5635f6)]
|
|
- [x] Scrivere script bash (<code>pulisci_vecchio_rusco.sh</code>) che cancella tutti marker più vecchi di 24h (automatico) [[commit 8a5260d62f](https://git.lattuga.net/scossa/ruscomap/commit/8a5260d62f4333f4ae9c6cd1489f41481f5635f6)]
|
|
- [x] Come mettere nel cron del server lo script che cancella i marker più vecchi di 24h [[commit 5dc0c22eae](https://git.lattuga.net/scossa/ruscomap/commit/5dc0c22eae2a4222f3ce8dc35a1d89df02ac836a)]
|
|
- [x] Scrivere script bash (<code>pulisci_manualmente_vecchio_rusco.sh</code>) che cancella tutti marker più vecchi di 24h (manuale) [[commit 8a5260d62f](https://git.lattuga.net/scossa/ruscomap/commit/8a5260d62f4333f4ae9c6cd1489f41481f5635f6)]
|
|
- [x] pushare e spostare script in cartella <code>/script</code> [[commit 8a5260d62f](https://git.lattuga.net/scossa/ruscomap/commit/8a5260d62f4333f4ae9c6cd1489f41481f5635f6)]
|
|
|
|
### versione 0.3
|
|
|
|
- [x] Riformattare visualizzazione form inserimento marker per mobile [[commit 9d5a7f8b71 & parents](https://git.lattuga.net/scossa/ruscomap/commit/9d5a7f8b71e0e2dd39f0addfa4a8117f62e23170)]
|
|
- [x] Milgiorare css del form inserimento dati marker [[commit 9d5a7f8b71 & parents](https://git.lattuga.net/scossa/ruscomap/commit/9d5a7f8b71e0e2dd39f0addfa4a8117f62e23170)]
|
|
|
|
### versione 0.4
|
|
|
|
- [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)]
|
|
- [x] 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) [[commit f9868974c6](https://git.lattuga.net/scossa/ruscomap/commit/f9868974c6b6fd5b92d8684bf5dad7687524a92d)]
|
|
- [x] Eliminare visualizzazione del marker temporaneo se viene cliccata la X rossa o aggiunto un nuovo marker (non temp) [[commit f9868974c6](https://git.lattuga.net/scossa/ruscomap/commit/f9868974c6b6fd5b92d8684bf5dad7687524a92d)]
|
|
|
|
### versione 0.5
|
|
|
|
- [x] Mostrare data/ora pubblicazione del marker per far capire al visitatore quanto tempo fa è stato avvistato il rusco [[commit c811b4eb4e](https://git.lattuga.net/scossa/ruscomap/commit/c811b4eb4e5d774eb5ccd5bceb237419105bd5d3)]
|
|
- [x] Eliminare dati e immagine da marker temporaneo (lasciare solo descrizione) [[commit 76032e6329](https://git.lattuga.net/scossa/ruscomap/commit/76032e6329936804d2dac03c3eb573b233b56f33)]
|
|
|
|
### versione 0.6
|
|
|
|
- [x] Cancellare dati file picker del form[[commit 9b8c376c53](https://git.lattuga.net/scossa/ruscomap/commit/9b8c376c53f9f52a0ae2cbfb186769a4ca1cd1e0)]
|
|
- [x] Pop-Up all'apertura di ruscomap con descrizione breve [[commit 4dac8709ca](https://git.lattuga.net/scossa/ruscomap/commit/4dac8709ca1cc8d580236ba81109a376147f749c)]
|
|
|
|
### versione 0.7
|
|
|
|
- [x] Scrivere query per funzione di ricerca [[commit 08b550ed89](https://git.lattuga.net/scossa/ruscomap/commit/08b550ed896309994f5e4a2aed762ecf5d81cfcf)]
|
|
- [x] Inserire la posizione del marker tramite il gps [[commit a57738eddc](https://git.lattuga.net/scossa/ruscomap/commit/a57738eddce46fe858c6ee88e57713ef18cf84fe)]
|
|
|
|
|
|
### versione 0.8
|
|
|
|
Commit a casa di cek [[commit 89019f168c](https://git.lattuga.net/RuscoMap/ruscomap/commit/a5ba2d24134c27634ae85f2eac2bccc636e75cbb)]<br>
|
|
- [x] L'orario di inserimento del marker risulta essere -4h prima dell'orario di inserimento reale. (nel db invece è storato con -2h rispetto orario reale) [[commit a5ba2d2413](https://git.lattuga.net/RuscoMap/ruscomap/commit/a5ba2d24134c27634ae85f2eac2bccc636e75cbb)]
|
|
- [x] per fetchare i nuovi marker ogni 5 secondi al layer marker viene aggiunto un altro layer marker, invece di cancellare il vecchio layer e caricare il nuovo. (Si nota dall'ombra dei marker sulla mappa che ogni 5 secondi aumenta di intensità) [[commit a5ba2d2413](https://git.lattuga.net/RuscoMap/ruscomap/commit/a5ba2d24134c27634ae85f2eac2bccc636e75cbb)]
|
|
|
|
|
|
### versione 0.8.5
|
|
|
|
- [ ] [bug gps] Quando si trova la propria posizione utilizzando la funzione GPS, non si riesce a inserire/cliccare sul punto in cui ci si trova finchè non si disattiva la funzione GPS
|
|
- [ ] Possibilità di poter roteare la mappa
|
|
- [ ] Mostrare immagine del rusco a tuttoschermo/ingrandita quando cliccata nel pop up
|
|
- [ ] Possibilità di linkare un particolare rusco (ruscomap che si apre con il pop up aperto di uno rusco specifico)
|
|
|
|
### versione 0.9
|
|
|
|
- [ ] Creare form login per admin
|
|
- [ ] Creare bottone per form/pagina "area riservata"/"accedi"
|
|
- [ ] Creare Pannello Admin
|
|
- [ ] Creare ruolo Admin: Visita mappa, Aggiungi marker, Accesso a pannello admin
|
|
- [ ] Gestione autenticazione utente admin con password per accesso al pannello
|
|
|
|
---
|
|
|
|
## versione 1.0
|
|
|
|
- [ ] Implementare il pannelo per permettere all'admin di poter creare utenti (nomeutente/password, no mail o altro)
|
|
- [ ] Creare ruolo Utente. Permessi: Visita mappa, Aggiungi marker
|
|
- [ ] Ruolo Ospite. Permessi: Visita mappa
|
|
- [ ] Gestione autenticazione utenti con password
|
|
- [ ] Implemtare nel pannello lo switch per on/off inserimento solo utenti e admin o anche ospiti.
|
|
|
|
---
|
|
|
|
### versione 1.1
|
|
|
|
- [ ] Feature da pannello admin: poter cancellare un utente
|
|
|
|
### versione 1.2
|
|
|
|
- [ ] Feature da pannello admin: poter disabilitare un utente
|
|
|
|
### versione 1.3
|
|
|
|
- [ ] 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
|
|
- [ ] Dare permessi di cancellazione marker all'admin
|
|
|
|
### ToDo er versione 1.4
|
|
|
|
- [ ] Creare form per ricercare tra i titoli/descrizioni dei marker esistenti (query esempio: "divano", scompaiono tutti i marker e rimangono solo quelli che nel nome o descrizione hanno "divano")
|
|
|
|
### versione 1.5
|
|
|
|
- [ ] Creare Ruolo Moderatore. Permessi : Visita mappa, Aggiungi marker, Cancella marker
|
|
|
|
### versione 1.6
|
|
|
|
- [ ] Feature da pannello admin: poter cambiare ruolo a un utente (utente <---> moderatore)
|
|
|
|
### versione 1.7
|
|
|
|
- [ ] 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)
|
|
|
|
### versione 1.8
|
|
|
|
- [ ] Creare form registrazione con mail
|
|
- [ ] Richiedere conferma mail via link spedito a l'indirizzo
|
|
|
|
## versione 2.0
|
|
|
|
- [ ] Implementare ActivityPub
|
|
|
|
## Possibili altre implementazioni possibili in qualsiasi momento
|
|
|
|
- [ ] Marker freschezza rusco (esempio: piu è datato il marker inserito e piu è scuro il colore del marker)
|
|
- [ ] Script di installazione ruscomap
|
|
- [ ] Fare il modo che lo script di Aggiornamento non pialli le var settate negli script di pulizia rusco
|
|
- [x] Standardizzare con le varialibili del <code>default.json</code> gli script [[commit a57738eddc](https://git.lattuga.net/scossa/ruscomap/commit/a57738eddce46fe858c6ee88e57713ef18cf84fe)]
|
|
- [x] Script per inserire i posti dove fare la ricicla a bologna (riciclabologna.vado.li) [[commit 03d7e1529b](https://git.lattuga.net/RuscoMap/ruscomap/commit/1f17f33ca32fdc224d02022b58fa5f3ccabba073)]
|
|
- [ ] Creare logo RuscoMap
|
|
- [ ] Scatta la foto del marker da uploadare direttamente in app (su alcuni smartphone gia lo fa)
|
|
- [ ] Possibilità di aggiungere piu di una foto per un marker
|
|
- [ ] Implemtare review per moderazione rusco inserito. switch per on/off moderazione da annello
|
|
|
|
|
|
<br>
|
|
|
|
---
|
|
<br><br>
|
|
|
|
|
|
|
|
|
|
|
|
# ISTRUZIONI INSTALLAZIONE
|
|
|
|
## Installazione dipendenze
|
|
|
|
#### Installa mariadb, jq e npm
|
|
<code>sudo apt update && sudo apt install mariadb jq npm</code>
|
|
|
|
#### 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/RuscoMap/ruscomap.git; cd ruscomap
|
|
```
|
|
|
|
#### 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_
|
|
|
|
```
|
|
# installalo
|
|
nvm install
|
|
|
|
# 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 < initDb.sql
|
|
|
|
```
|
|
|
|
##### dipendenze
|
|
<code>npm i express leaflet leaflet.locatecontrol multer mysql config</code>
|
|
|
|
## Configura ruscomap
|
|
|
|
#### Personalizza il file di configurazione db
|
|
<code>nano /var/www/html/leaflet/ruscomap/server/config/default.json</code>
|
|
|
|
#### Apri porta sul firewall
|
|
<code>sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT</code>
|
|
|
|
#### Cre l'utente
|
|
sudo adduser ruscone
|
|
|
|
|
|
#### Crea il servzio
|
|
<code>nano /etc/systemd/system/ruscomap.service</code>
|
|
|
|
```
|
|
[Unit]
|
|
Description=Ruscomap Service
|
|
After=network.target
|
|
|
|
[Unit]
|
|
Description=Ruscomap Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=
|
|
WorkingDirectory=/var/www/html/leaflet/ruscomap/server
|
|
ExecStart=/bin/bash -c "node index.js"
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
<code>systemctl daemon-reload</code>
|
|
|
|
|
|
##### Dai i permessi a www-data per ruscomap
|
|
```
|
|
cd /var/www/html/leaflet/ruscomap
|
|
chown -R www-data:www-data public
|
|
```
|
|
|
|
##### avvialo e abilitalo a startarsi in automatico
|
|
```
|
|
sudo systemctl start ruscomap.service
|
|
sudo systemctl enable ruscomap.service
|
|
sudo systemctl status ruscomap.service
|
|
```
|
|
|
|
#### Crea il file conf di apache
|
|
|
|
<code>nano /etc/apache2/sites-enabled/ruscomap.conf</code>
|
|
|
|
```
|
|
#PORT 80
|
|
<VirtualHost ruscomap.myserver:80>
|
|
|
|
ServerName ruscomap.myserver
|
|
DocumentRoot /var/www/html/leaflet/ruscomap/public
|
|
|
|
ProxyPass / http://127.0.0.1:3000/
|
|
ProxyPassReverse / http://127.0.0.0.1:3000/
|
|
|
|
RewriteEngine on
|
|
#RewriteCond %{HTTP:Upgrade} =websocket
|
|
#RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
|
|
|
|
RewriteCond %{SERVER_NAME} =ruscomap.myserver
|
|
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
|
|
|
```
|
|
|
|
```
|
|
#PORT 80
|
|
<VirtualHost ruscomap.myserver:80>
|
|
|
|
DocumentRoot /var/www/html/leaflet/ruscomap/public
|
|
ServerName ruscomap.myserver
|
|
|
|
ProxyPass / http://localhost:3000/
|
|
ProxyPassReverse / http://localhost:3000/
|
|
|
|
RewriteEngine on
|
|
RewriteCond %{HTTP:Upgrade} =websocket
|
|
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
|
|
|
|
RewriteCond %{SERVER_NAME} =ruscomap.myserver
|
|
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
|
</VirtualHost>
|
|
|
|
#443
|
|
DocumentRoot /var/www/html/leaflet/ruscomap/public
|
|
ServerName ruscomap.myserver
|
|
|
|
#Protocols h2 http/2
|
|
|
|
ProxyPass / http://localhost:3000/
|
|
ProxyPassReverse / http://localhost:3000/
|
|
|
|
RewriteEngine on
|
|
#RewriteCond %{HTTP:Upgrade} =websocket
|
|
#RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
|
|
|
|
LogFormat "%t %h \"%r\" %>s \"%{User-Agent}i\"" custom
|
|
|
|
ErrorLog ${APACHE_LOG_DIR}/ruscomap.log
|
|
CustomLog ${APACHE_LOG_DIR}/ruscomap-access.log custom
|
|
|
|
SSLEngine on
|
|
SSLCertificateFile /etc/letsencrypt/live/ruscomap.myserver/fullchain.pem
|
|
SSLCertificateKeyFile /etc/letsencrypt/live/ruscomap.amyserver/privkey.pem
|
|
|
|
# HSTS una settimana 604800, per settare un anno: max-age=31536000
|
|
#Header always set Strict-Transport-Security "max-age=1,; includeSubDomain>
|
|
|
|
</VirtualHost>
|
|
|
|
```
|
|
##### restarta apache
|
|
```
|
|
sudo systemctl restart apache2.service
|
|
sudo systemctl status apache2.service
|
|
|
|
```
|
|
##### Debug
|
|
```
|
|
#### If
|
|
Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration
|
|
#### Then
|
|
sudo a2enmod proxy_http
|
|
```
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
|
|
|
# ISTRUZIONI ADMIN
|
|
|
|
#### Script per cancellare tutti i record della table "markers" più vecchi di 24h (automatico)
|
|
|
|
Si trova in [<code>/var/www/html/leaflet/ruscomap/script/pulisci_vecchio_rusco.sh</code>](script/pulisci_vecchio_rusco.sh)
|
|
|
|
##### Imposta lo script su cron per essere eseguito ogni 24h
|
|
|
|
```
|
|
# Per eseguire tutti i giorni a mezzanotte lo script che elimina tutti i marker più vecchi di 24h:
|
|
|
|
# Entra in modalità edit su cron:
|
|
crontab -e
|
|
|
|
# Edita il file aggiungendo la riga:
|
|
0 0 * * * /var/www/html/leaflet/ruscomap/script/pulisci_vecchio_rusco.sh
|
|
|
|
# Assicurati che lo script abbia i permessi di esecuzione:
|
|
ls -l /var/www/html/leaflet/ruscomap/script/pulisci_vecchio_rusco.sh
|
|
|
|
# Se mancano, impostali:
|
|
chmod +x /var/www/html/leaflet/ruscomap/script/pulisci_vecchio_rusco.sh
|
|
```
|
|
|
|
#### Script per cancellare tutti i record della table "markers" più vecchi di 24h (manuale)
|
|
|
|
Si trova in [<code>/var/www/html/leaflet/ruscomap/script/pulisci_manualmente_vecchio_rusco.sh</code>](script/pulisci_manualmente_vecchio_rusco.sh)
|
|
|
|
#### Script per aggiornare ruscomap
|
|
|
|
Si trova in [<code>/var/www/html/leaflet/ruscomap/script/AggiornaRuscoMap.sh</code>](script/AggiornaRuscoMap.sh)
|
|
|
|
#### Script per cancellare tutti i record della table "markers"
|
|
|
|
Si trova in [<code>/var/www/html/leaflet/ruscomap/script/delete_rusco.sh</code>](script/delete_rusco.sh)
|
|
|
|
#### Cancella un singolo 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';
|
|
``` |