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. 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" https://ruscomap.accol.li
Find a file
2024-12-19 23:48:58 +01:00
public Update mobile usage 2024-09-21 02:59:58 +02:00
script pulizie 2024-12-19 23:48:58 +01:00
server up 2024-09-27 02:43:56 +02:00
.gitignore lint and format client js 2024-09-21 00:36:00 +02:00
.nvmrc Use newer node version 2024-09-21 01:31:11 +02:00
compose.yml lint and format client js 2024-09-21 00:36:00 +02:00
initDb.sql lint init db 2024-09-21 00:13:00 +02:00
README.md up 2024-11-24 14:43:46 +01:00
ruscodb add: tutt'cos' 2024-06-30 22:56:19 +02:00
screenRuscomap.png add screenshot 2024-11-02 13:01:12 +01:00
tutorial.md update tutorial 2024-09-21 00:08:03 +02:00

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.
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"

versione 0.1

  • Aggiungere il marker (visivo) al clic di inserimento marker [commit f611832592]
  • Al momento si possono aggiungere infiniti marker (temporanei), da fixare [commit 0fba9efe99]

versione 0.2

  • Cancellare i marker creati > di 24h (sia record db che img) [commit 78d4b6b216]
  • Rimuovere pezzi di codice js per cancellare marker creati > di 24h. [commit 971f1a0672]
  • Scrivere script bash (delete_rusco.sh) che cancella tutti marker [commit 8a5260d62f]
  • Scrivere script bash (pulisci_vecchio_rusco.sh) che cancella tutti marker più vecchi di 24h (automatico) [commit 8a5260d62f]
  • Come mettere nel cron del server lo script che cancella i marker più vecchi di 24h [commit 5dc0c22eae]
  • Scrivere script bash (pulisci_manualmente_vecchio_rusco.sh) che cancella tutti marker più vecchi di 24h (manuale) [commit 8a5260d62f]
  • pushare e spostare script in cartella /script [commit 8a5260d62f]

versione 0.3

versione 0.4

  • 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]
  • 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]
  • Eliminare visualizzazione del marker temporaneo se viene cliccata la X rossa o aggiunto un nuovo marker (non temp) [commit f9868974c6]

versione 0.5

  • Mostrare data/ora pubblicazione del marker per far capire al visitatore quanto tempo fa è stato avvistato il rusco [commit c811b4eb4e]
  • Eliminare dati e immagine da marker temporaneo (lasciare solo descrizione) [commit 76032e6329]

versione 0.6

versione 0.7

versione 0.8

Commit a casa di cek [commit 89019f168c]

  • 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]
  • 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]

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
  • Standardizzare con le varialibili del default.json gli script [commit a57738eddc]
  • Script per inserire i posti dove fare la ricicla a bologna (riciclabologna.vado.li) [commit 03d7e1529b]
  • 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




ISTRUZIONI INSTALLAZIONE

Installazione dipendenze

Installa mariadb, jq e npm

sudo apt update && sudo apt install mariadb jq npm

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
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

npm i express leaflet leaflet.locatecontrol multer mysql config

Configura ruscomap

Personalizza il file di configurazione db

nano /var/www/html/leaflet/ruscomap/server/config/default.json

Apri porta sul firewall

sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

Cre l'utente

sudo adduser ruscone

Crea il servzio

nano /etc/systemd/system/ruscomap.service

[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

systemctl daemon-reload

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

nano /etc/apache2/sites-enabled/ruscomap.conf

#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

ISTRUZIONI ADMIN

Script per cancellare tutti i record della table "markers" più vecchi di 24h (automatico)

Si trova in /var/www/html/leaflet/ruscomap/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 /var/www/html/leaflet/ruscomap/script/pulisci_manualmente_vecchio_rusco.sh

Script per aggiornare ruscomap

Si trova in /var/www/html/leaflet/ruscomap/script/AggiornaRuscoMap.sh

Script per cancellare tutti i record della table "markers"

Si trova in /var/www/html/leaflet/ruscomap/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';