Green Agritainment (sito): accessi e procedure
Pagina operativa per chi deve lavorare sul sito del progetto Erasmus+ Green Agritainment (2024-1-IE01-KA220-VET-000254134). Serve a non ripartire da zero: qui c'è come si accede, cosa c'è dentro e quali sono le trappole già scoperte.
Cronistoria, cosa era stato promesso nel formulario e stato di avanzamento: Green Agritainment (progetto): cronistoria e stato.
Registro macchina: BigQuery isicnv_properties.access_howto, capability prop.website.greenagritainment.com e ccroute.green_*.
Accesso: si passa dalle route CC, non da SSH
Il sito sta su hosting condiviso, utente bsgvwjte (non isicnv). Docroot reale:
/home1/bsgvwjte/greenagritainment.com/
Non c'è accesso SSH. Si lavora con le route del Command Center, chiave fb17164b09be4b32bfd082ccd54ff651:
| Route | Uso |
|---|---|
GET /green/fs-read?key=..&path=.. |
legge un file dal docroot |
POST /green/fs-write |
scrive un file testuale (JSON: path, content) |
GET /green/fs-list?key=..&path=.. |
elenca una cartella |
POST /green/db |
query sul DB WordPress (JSON: query, mode=select oppure exec) |
GET /green/wp/pages?key=.. |
elenco pagine |
Base: https://sheets-connector-424757051842.europe-west1.run.app
Le tre trappole che fanno perdere ore
1. I file binari non passano da fs-write
/green/fs-write non accetta content_b64: risponde 500. Per caricare PDF, PPTX, DOCX o immagini serve uno script PHP monouso:
- genera un token alfanumerico
- con fs-write deposita
cc-up-TOKEN.phpche fabase64_decode(file_get_contents('php://input')), scrive sottowp-content/uploads/agritainment-library/e restituisce{ok, bytes, md5} - POST
--data-binarydel file base64, con User-Agent browser completo (ModSecurity blocca gli UA vuoti) - confronta md5 locale e remoto
- neutralizza lo script con
<?php http_response_code(410); exit;
Verificato su oltre 130 file, fino a 96 MB, zero mismatch.
2. I contenuti Elementor non stanno in post_content
Stanno in wp_postmeta._elementor_data, come JSON. Chi cerca un link rotto interrogando post_content non trova niente e conclude che il link non esiste.
Per modificare una pagina: leggi il JSON via /green/db, modificalo, poi deposita uno script cc-fix-TOKEN.php che fa require wp-load.php e:
update_post_meta($pid,'_elementor_data', wp_slash($json)); delete_post_meta($pid,'_elementor_element_cache'); delete_post_meta($pid,'_elementor_css'); \Elementor\Plugin::$instance->files_manager->clear_cache();
Senza le due delete_post_meta e il clear_cache la pagina continua a mostrare la versione vecchia. Fai sempre un backup del JSON prima. Neutralizza lo script dopo l'uso.
3. Il multilingua è GTranslate, non ci sono traduzioni umane
Il sito usa GTranslate: traduzione automatica lato client. Nel database non esiste nessuna traduzione: gli errori segnalati dai partner non sono correggibili "cercando la stringa sbagliata".
Si correggono in due modi: intervenendo sul testo inglese sorgente, oppure marcando i termini come non traducibili. Il marcatore che funziona è questo, con gli spazi e la punteggiatura dentro lo span:
agritainment.
Se metti lo span "nudo", GTranslate assorbe gli spazi ai bordi e incolla le parole ("agritainmentAcesta"). Senza marcatore, Google traduce sistematicamente agritainment in agrotainment, cioè sbaglia il nome del progetto.
Cosa c'è sul sito
Pagine WordPress chiave: Home 269, Results 1175, Partners 1177, Materiale didattico 1730; choose-your-module ENG 1568, ITA 1537, BG 1584, RO 1750, GR 1754.
Pagine statiche nel docroot, tutte in cinque lingue con parametro ?lang=:
quiz-final.html— quiz finale, 6 moduli, certificator3-tool.html+r3-api.php— strumento psicometrico R3, 40 item, grafico radarcourse-materials.html— materiali filtrabili per modulo e linguaproject-library.html— 40 documenti di progettoevents.html,meetings.html,webinar.html
Navigazione del corso: mu-plugin wp-content/mu-plugins/agri-course-nav.php, che inietta indice del modulo, precedente/successiva e griglia dei 6 moduli su tutte le 37 pagine-lezione. Si disattiva rimuovendo il file.
File scaricabili: wp-content/uploads/agritainment-library/, sottocartelle mod5, mod6, transcripts, library, media.
I video sono su sei canali YouTube diversi
Non esiste un canale unico "Agritainment". Un modulo per partner:
| Modulo | Canale |
|---|---|
| 1 Irlanda | Shannon College of Hotel Management |
| 2 Italia | Progetti Erasmus |
| 3 Cipro | Digital Media Stando |
| 4 Romania | T.H.E. Management |
| 5 Bulgaria | BALKAN ACADEMY |
| 6 Grecia | George Konsoulas |
| Webinar | BALKAN ACADEMY |
Su BALKAN ACADEMY (UCctNyYRevi30IgYEXji_FnQ) abbiamo il token token-workspace-full-balcanicacademy.json, che però ha solo scope di lettura: le chiamate a captions rispondono 403. Per caricare sottotitoli serve una nuova autorizzazione con balcanicacademy@gmail.com tramite /oauth/start-any?account=yt-agritainment&service=youtube_write.
Materiali su Drive
- Cartella Agritainment su Drive di isicnv@gmail.com
- Formulario di candidatura KA220-VET-E082690D (94 pagine): la fonte autorevole di cosa era stato promesso
- Slides Video Corso Agritainment (Modulo 5, EN e BG)
- Risultati del quiz
- Archivio completo Teams:
Teams tutto il contenuto.zip, 17,3 GB, nella cartella madre. Non entra sul disco della VM: leggerne lindice con richieste HTTP Range sullAPI Drive (EOCD ZIP64 in coda) ed estrarre i singoli file per offset conzlib.decompress(data,-15).
Controllo automatico dei link
Agente /home/claudeuser/agri_watch/linkwatch.py sulla VM, in cron ogni giorno alle 6:17 (watch_cron.sh, con lock). Fa il crawl del sito, verifica ogni link e confronta con la scansione precedente distinguendo nuovi rotti da risolti. Notifica via sovra/avvisa.py: informativo se ci sono rotti, rumore se e tutto a posto. Ultimo esito in linkwatch_last.json.
Documentazione
- Log completo degli interventi: Google Doc
- Registro delle traduzioni, con inglese e lingua affiancati riga per riga: Google Doc
Avvertenza sul lavoro in parallelo
Su questo sito hanno già lavorato due chat contemporaneamente, sovrascrivendosi token e file. Prima di scrivere un file che esiste già, rileggilo dal server e applica solo il tuo delta.