public | ||
script | ||
server | ||
.gitignore | ||
.nvmrc | ||
compose.yml | ||
initDb.sql | ||
README.md | ||
ruscodb | ||
screenRuscomap.png | ||
tutorial.md |
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
- Riformattare visualizzazione form inserimento marker per mobile [commit 9d5a7f8b71 & parents]
- Milgiorare css del form inserimento dati marker [commit 9d5a7f8b71 & parents]
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
- Cancellare dati file picker del form[commit 9b8c376c53]
- Pop-Up all'apertura di ruscomap con descrizione breve [commit 4dac8709ca]
versione 0.7
- Scrivere query per funzione di ricerca [commit 08b550ed89]
- Inserire la posizione del marker tramite il gps [commit a57738eddc]
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';