bleeter/README.md
Bjoern Flessing 84d0089207 Chatbefehl /bleeter entfernt
Bleeter gehoert in den IC-Computer: dort sitzt man an einem Geraet, statt
mitten auf der Strasse ein Fenster aufzuklappen. Ein Chatbefehl umgeht das und
macht die Oberflaeche ueberall verfuegbar.

Der Export OpenBleeter bleibt, damit andere Resources sie oeffnen koennen -
etwa ein Telefon. Config.Command faellt weg, ohne Befehl hat es keine Bedeutung.
2026-08-09 12:43:36 +00:00

6.9 KiB
Raw Blame History

bleeter — soziales Netz im Spiel

Feed, Werbeanzeigen, Marktplatz, Veranstaltungskalender und Gewerbeverzeichnis. Jeder Spieler wählt sich ein Handle mit @, Unternehmen und Behörden bekommen eigene Profile, für die sie Mitarbeiter freigeben.

Bedient wird es am IC-Computer (pc-live) — dort sitzt man an einem Gerät, statt mitten auf der Straße ein Fenster aufzuklappen.

Die Resource bringt ihre eigene Oberfläche mit, die sich über den Export OpenBleeter öffnen lässt — etwa aus einem Telefon heraus. Einen Chatbefehl gibt es bewusst nicht.


Installation

1. Ordner

resources/[haleoe]/bleeter/

2. Datenbank

Reihenfolge einhalten:

mysql -u BENUTZER -p DATENBANK < sql/install.sql
mysql -u BENUTZER -p DATENBANK < sql/migration_reservierte_handles.sql
mysql -u BENUTZER -p DATENBANK < sql/migration_fehlende_spalten.sql
Datei
install.sql Konten, Profile, Mitglieder, Beiträge, Kommentare, Medien, Markt, Termine
migration_reservierte_handles.sql Sperrliste für Handles fehlte im Grundschema, ohne sie scheitert jede Registrierung
migration_fehlende_spalten.sql sechs Spalten, die der Code schreibt, die aber nicht angelegt wurden

Alle wiederholt ausführbar.

3. server.cfg

ensure oxmysql
ensure ic-mail        # optional, liefert die Mailadressen
ensure bleeter

4. Bilder hochladen einrichten — wird gebraucht

Ohne diesen Schritt lässt sich kein Bild hochladen. Beiträge, Profilbilder und Marktanzeigen bleiben dann auf verlinkte Adressen angewiesen — und die sind unzuverlässig, weil Bilderdienste das Verlinken zeitweise sperren.

Bilder gehen zu imgbb.com. Der Schlüssel ist kostenlos:

  1. Konto anlegen auf https://imgbb.com
  2. Schlüssel holen unter https://api.imgbb.com
  3. In die server.cfg eintragen, vor dem ensure:
set bleeter_imgbb_key "DEIN_SCHLUESSEL"

ensure bleeter

set statt setr — so bleibt der Schlüssel auf dem Server und geht nicht an die Clients.

Warum nicht in die config.lua? Die liegt in der Versionsverwaltung. Ein Schlüssel im Code landet damit in jeder Kopie und in der gesamten Historie. Config.Media.imgbbApiKey gibt es weiterhin als Rückfallebene — sinnvoll für eine Testumgebung, nicht für den Betrieb.

Fehlt der Schlüssel, meldet der Upload missing_imgbb_key.

Weitere Stellschrauben in shared/config.lua:

Config.Media = {
    provider          = 'imgbb',
    maxBytes          = 2 * 1024 * 1024,   -- 2 MB
    allowedExtensions = { 'jpg', 'jpeg', 'png' },
    allowExternalUrls = true,              -- Verlinken zusätzlich erlauben
    requireHttps      = true,
}

5. App im IC-Computer (optional)

Diese Dateien gehören nach pc-live:

Datei Ziel
client/bleeter.lua pc-live/client/
nui/js/apps/bleeter.js pc-live/nui/js/apps/
nui/js/apps/bleeteradmin.js pc-live/nui/js/apps/
nui/css/bleeter-embedded.css pc-live/nui/css/

Dazu in pc-live eintragen: beide Skripte in fxmanifest.lua und nui/index.html, die Stildatei in fxmanifest.lua und im <head>, die App-Einträge in desktop.js (APP_META und die case-Zweige bleeter_data, bleeter_notify, bleeter_uploaded) sowie AppRegistry.Register in server/apps.lua.

Zur Stildatei: nui/css/bleeter-embedded.css wird erzeugt, nicht von Hand gepflegt. Sie ist die gekapselte Fassung von html/style.css — jeder Selektor auf .bl-root begrenzt. Ohne diese Kapselung würden Bleeters Regeln für *, html und body den gesamten Computer einfärben. Neu erzeugen:

python3 pc-live/nui/css/erzeuge-bleeter-css.py

Vom Wurzelelement werden dabei nur Farben, Schrift und Variablen übernommen — kein Layout. Im Original ist .bleeter-root ein bildschirmfüllendes Overlay; übernähme man das, läge die App über dem ganzen Computer, auch über der Titelleiste.


Die drei Ebenen

wer darf
Anbieter am Computer als admin@liveinvader.ls angemeldet Unternehmensprofile einrichten, verwalten, moderieren
Unternehmen wer im Profil can_manage_members hat eigene Leute für das Profil freigeben
Spieler jeder eigenes Handle mit @ wählen

Die Anbieterrechte kommen aus der Anmeldung in ic-web — genau eine Stelle für alle Verwaltungsrechte. Ein zweites Rechtesystem daneben wäre eine zweite Stelle, an der man jemanden zu entziehen vergisst.

Die Tabelle bleeter_lifeinvader_permissions bleibt als zweiter Weg bestehen — der Notausgang, falls ic-web nicht läuft.

Bewusst getrennt: Wer für ein Unternehmen schreiben darf, kann sich nicht selbst zum Verwalter machen.

Konsolenbefehle

Befehl
bleeterprofile alle Unternehmensprofile auflisten
bleeterprofil <handle> <art> [server-id] Profil anlegen; Arten: small_business, company, authority, lifeinvader
bleeterfrei <handle> <server-id> [post|edit|manage|weg] jemanden freigeben oder entfernen

Im Spiel nur als Anbieter, in der Serverkonsole immer.


Handles

Kleinbuchstaben, Ziffern, Punkt, Unterstrich, Bindestrich; 2 bis 32 Zeichen.

bleeter_reserved_handles verhindert, dass Spieler sich Namen wie lspd oder weazel greifen. Der Anbieter darf sie sehr wohl vergeben — dafür ist er da. Die Sperrliste gilt deshalb nur bei der Selbstregistrierung, nicht in der Verwaltung.


Voraussetzungen

oxmysql Datenbankzugriff
ic-mail Mailadresse als Ausweis bei der Registrierung
es_extended Charaktername und Identifier
ic-web optional liefert die Anbieteranmeldung
pc-live optional für die App im Computer

Läuft ohne Charaktersystem: fehlt eines, wird der Lizenz-Identifier als Charakterkennung benutzt.


Web-Backend

Unter web-backend/ liegt ein Node-Dienst, der dieselben Daten über HTTP bereitstellt — für eine Webseite außerhalb des Spiels.

cd web-backend
npm install
cp .env.example .env      # ausfüllen
node server.js

Die .env enthält Datenbankzugang, JWT-Geheimnis und API-Schlüssel und ist deshalb von der Versionsverwaltung ausgenommen.


Bekannte Fallstricke

Bilder aus fremden Quellen bleiben leer. Bilderdienste sperren das Verlinken zeitweise. Alle <img> laden mit referrerpolicy="no-referrer", was bei referer-basierten Sperren hilft — gegen eine IP-Sperre nicht. Der verlässliche Weg ist der Upload.

Nicht die Adresse der Seite kopieren, sondern die des Bildes. imgur.com/a/… ist ein Album, imgur.com/… eine Bildseite. Die App rechnet Bildseiten selbst um und holt die Adresse auch aus BBCode-, HTML- und Markdown-Schnipseln heraus.

Der Fokus gehört dem Computer. SetNuiFocus gilt global für den Client. Als App im Computer greift Bleeter deshalb nicht danach — sonst sperren sich zwei Resources gegenseitig die Maus aus.