---
title: 'Impostor BBS'
url: 'https://wiki.teletypegames.org/hu/services/impostor-bbs'
markdown: 'https://wiki.teletypegames.org/hu/services/impostor-bbs.md'
lang: hu
date: '2026-11-01'
description: 'A Definitely not an Impostor puzzle/ARG játék utáni terminálja: aki végigjátszotta, kap egy személyes kódot, ide hozza a nevével együtt, és megtudja, mi jön ezután. Elérhető: teletypegames.org:2324, böngészőben a bbsweb-en, és a TTG Gate BBS-en át is Áttekintés Ruby alkalmazás a rubbs gemre építv…'
taxonomy:
  tag:
    - howto
---

# Impostor BBS

> A **Definitely not an Impostor** puzzle/ARG játék utáni terminálja: aki végigjátszotta, kap egy személyes kódot, ide hozza a nevével együtt, és megtudja, mi jön ezután.
> 
> **Elérhető: `teletypegames.org:2324`**, böngészőben a [bbsweb](https://bbsweb.teletypegames.org)-en, és a [TTG Gate BBS](https://wiki.teletypegames.org/hu/services/ttg-gate-bbs)-en át is

# Áttekintés

Ruby alkalmazás a [**rubbs**](https://git.teletypegames.org/engines/rubbs) gemre építve, mint a [Teletype BBS](https://wiki.teletypegames.org/hu/services/teletype-bbs). Maga a rubbs is ebből a boardból vált ki (rubbs 0.1.0). Egy porton két arca van:

- **Modern** — ANSI/xterm, 80 oszlop (SyncTERM, NetRunner, PuTTY, bbsweb).
- **Commodore 64** — PETSCII 40×25-ön, ugyanaz a terminál saját képernyőkkel, C64-es terminálprogramhoz WiFi-modem mögött.

A hívás a rubbs `BBS::Terminal` kérdésével indul: a RETURN elfogadja a telnetválaszokból vett tippet, az `1` a modern arcot, a `2` a C64-et választja.

# Egy hívás menete

1. A board elkéri a játékos **nevét** és **személyes kódját**.
2. A kódot egy sózott algoritmus fejti vissza, és a névhez ellenőrzi. A névből csak az első három karakter számít, levágás és nagybetűsítés után (a `NORMAN` és a `NORBERT` kódja ugyanaz).
3. Jó kód esetén egy rövid azonosítás jön, aztán egy gratuláló képernyő és a játék utáni menü: a játékos **visszajelzést** és egy **e-mail-címet** hagyhat a hírekhez.
4. A kihallgatás végén (vagy elutasított kódnál) a board megköszöni a hívást, és NO CARRIER-rel bont.

Minden munkamenet, sikeres vagy sem, egy sor a `data/sessions.csv`-ben:

```
session_id,timestamp,player_name,code,feedback,email
```

A sor a név és a kód beérkezésekor íródik, aztán helyben frissül, ahogy a visszajelzés és az e-mail megjön. Az `IMPOSTOR_BBS_SESSIONS` máshová teszi a fájlt; a compose a `data/`-t mountolja, így a rekordok túlélik az újraindítást.

# Kód generálása

Egy játékosnév személyes kódját a parancssori eszköz adja, a nevet az `IMPOSTOR_BBS_PLAYER_NAME`-ből olvassa:

```bash
IMPOSTOR_BBS_PLAYER_NAME=norman bin/generate_code
# => 2J5GFN
```

# Doorként

A repó két dolog: az `impostor` **gem** (`lib/impostor*`, `screens/`), vagyis a kihallgató terminál a szabályaival, és körülötte az önálló board. Egy másik rubbs-board behúzhatja a gemet, és doorként futtathatja ugyanezt a terminált, saját munkamenet-tárral (a [Teletype BBS](https://wiki.teletypegames.org/hu/services/teletype-bbs) 2026-11-01-ig így tett; azóta ez a 2324-es board a terminál egyetlen helye):

```ruby
gem 'impostor', git: 'https://git.teletypegames.org/bbs/impostor-bbs.git'

require 'impostor'
sessions = Impostor.sessions_store('data/impostor_sessions.csv')
door :impostor, Impostor::Modern.flow(sessions: sessions), label: '&Impostor'
```

C64-es hívó az `Impostor::Petscii.flow(sessions: sessions)`-t kapja. A flow végén a door ENTER-t kér, és visszaadja a hívót a gazda-BBS-nek. A gazda `Gemfile.lock`-ja rögzíti a revíziót, így egy itteni változás csak az ottani lock-bumppal ér el a doorig.

# A motorháztető alatt

| Útvonal | Mi ez |
|---|---|
| `bbs.rb` | Belépési pont: egy `ImpostorBBS`, a `BBS::Terminal` a két arccal |
| `lib/domain/impostor_bbs.rb` | A kompozíciós gyökér: beolvassa a környezetet, felépíti a munkamenet-tárat |
| `lib/ui/modern.rb`, `lib/ui/petscii.rb` | A board arcai: a gem flow-jai, aztán elköszönés és NO CARRIER |
| `lib/impostor.rb`, `lib/impostor/` | A gem: a kihallgatás flow-ja, `Impostor::Modern`, `Impostor::Petscii`, a kódgenerátor (a Lua eredeti Ruby-portja) |
| `screens/modern/`, `screens/petscii/` | A két arc üdvözlő és gratuláló képernyője |
| `bin/generate_code` | A kódgenerátor parancssori eszköze |

Környezet: `BBS_PORT`, `BBS_MAX_SESSIONS` (rubbs) és `IMPOSTOR_BBS_SESSIONS`; az `env-example` az alapértékekkel együtt sorolja fel őket.

A masterre pusholva Woodpeckerből élesedik (RuboCop, compose-ellenőrzés, `ci-deploy impostor-bbs`); a konténer `impostor-bbs`, a `/srv/stacks/impostor-bbs`-ben, a nyilvános port 2324, a `data/` megmarad a deployok között. Az entrypoint induláskor frissíti a rubbs-t. A többi board a [BBS-hálózat](https://wiki.teletypegames.org/hu/services/bbs-network) oldalon van.

'; 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: [Szolgáltatások](https://wiki.teletypegames.org/hu/services.md)
- Previous: [Feedia BBS](https://wiki.teletypegames.org/hu/services/feedia-bbs.md)
- Next: [Pixelia BBS](https://wiki.teletypegames.org/hu/services/pixelia-bbs.md)
