Concetti
Come funziona wkdoadogit: che cos'è un mount, da che cosa dipende la visibilità di un repository e dove corrono i limiti del plugin. Ciò che volete fare sta su ADO-Git; ciò che volete consultare, nel Riferimento tecnico.
Scopo
Il plugin porta nel wiki i repository git ospitati in Azure DevOps: consultazione dei repository, resa del codice sorgente, modifica e commit, e i comandi git clone, pull e push attraverso un proxy — il tutto con un solo account di servizio, così che lettori e redattori non abbiano bisogno di una licenza propria. Il confine di autorizzazione sono i permessi nativi di DokuWiki, non una licenza di Azure DevOps.
A chi si rivolge: ad amministratori e redattori che vogliono rendere visibile o modificabile nel wiki il codice presente in Azure DevOps.
Tre atti che il plugin non compie da solo
Un repository diventa visibile solo quando sono stati compiuti tre atti distinti. Nessuno di essi innesca il successivo.
| Atto | Dove | Che cosa nasce |
|---|---|---|
| connessione | do=wkdoado su una pagina del progetto DWDO | la descrizione del server ADO con chiave e riferimento al segreto |
| mount | Amministrazione > Mount dei repository ADO-Git | il legame repository ↔ spazio dei nomi e i permessi relativi |
| marcatura su una pagina | una qualsiasi pagina interna al progetto DWDO | l'unica resa del repository; il mount non crea alcuna pagina |
L'intera procedura con un esempio è descritta in Mostrare per la prima volta un repository ADO nel wiki.
Mount dei repository
Un mount lega un repository ADO a uno spazio dei nomi di DokuWiki nella forma code:{progetto}:{repository}, per esempio code:dokuwiki-plugins:wkdoadogit. Solo un mount registrato rende un repository raggiungibile; ogni via di accesso — il browser, la resa del codice, il proxy git e il download dell'archivio — verifica i permessi di DokuWiki su quello spazio dei nomi.
Lo spazio dei nomi del mount è virtuale: non vi nasce alcuna pagina wiki. Se il modello contiene il segnaposto {lang}, il mount resta un solo record mentre le regole vengono scritte per ogni lingua indicata nell'impostazione mount_languages (valore predefinito de,en,hr,it,sl).
{{wk:adogit>connessione:progetto:repository}} su una pagina interna a un progetto DWDO (qui sotto {lang}:projects:). Chi registra un mount e poi non vede nulla ha davanti a sé il secondo passo, non un errore.
Livello di visibilità e ACL di DokuWiki
Il livello del mount è l'unico comando per la visibilità. I permessi vengono letti di nuovo a ogni richiesta, perciò un cambio di livello ha effetto immediato. Le regole nascono per lo spazio dei nomi e per spazio-dei-nomi:*; gli amministratori possono sempre agire da superutente.
| Livello | @ALL (anonimi) | @user (autenticati) | @wvds (sviluppatori) | @wvdse (redattori) | gruppi di ruolo del progetto |
|---|---|---|---|---|---|
private | 0 | – | – | 8 | – |
readonly | 0 | 2 | 2 | 8 | – |
showcase | 1 | – | – | 8 | – |
library | 1 | 2 | – | 8 | – |
public | 2 | – | – | 8 | – |
team | 0 | – | – | 8 | readers 1, contributors 2, maintainers 8 |
I gruppi di ruolo del livello team portano il roleprefix di wkdocore e la chiave del progetto, per esempio @dwdo_dwplugins_maintainers.
I livelli showcase e library separano due diritti che public concede insieme: la consultazione nel browser e il prelievo di una copia. Con showcase chiunque può leggere e nessuno può clonare; con library chiunque può leggere e qualsiasi account autenticato può clonare. Il confine è l'autenticazione, non il pubblico — chi preleva una copia è un account che si può nominare in seguito.
Un numero, due letture
Il numero scritto è al tempo stesso un permesso di DokuWiki e una capacità di questo pacchetto.
| Livello | In questo plugin | In DokuWiki |
|---|---|---|
| 1 | consultazione e resa nel wiki | lettura di una pagina |
| 2 | clone, fetch e download dell'archivio ZIP | modifica di una pagina esistente |
| 4 | push in refs/heads/users/<login>/ | creazione di una pagina |
| 8 | push senza restrizioni, modifica e commit dal wiki | caricamento di file |
La seconda colonna spiega perché un mount su uno spazio dei nomi con pagine wiki reali non è innocuo: il livello public vi apre l'editor delle pagine ai visitatori anonimi. Per questo l'anteprima della procedura conta le pagine già presenti nello spazio dei nomi.
conf/acl.auth.php, fra le righe # BEGIN wkdoadogit-managed e # END wkdoadogit-managed. Non modificare quel blocco a mano — impostare invece il livello del mount. Lo scrittore sostituisce esclusivamente quel blocco (in modo atomico, con file temporaneo, rinomina e blocco) e lascia intatte tutte le altre regole, comprese quelle mantenute a mano o tramite l'amministrazione acl del nucleo. Un mount rimosso perde le sue regole e lo spazio dei nomi torna alle regole predefinite del sito.
Secondo fattore: due categorie, due gradi
Quando Identity è installato, il ponte do=wkdoadogit_stepup richiede una prova.
| Categoria | Requisito | Vale per |
|---|---|---|
mount-admin | MFA_ANY | creare, modificare e rimuovere mount, e registrare connessioni Subversion |
token-issue | AUTHENTICATED, innalzabile dall'installazione | rilasciare un token personale |
I due gradi differiscono perché differiscono gli atti: un mount decide chi vede quale repository, mentre un token personale riguarda solo il proprio account e serve più volte al giorno.
La verifica si aggiunge ai permessi di DokuWiki, non li sostituisce mai. Senza wkidentity il pacchetto si comporta come prima. Il proxy git non vi è soggetto: funziona senza sessione e non può condurre una richiesta interattiva, perciò il requisito è legato al rilascio del token e non a ogni richiesta che esso poi accompagna.
Limiti e avvertenze
- La registrazione dei mount e la scrittura dei permessi sono riservate agli amministratori; i token personali sono in autogestione.
- Nessun permesso più fine per sottocartella: il livello vale per l'intero mount.
- Le schede Branches e Tags nell'intestazione del browser sono visibili ma inattive. Il ramo mostrato si sceglie nella marcatura; creare un ramo o un tag è realizzato, passare a un altro nell'interfaccia no.
- La marcatura
{{wk:adogit>…}}non funziona fuori dalla radice dei progetti, perché la connessione viene risolta attraverso il progetto DWDO della pagina.{{source>ado:…}}dispone in più della via attraverso lo spazio dei nomi del mount. - Ogni incorporamento è una chiamata di rete, limitata dai tempi massimi e dal tetto di byte in
wkdoado. - Il proxy git si autentica presso Azure DevOps sempre con un solo PAT di servizio; pushedBy è quindi l'account di servizio, mentre l'autore del commit resta l'utente del wiki.
max_execution_timeinserver/php/php.inivale 30 secondi: irrilevante per le dimensioni di repository verificate, il limite successivo per quelli molto grandi.- Un rifiuto è volutamente laconico: un repository non montato, una connessione sconosciuta e un permesso mancante sono a stento distinguibili dall'esterno.
- La fonte vincolante della corrispondenza dei livelli è
Domain/MountAclWriter::TIERS. Quando cambia, aggiornare anche questa pagina e il file README del plugin.
Argomenti correlati
- ADO-Git — punto di ingresso e operazioni frequenti
- Riferimento tecnico — gestione dei mount, marcatura, azioni, token, impostazioni
- Diagnostica — sintomi con causa e rimedio
- Origine del vocabolario dei livelli — perché l'elenco dei livelli sta in un solo punto
- Messa in servizio — dalla connessione al primo mount
- Identity — la garanzia su cui il secondo fattore qui si appoggia