Ti trovi qui: start » it » Documentazione interna » Estensioni DokuWiki (WvdS) » ADO-Git » Concetti

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).

Un mount rende un repository raggiungibile, non visibile. Esso viene reso soltanto dove un autore colloca la marcatura {{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.

Le regole stanno in un blocco gestito del file 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_time in server/php/php.ini vale 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

it/wiki/dwe/wkdoadogit/concepts.txt · Ultima modifica: da 0.0.0.0