• v3.0.0 06d9afb8a1

    v3.0.0
    All checks were successful
    Auto Release on version bump / release (push) Successful in 10s
    Stable

    Ghost released this 2026-10-11 16:03:49 +02:00 | 5 commits to main since this release

    Changed

    • Token per istanza: EG_FORGEJO_UPDATER_TOKENS in wp-config.php, mappa https://host[:porta] → token. Più istanze Forgejo/Gitea insieme senza configurazione per plugin: l'istanza di ogni plugin si ricava dall'URL nell'header. Chiavi normalizzate (schema https obbligatorio, host minuscolo, percorso e slash ignorati, porta 443 implicita); voci non valide scartate e contate nel pannello.
    • Il token va solo alla sua istanza (confronto esatto di schema, host e porta) e solo con le richieste dell'updater: le chiamate API lo prendono da EG_Forgejo_Updater_API::request_args(); il filtro http_request_args lo allega solo agli URL dei pacchetti scelti dall'updater (download in cache dei plugin gestiti, o quello in installazione via EG_Forgejo_Updater::allow_package()), e con il token spegne i redirect.
    • Prefissi = slug completo: eg_fu_* → eg_forgejo_updater_* (transient, azioni admin_post, nonce, parametri URL, campi), EG_FU_* → EG_FORGEJO_UPDATER_*, classi EG_Forgejo_API/EG_Forgejo_Admin → EG_Forgejo_Updater_API/EG_Forgejo_Updater_Admin con i file rinominati.
    • Riquadro della pagina: istanze con token (solo l'indirizzo), istanze dei plugin gestiti senza token, voci scartate, promemoria finché FORGEJO_ACCESS_TOKEN è definita.
    • Footer della pagina negli slot nativi (admin_footer_text, update_footer a priorità 20), come negli altri plugin eg-*. "Documentazione" punta al repo: le pagine /plugin/eg-forgejo-updater/ e /en/plugins/eg-forgejo-updater/ non esistono.
    • readme.txt riscritto per la directory: niente confronto con Git Updater, descrizione e FAQ aggiornate, changelog solo della linea 3.x; il resto in changelog.txt (voci della 2.10.0 tradotte in inglese). Description dell'header corretta (diceva "falls back to tags").
    • Il form di installazione dice che un repository privato richiede un token per la sua istanza (prima chiedeva un repository "pubblico").

    Removed

    • FORGEJO_ACCESS_TOKEN, FORGEJO_BASE_URL e il formato breve owner/repo nell'header. ⚠️ FORGEJO_BASE_URL resta in wp-config.php di produzione: la usa eg-forgejo-registration. Il pannello avvisa solo per FORGEJO_ACCESS_TOKEN.

    Added

    • maybe_upgrade(): al cambio di versione cancella i transient eg_fu_release_*/eg_fu_wporg_* della 2.x; option eg_forgejo_updater_version. uninstall.php pulisce nomi vecchi e nuovi.

    Why

    • Fino alla 2.13.0 il token partiva verso tutti gli host dei plugin gestiti, compreso quello dell'updater stesso: chi lo avesse installato con il token della propria istanza l'avrebbe mandato anche a git.emanuelegori.uno. In più build_request_args() lo allegava a ogni chiamata API senza guardare l'host, e il filtro globale lo regalava alle richieste di altri plugin verso la stessa istanza (eg-repo-card). WordPress (Requests) rimanda gli header anche sui redirect cross-host.
    • Git Updater gestisce più istanze con un token globale più token per repo nel database: i repo di una seconda istanza senza token proprio ricevono quello globale.

    Verified

    • Routing con token finti e richieste intercettate: token giusto per host e porta; nessun token a host.evil.com, http, porta diversa, host sconosciuti; richieste API con redirection=0; filtro: token solo su pacchetto gestito e pacchetto in installazione, mai su altre richieste allo stesso host.
    • Token vero in mappa: gli 11 plugin con Gitea Plugin URI, privati compresi, rispondono dalla release.
    • Rendering della pagina in it_IT con il .mo nuovo; il token non compare nel markup.
    • Form, handler admin_post e nonce corrispondono; hook nuovi solo quelli del footer.
    • make-pot, msgfmt --check (104 tradotte, 3 non tradotte ammesse).
    Downloads