6.4 KiB
Tokens
Plik opisuje model pracy z tokenami w launcherze.
Zrodlo prawdy
Sa dwa miejsca, w ktorych moga byc zapisane dane dostepowe:
- remote URL w repo, na przyklad
http://u1:SECRET@host/org/repo.git - lokalny plik
~/dev/workspace/rv/tokens/tokens.json
tokens scan tylko porownuje oba miejsca i niczego nie zapisuje.
tokens sync remote r1 czyta remote r1 i zapisuje jego dane w
tokens.json.
tokens sync store r1 zapisuje rekord r1 z tokens.json do git remote
r1.
tokens update r1 nie synchronizuje sekretu; tylko pobiera z API metadane
tokenu: valid, scope, org_perm i repo_perm.
W podstawowym flow tokens.json synchronizujemy z repo rv-launcher. Remoty
kart pracy i repo odpowiedzi sa generowane jako pochodne konfiguracji launchera,
nie jako osobne zrodla prawdy dla tokenow.
Format tokens.json
Aktualny format to version: 3. Glownym rekordem jest remote-token. Pole
id jest obowiazkowe i musi byc takie samo jak nazwa git remote, np. r1
albo r1a.
{
"version": 3,
"tokens": [
{
"id": "r1",
"value": "SECRET",
"server": {
"type": "gitea",
"endpoint": "http://77.90.8.171:3001",
"scheme": "http",
"host": "77.90.8.171",
"port": 3001
},
"user": "u1",
"org": "edu-tools",
"repo": "rv-launcher",
"valid": "forever",
"scope": {
"a": "-",
"A": "-",
"i": "-",
"m": "-",
"n": "-",
"o": "-",
"p": "-",
"r": "w",
"u": "-"
},
"org_perm": {
"o": "+",
"a": "+",
"w": "+",
"r": "+",
"c": "+"
},
"repo_perm": {
"o": "+",
"a": "+",
"w": "+",
"r": "+"
}
}
]
}
Schemat JSON jest w pliku doc/tokens.schema.json.
Pola
Pola synchronizowane z remote URL-a:
id- nazwa git remote, np.r1; to jest klucz rekordu wtokens.jsonserver.endpoint- endpoint serwera, na przykladhttp://77.90.8.171:3001server.type- typ serwera, na przykladgitea,github,gitlab,unknownuser- login z URL-a, czyli lewa stronahttp://u1:SECRET@...value- sekret tokenaorg- organizacja z URL-arepo- repo z URL-a
Pola wzbogacane przez API przy tokens update r1:
valid-forever, dataexpires_at,invalid,?albo!scope- mapa scope tokenaorg_perm- mapa praw w organizacjirepo_perm- mapa praw w repo
Porownanie
Porownanie z git remote -v jest robione po:
server.endpoint + id + user + value + org + repo
Znacznik w kolumnie token_ref:
*- remote itokens.jsonsa zgodneR- wpis istnieje tylko w remote URL-uS- wpis istnieje tylko wtokens.json!- remote itokens.jsonsa zgodne, ale zapisany token jestinvalidalbo ma blad walidacji
Bez zgodnego wpisu kolumny valid, scope, org i repo w raporcie maja
wartosc ?, bo launcher nie pokazuje metadanych API dla niesparowanych wpisow.
Uprawnienia
W tokens.json uprawnienia sa zapisane jako mapy klucz-wartosc. W tabeli CLI sa
pokazywane skrocone maski.
Naglowki masek:
scope:aAimnopruorg:oawrc-repo:oawr--
Kategorie scope:
a- activitypubA- admini- issuem- miscn- notificationo- organizationp- packager- repositoryu- user
Znaki w scope:
w- read/writer- read-- no access?- nie wczytano!- blad wczytania
Kategorie org_perm:
o- ownera- adminw- writer- readc- create repository
Kategorie repo_perm:
o- ownera- adminw- writer- read
Znaki w org_perm i repo_perm:
+- flaga wlaczona-- flaga wylaczona?- nie wczytano!- blad wczytania
Komendy
tokens scan
Read-only. Czyta remote URL-e i tokens.json, a potem wypisuje tabele
tokens. Nie tworzy i nie modyfikuje tokens.json.
./rvctl tokens scan
./rvctl tokens scan --repo ~/dev/workspace/rv/series/inf/03
tokens sync remote REMOTE_ID
Kopiuje dane dostepowe z git remote do tokens.json. Nie pobiera metadanych z
API. Bez --repo czyta repo zawierajace rvctl.
./rvctl tokens sync remote r1
./rvctl tokens sync remote r1 --repo ~/dev/workspace/rv/tools/rv-launcher
tokens update REMOTE_ID
Pobiera z API metadane dla rekordu REMOTE_ID juz zapisanego w tokens.json.
Nie zmienia git remote URL-a i nie kopiuje sekretu z remote.
./rvctl tokens update r1
./rvctl tokens update r1 --dry-run
tokens sync store REMOTE_ID
Zapisuje dane z rekordu REMOTE_ID w tokens.json do git remote o tej samej
nazwie. Bez --repo zapisuje do repo zawierajacego rvctl.
./rvctl tokens sync store r1 --repo ~/dev/workspace/rv/series/inf/03
./rvctl tokens sync store r1 --repo PATH --replace
tokens remove store|remote|both REMOTE_ID
Usuwa rekord REMOTE_ID z tokens.json, git remote albo oba miejsca.
Domyslnym repo dla remote i both jest repo, w ktorym lezy rvctl. Inne
repo mozna wskazac przez --repo PATH.
./rvctl tokens remove store r1
./rvctl tokens remove remote r1
./rvctl tokens remove both r1
./rvctl tokens remove remote r1 --repo ~/dev/workspace/rv/series/inf/03
Przelaczniki:
--server ENDPOINT- rozroznia rekord wtokens.json, jezeli ten samidwystepuje dla wielu serwerow--repo PATH- repo, z ktorego usuwany jest git remote--dry-run- pokazuje plan bez usuwania
tokens read
Pokazuje zawartosc tokens.json.
./rvctl tokens read
./rvctl tokens read --server http://77.90.8.171:3001
./rvctl tokens read --show-secrets
tokens add
Dodaje pusty szkielet rekordu do tokens.json. REMOTE_ID musi odpowiadac
nazwie git remote.
./rvctl tokens add r1
./rvctl tokens add r1 --server http://77.90.8.171:3001 --user u1 --org edu-tools --repo rv-launcher
tokens sync store r1 nie uzyje pustego tokena. Najpierw trzeba uzupelnic
value i user.
tokens stats
Pokazuje kontekst, tabele tokens i podsumowanie statusow endpointow.
./rvctl tokens stats --repo ~/dev/workspace/rv/series/inf/03
Komendy zgodnosci
Stare komendy nadal dzialaja, ale sa mniej jednoznaczne:
./rvctl tokens update --from remotes --repo PATH
./rvctl tokens update --from store --repo PATH --remote r1 --server http://77.90.8.171:3001
./rvctl tokens write --repo PATH --remote r1 --server http://77.90.8.171:3001