Co-authored-by: aider (gemini/gemini-3-pro-preview) <aider@aider.chat> |
||
|---|---|---|
| .env.example | ||
| .gitignore | ||
| LICENSE | ||
| mobilizon_api.sh | ||
| mobilizon_config.sh | ||
| README.md | ||
| refresh_mobilizon_token.sh | ||
| run_health_check.sh | ||
| test_event.sh | ||
Script monitoraggio Mobilizon
Questa repository contiene script per autenticarsi su Mobilizon, rinnovare i token automaticamente e testare l'istanza tramite API GraphQL.
1. Setup Iniziale
Step 1.1: Configurazione Ambiente
Copia il file di esempio e configuralo:
cp .env.example .env
nano .env
Inserisci i valori per CLIENT_ID e CLIENT_SECRET. Se non li hai, vedi lo step successivo.
Configurazione Notifiche (Opzionale):
- ntfy: Se vuoi ricevere notifiche sul telefono quando il token scade o ci sono errori, compila
NTFY_URLnel file.env. - Uptime Kuma: Se vuoi monitorare lo stato del test su una dashboard Kuma, inserisci l'URL di tipo "Push" in
UPTIME_KUMA_URL. Lo script invieràstatus=upse il test passa, ostatus=downcon il motivo dell'errore se fallisce.
Step 1.2: Creare l'app su Mobilizon (se non hai le credenziali)
curl -X POST https://mobilizon.it/apps \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "name=MyCliApp&scope=write:event:create+write:event:update+write:event:delete&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fcallback"
Copia client_id e client_secret dalla risposta e inseriscili nel file .env.
2. Autenticazione (ogni 3 mesi)
Step 2.1: Richiedere il device code
source .env
curl -X POST $INSTANCE/login/device/code \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=$CLIENT_ID&scope=$SCOPE" | jq . > device_response.json
cat device_response.json
Salva il user_code che vedi (esempio: ZIQC-SCPB)
Step 2.2: Autorizzare nel browser
- Apri nel browser:
https://mobilizon.it/login/device - Inserisci il
user_codeottenuto sopra - Accedi con le tue credenziali Mobilizon
- Autorizza l'app
Step 2.3: Ottenere i token da curl
Dopo aver autorizzato nel browser, esegui:
source .env
DEVICE_CODE=$(jq -r '.device_code' device_response.json)
curl -s -X POST $INSTANCE/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET" \
--data-urlencode "device_code=$DEVICE_CODE" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:device_code" | jq . > .mobilizon_tokens.json
cat .mobilizon_tokens.json
Dovresti vedere access_token e refresh_token. ✅
3. Utilizzo Script
Tutti gli script caricano automaticamente la configurazione da .env. Assicurati di dare i permessi di esecuzione agli script:
chmod +x *.sh
Wrapper Principale (Health Check + Test)
Questo è lo script consigliato da eseguire. Verifica prima se il sito risponde, poi esegue il test dell'evento. Se configurato, invia lo stato a Uptime Kuma.
./run_health_check.sh
# Oppure verbose
./run_health_check.sh -v
Rinnovo Token
Rinnova il token di accesso (da eseguire via cron). Se configurato, invia una notifica ntfy in caso di errore (es. token scaduto dopo 3 mesi).
./refresh_mobilizon_token.sh
Test Evento (Manuale)
Crea un evento privato e lo cancella dopo 5 secondi.
./test_event.sh -v
API Generica
Eseguire query GraphQL arbitrarie.
./mobilizon_api.sh '{ loggedPerson { id name } }'
4. Automazione Cron
Rinnovo Token (ogni 12 ore)
0 */12 * * * /path/to/repo/refresh_mobilizon_token.sh >> /path/to/repo/.mobilizon_refresh.log 2>&1
Health Check (ogni ora)
Esegue il test completo e aggiorna Uptime Kuma.
0 * * * * /path/to/repo/run_health_check.sh >> /path/to/repo/.health_check.log 2>&1
5. Struttura Directory
.
├── .env # Configurazione (non committato)
├── .env.example # Template configurazione
├── .gitignore
├── mobilizon_config.sh # Caricatore configurazione e utility
├── refresh_mobilizon_token.sh
├── mobilizon_api.sh
├── test_event.sh
├── run_health_check.sh # Wrapper principale
└── README.md