---
title: TTGWIKI
url: 'https://wiki.teletypegames.org/hu/dos/ttgwiki'
markdown: 'https://wiki.teletypegames.org/hu/dos/ttgwiki.md'
lang: hu
date: '2026-10-14'
description: 'A TTGWIKI ennek a wikinek a nyilvános oldalait olvassa DOS-on (TTGWIKI.EXE, C++, Open Watcom, 8086-os kód, mTCP) és Windows 95-ön vagy újabbon (TTGWIKIW.EXE, Winsock, konzolablakban). Egy DOS-gép nem tud HTTPS-t, ezért ugyanennek a repónak a szerveroldala sima szövegfájlokba exportálja a wikit, és…'
taxonomy:
  tag:
    - howto
---

# TTGWIKI

> A TTGWIKI ennek a wikinek a nyilvános oldalait olvassa DOS-on (`TTGWIKI.EXE`, C++, Open Watcom, 8086-os kód, mTCP) és Windows 95-ön vagy újabbon (`TTGWIKIW.EXE`, Winsock, konzolablakban). Egy DOS-gép nem tud HTTPS-t, ezért ugyanennek a repónak a szerveroldala sima szövegfájlokba exportálja a wikit, és a Teletype Games [FTP-szervere](https://wiki.teletypegames.org/hu/infrastructure/ftp-server) kínálja anonim, csak olvasható FTP-n, a [DOSINST](https://wiki.teletypegames.org/hu/dos/dosinst) programtára mellett.
> 
> Egy oldal akkor töltődik le, amikor elolvassák, és a lemezen marad, így később hálózat nélkül is olvasható; az `F6` mindet letölti. Az export 15 percen belül követi a wikit.

- **Repó:** [git.teletypegames.org/dos/ttgwiki](https://git.teletypegames.org/dos/ttgwiki)
- **Export:** `ftp://ftp.teletypegames.org/WIKI` (anonim, csak olvasható)
- **Telepítés:** `TTGWIKI` és `TTGWIKIW` a [DOSINST](https://wiki.teletypegames.org/hu/dos/dosinst) programtárából, vagy a [kiadások](https://git.teletypegames.org/dos/ttgwiki/releases) közül: DOS: [TTGWIKI-v0.2.0.zip](https://git.teletypegames.org/dos/ttgwiki/releases/download/v0.2.0/TTGWIKI-v0.2.0.zip) · Windows 95 és újabb: [TTGWIKIW-v0.2.0.zip](https://git.teletypegames.org/dos/ttgwiki/releases/download/v0.2.0/TTGWIKIW-v0.2.0.zip)

![A TTGWIKI egy oldalt olvas DOSBoxban](https://wiki.teletypegames.org/wiki-assets/ttgwiki/screenshot.png)

---

# Mit tud

- **A tartalomjegyzék** fában mutatja az oldalakat, az utolsó módosításuk dátumával. Gépeléssel keres a címekben, a kis- és nagybetűt meg az ékezeteket nem nézve (a `kezdo` megtalálja a *Kezdőlap*ot). Az `F2` vált az angol és a magyar között; a fordítás nélküli oldal azon a nyelven jelenik meg, amelyen írták, `[en]` jelöléssel.
- **Az olvasó** úgy mutatja az oldalt, ahogy a wikiben van: címsorok, listák, kódblokkok, idézetek és táblázatok, színesen. A `Tab` / `Shift+Tab` kiválasztja a linkeket, az állapotsor megmondja, hová visznek, az `Enter` követi a linket egy másik oldalra, a `Backspace` visszalép. Egy webes linket csak kiír: azt egy másik gépen kell megnyitni.
- **Hálózat nélkül**: egy egyszer elolvasott oldal a program melletti `CACHE\` mappában marad. Ha a szerver nem érhető el, a TTGWIKI ezt kiírja, és a lemezről olvas. Az elutasított kapcsolatot a master azonnal jelzi; a 0.2.0 előbb még kivárja az mTCP 10 másodperces kapcsolódási időkorlátját. Az `F6` (vagy a `TTGWIKI SYNC`) egy nyelv minden oldalát letölti.
- **Frissen**: induláskor és `F5`-re a TTGWIKI elolvassa a szerverről a `WIKI.INI`-t. Ha az exportnak új generációja van, jön az új oldallista, és a megváltozott oldalak törlődnek a lemezről, így olvasáskor újra letöltődnek. Mást nem tölt le.
- **Nyomtatás**: a `TTGWIKI SHOW /dos/gmenu > PRN` sima szövegként kinyomtat egy oldalt.
- **Kódlapok**: a `TTGWIKI.CFG`-ben a `CODEPAGE=852` minden magyar betűt mutat; a 437-es kódlapon (ez az alapértelmezés) a hiányzók egy közeli betűvé válnak (ő → ö).

```
TTGWIKI                    a wiki böngészése
TTGWIKI SYNC [nyelv]       egy nyelv minden oldalának letöltése
TTGWIKI SHOW útvonal [nyelv]  egy oldal kinyomtatása
```

# Hogyan működik

```
 wiki.teletypegames.org (Grav)
        │  /custom/sitemap.json, /custom/page.json (a wiki docker-hálózatán belül)
        ▼
 exporter (server/export.py)   induláskor, aztán 15 percenként
        │  WIKI.INI, EN/INDEX.TXT, EN/FILES.LST, EN/P0000001.TXT, ... HU/...
        ▼
 FTP (infra/ftp-server)        ftp://ftp.teletypegames.org/WIKI
        │
        ▼
 TTGWIKI.EXE / TTGWIKIW.EXE    CACHE\EN\..., CACHE\HU\...
```

- Az **exporter** ugyanazokat a JSON-végpontokat olvassa, mint a [TTG Wiki BBS](https://wiki.teletypegames.org/hu/services/wiki-bbs), minden nyilvános oldal HTML-jét szöveggé rendereli (`server/render.py`), és nyelvenként egy mappát ír. Újraindítás után azonnal exportál. Új export csak akkor készül, ha valami változott: a nyelvi mappák átnevezéssel cserélődnek, és a `WIKI.INI` kerül ki utoljára, a következő generációszámmal. Egy sikertelen futás (ha a wiki nem érhető el) semmit nem változtat.
- **A privát oldalak sosem hagyják el a szervert**: kimaradnak a sitemapből, és token nélkül a Grav amúgy sem adja ki a szövegüket.
- **Egy oldalfájl** fejlécsorokkal kezdődik (`TITLE=`, `URL=`, linkenként `L=<n> <cél>`), utána legfeljebb 78 karakteres sorok jönnek, UTF-8-ban. A stílusokat (`01h c`) és a linkeket (`02h n 03h` … `04h`) oszlopot nem foglaló vezérlőbájtok jelölik; minden sor önmagában teljes, így az olvasó bárhol kezdheti. A TTGWIKI a szöveget a képernyő kódlapjára alakítja, karakterenként egy bájtra, és az oldalt soronként olvassa a lemezről (a leghosszabb oldal közel 3000 sor).
- **Az azonosítók maradnak**: egy oldal egyszer kap számot (`P0000123.TXT`), amit minden export visszaolvas az `INDEX.TXT`-ből; a két nyelv közösen használja, így az `F2` ugyanazt az oldalt mutatja.
- A `FILES.LST` minden fájl CRC-32-jét és méretét tartalmazza, a DOSINST formátumában: minden letöltés ellenőrzött.

# A szerver

A `ttgwiki` stack a vps.teletype.hu-n (`/srv/stacks/ttgwiki`, `compose.yaml`) már csak az exporter. Az [FTP-szerver](https://wiki.teletypegames.org/hu/infrastructure/ftp-server) `WIKI` mappájába ír (`/srv/stacks/ftp-server/root/WIKI`), amelyet az a 21-es porton kínál: anonim, csak olvasható, csak passzív mód. A 0.2.0-tól a TTGWIKI alapból ide kapcsolódik (`PORT=21`, `PATH=/WIKI`); a 0.1.0 a 2121-es portot használta, ez megszűnt. Az exporter a `wiki-pages` stack hálózatához csatlakozik. A master ágra pusholt, a szerveroldalt érintő változást a pipeline telepíti.

# Fordítás és tesztek

Open Watcom v2, ahogy a DOSINST-nél: a `SOURCE/build.sh` mindkét programfájlt lefordítja. A kliens rétegekben épül a [DOSLIB](https://wiki.teletypegames.org/hu/dos/doslib)-re (ami ehhez kapta meg a 437-es és 852-es kódlapot és a fájlon belüli pozicionálást). A pipeline futtatja a szerveroldal tesztjeit (a renderer, az exporter egy hamis wikin), a kliens unit-tesztjeit a fejlesztőgépen, és két végponttól végpontig tartó tesztet: az exporter egy kis exportot ír, az FTP-szerver kiszolgálja, a TTGWIKI pedig fej nélküli DOSBox Staging-ben fut (nyomtatás, letöltés, új export, 852-es kódlap, hálózat nélkül, böngészés szkriptelt billentyűkkel), a TTGWIKIW pedig Wine alatt. A lépések a [dos-tools](https://wiki.teletypegames.org/hu/platforms/dos) builder image-ének (`git.teletypegames.org/build/dos-builder`) parancsai, előre telepített eszközlánccal; a repóban csak a `platform: dos` marker és a `metadata.json` van. Egy `vX.Y.Z` tag a katalógusba publikálja a kiadást, és a [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine) mindkét buildet a DOSINST programtárába, a DOS-polcára teszi (a `TTGWIKI.CFG` nélkül); store lépés nincs. A szerveroldal deployja (`.woodpecker/deploy.yaml`) csak meghívja SSH-n a szerver `deploy` felhasználóját, egy egyetlen rögzített parancshoz kötött kulccsal (`ci-deploy ttgwiki`; `infra/host-config`): a szerver maga klónozza a mastert, és egy szabályzat szerint ellenőrzi a `compose.yaml`-t, így a pipeline-nak nem kellenek trusted volume-ok. Részletek: a repó README-je.

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [DOS](https://wiki.teletypegames.org/hu/dos.md)
- Previous: [GMENU](https://wiki.teletypegames.org/hu/dos/gmenu.md)
