A Teletype Games wikije telneten: élőben böngészi ezt a wikit a JSON API-ján át, az oldalakat lapozható, kereshető BBS-menükbe rendezi. Szupervizor-belépéssel a privát oldalak is megnyílnak.
Elérhető:
teletypegames.org:2325, böngészőben a bbsweb-en, és a TTG Gate BBS-en át
Ruby alkalmazás a rubbs gemre építve, mint a Teletype BBS. Saját repója (bbs/wiki-bbs) és saját stackje van, a wikit az interstack hálózaton olvassa. Egy porton két arca van. A hívás a rubbs BBS::Terminal kérdésével indul: a board legfeljebb 1,5 másodpercig várja a telnetválaszokat, és a 40 oszlopnál szélesebb ablak modern terminál; a 40 oszlop vagy a válasz hiánya (a WiFi-modem mögötti C64 sima TCP-t beszél) Commodore-nak számít. Az 1 a modern arcot, a 2 a C64-et választja, a RETURN elfogadja a tippet.
Teljes képernyős, Norton Commander-stílusú kétpaneles böngésző: balra az oldalfa (útvonal-mélység szerint behúzva), jobbra a kiválasztott oldal ANSI-markdownként. A böngésző maximalizálva nyílik; az F5 / Alt-Enter ablakká alakítja és vissza.
| Billentyű | Művelet |
|---|---|
| Fel / Le | Oldal választása (a jobb panel újratöltődik) |
| Tab | A fókusz az olvasópanelre |
| PgUp / PgDn / Home / End | Az olvasó görgetése |
| F2 | A böngésző újranyitása |
| F5 / Alt-Enter | Ablak / teljes képernyő |
| F8 | A wiki-index frissítése (az oldal-cache-t is üríti) |
| F10 | Menüsor |
| Alt-X / Esc | Kilépés / ablak bezárása |
A *-gal jelölt oldalak privátok (a wikin belépéshez kötöttek); a Wiki > Supervisor login feloldja őket, ugyanez a menüpont zárja vissza. Az egér is működik (xterm SGR), a görgővel együtt.
PETSCII 40×25-ön. Ugyanaz az oldalfa, képernyőnként egy szint, a rubbs számozott kurzoros menüjeként (BBS::Selector): az aloldalas oldal jele >, a privát oldalé *. A CRSR mozgatja a sávot (balra-jobbra lapoz), a beírt szám kijelöl egy oldalt, a RETURN megnyitja vagy egy szinttel lejjebb visz, a Q (vagy ←) visszalép. Egy oldal képernyőnként jelenik meg (RETURN: tovább, Q: vissza), a végén a nyilvános címével. A legfelső szinten az S a szupervizor-belépés, az R újraolvassa az indexet.
A wiki két végpontja (sablonok a themes/ttgwiki2/templates/*.json.twig-ben, oldalak a pages/custom/-ban):
GET /custom/sitemap.json — minden routolható oldal: route, title, modified, updatedAt, tags és private (igaz, ha az oldalnak vagy egy ősének access: site.login van a frontmatterében). Törzs nélkül.GET /custom/page.json?route=/platforms/tic80 — egy oldal a markdown-jával és a html-jével. Privát oldalhoz a wiki SUPERVISOR_PASSWORD-jével egyező token= kell, különben a válasz {"error": "forbidden"}; ismeretlen útvonalra {"error": "not_found"}.Az oldalindex induláskor egyszer töltődik be, és minden munkamenet közösen használja; az F8 (C64-en R) mindenkinek újraolvassa. Ha induláskor a wiki nem válaszol (egy stack-deploy a Gravot is újraindítja), a board akkor is elindul, és 10 másodpercenként újrapróbálja az indexet. Az oldaltörzsek 5 percig cache-ben maradnak.
A zárat a wiki oldala kényszeríti ki: a Grav entrypointja a SUPERVISOR_PASSWORD-öt a site configjába teszi, és a JSON API egyező token nélkül nem adja ki a privát törzseket. A board a WIKI_BBS_SUPERVISOR_PASSWORD-öt küldi tokenként, ezért a kettőnek egyeznie kell; a compose egy változóból köti be mindkettőt.
| Változó | Alapérték | Mire való |
|---|---|---|
BBS_PORT |
2323 |
Telnetport a konténerben |
BBS_MAX_SESSIONS |
100 |
Egyszerre hány hívó (a compose 50-et állít) |
BBS_IDLE |
900 |
Tétlenségi bontás, másodpercben |
WIKI_BBS_URL |
http://localhost:9120 |
A wiki alap-URL-je (a szerveren http://wiki-grav az interstack hálózaton) |
WIKI_BBS_SUPERVISOR_PASSWORD |
üres | Feloldja a privát oldalakat, és API-tokenként megy a wikinek; üresen zárva maradnak |
A kód a házi szerkezetet követi: lib/domain/ (PageModel, WikiRepository, WikiService, SupervisorService, és a WikiBBS, a környezetet olvasó kompozíciós gyökér) és lib/ui/ (UI::Modern, a kétpaneles böngésző; UI::Petscii a Browser-ével). A teljes leírás a repó README-je.
A szolgáltatás és a konténer neve wiki-bbs, a helye /srv/stacks/wiki-bbs, nyilvános portja 2325. A masterre pusholás a Woodpeckerből élesít (RuboCop, compose-ellenőrzés, ci-deploy wiki-bbs); a Grav-ot http://wiki-grav néven éri el, ez a wiki konténerének neve az interstack-en. Az entrypoint induláskor frissíti a rubbs-t. A többi board a BBS-hálózat oldalon van.