Docs · Lokální API a klíče

V sekci STYGION Keystone

Lokální API a klíče

Všechno, co mod umí, pro programy, za klíči, které nesou jen to, cos jim dal.

Aktualizováno

Lokální API a klíče

Keystone odpovídá na HTTP na 127.0.0.1:25586. Panel je jeden volající, tvoje vlastní nástroje můžou být další.

[api]
enabled = true
address = "127.0.0.1"
port = 25586
reachable-at = ""     # od 0.1.1

Loopback je výchozí a je to ta bezpečná volba. Cokoliv jiného je dostupné každému, kdo dosáhne na ten stroj, a API umí všechno, co umí mod. Když ho potřebuješ z jiného stroje, dej ho za SSH tunel, ne na adresu do světa.

reachable-at neřídí, kde se poslouchá — řídí, jakou adresu si mod napíše do odkazu na editor a do openapi.json. Podrobně na stránce Panel.

Klíče

/keystone key new <jméno> <scope> [scope ...]
/keystone key list
/keystone key revoke <id>

Klíč se vypíše jednou, když vznikne, a nikdy víc — stejně jako člověk vidí heslo. Každý klíč má jméno, takže auditní stopa říká, kdo co udělal, a limit na minutu.

Authorization: Bearer <klíč> u každého volání. Bez klíče, nebo s klíčem bez toho scopu, přijde 404, ne 403: route, která řekne „zakázáno", právě nepřihlášenému volajícímu prozradila, že existuje.

Scopy

Klíč nese jen to, co jsi mu dal. Žádost o scope, za kterým na tomhle serveru nic není, se odmítne — a v tom odmítnutí je vypsané, co existuje, takže se překlep chytí při výrobě klíče, ne až při použití.

Scope Dosáhne na
status.read Jestli server běží, kdo je na něm, jak mu je.
players.read Lidi — a taky na to, které herní účty má propojený jeden Discord účet.
permissions.read · permissions.write Skupiny a co smí.
operations.read · operations.run Rozvrh a spuštění ručně.
settings.read · settings.write Každé nastavení.
console.read Log serveru.
chat.read Co se říká.
events.read Živý proud (níž).
audit.read Kdo co změnil.
keys.read Které klíče existují — nikdy jejich tajemství.
backup.read · backup.restore Zálohy a jejich vrácení.
perks.read · perks.write Co si kdo zasloužil.
assistant.read · assistant.write Asistent ve hře.
server.read Stroj pod tím.

Dej klíči tu nejužší sadu, která odvede práci. Monitorovací skript chce status.read a nic dalšího.

Co tam je

GET /v1/openapi.json vypíše každou cestu, kterou tenhle server doopravdy má — mod si ten dokument píše ze svých vlastních rout, takže se nemůže mýlit v tom, co existuje. Když chceš seznam, ptej se serveru, ne téhle stránky.

Zhruba: /v1/status, /v1/players (a /v1/players/group, /v1/players/perk, /v1/players/check, /v1/players/grants), /v1/groups, /v1/operations (/run, /cancel, /history), /v1/backups (/restore), /v1/settings (/history, /rollback), /v1/console, /v1/chat, /v1/events, /v1/audit, /v1/keys, /v1/bans, /v1/tickets, /v1/votes, /v1/skins, /v1/progress, /v1/metrics (/history), /v1/bench, /v1/catalog, /v1/entities, /v1/gate (/maintenance), /v1/accounts, /v1/discord (/links), /v1/assistant/* a /v1/reload.

Živý proud

GET /v1/events se scopem events.read drží spojení otevřené a píše do něj události, jak se dějí — díky tomu je panel panel, a ne stránka, kterou musíš obnovovat. Ověřuje se stejně jako všechno ostatní a bez klíče odpovídá 404.

Addony na JVM

Když stavíš addon v Javě, nemluvíš přes HTTP — kompiluješ proti keystone-api, který jede uvnitř toho samého jaru (META-INF/jarjar/) a nemá žádné vlastní závislosti, ani logovací. Registruje se přes něj vlastní modul, příkaz, oprávnění nebo zdroj hodností.

Co se zapisuje

Každá změna přes API je auditní řádek: kdo, co, kdy. Citlivé příkazy se z něj, z konzole i z logu maskují — vlastní automaticky, cizí ty, které pojmenuješ v keystone.mask-commands.

Pomohla vám tahle stránka?

Otevře panel zpětné vazby s touhle stránkou v příloze. Přistane do jedné fronty se vším ostatním.