mrg/yaae

Yaae - verbindet mehrere TYPO3-Instanzen ueber konfigurierbare Push-/Pull-Endpunkte mit Status-Ampel und Testfunktion.

Maintainers

Package info

gitlab.com/mr-typo3/yaae

Type:typo3-cms-extension

pkg:composer/mrg/yaae

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

dev-main 2026-08-16 12:56 UTC

This package is auto-updated.

Last update: 2026-08-16 19:11:57 UTC


README

Sehr simple TYPO3 v13 Extension, die eine Basis fuer eine API-Kommunikation zwischen mehreren TYPO3-Instanzen bereitstellt: Backend-Modul zur Verwaltung entfernter Instanzen, Push/Pull-Umschaltung pro Instanz, Ampel-Statusanzeige und ein Testbutton ("Foo" -> "Bar").

Installation

composer require mrg/yaae

Danach die Extension im Extension-Manager aktivieren (falls nicht automatisch aktiv) und das Datenbankschema updaten (Extension-Manager -> Analyze Database Structure, oder vendor/bin/typo3 database:updateschema).

Das Backend-Modul erscheint unter Web > Yaae.

Konzept

Fuer jede entfernte TYPO3-Instanz wird ein Datensatz angelegt mit:

  • Titel
  • URL (Basis-URL der Gegenstelle, z.B. https://instanz-b.example.de)
  • Port
  • API-Pfad (Standard: /yaae/v1)
  • Push aktiv – diese Instanz sendet aktiv Anfragen an die Gegenstelle
  • Pull aktiv – diese Instanz nimmt eingehende Anfragen der Gegenstelle an (d.h. "lauscht" fuer diese eine Gegenstelle)

Sind beide Schalter aus, gilt die Instanz als deaktiviert (in der Uebersicht abgeblendet dargestellt).

Ampel-System

Pro Instanz werden vier LEDs angezeigt:

  1. Push – grau (aus) / gruen (an)
  2. Pull – grau (aus) / gruen (an)
  3. Senden (Foo → Bar) – grau (deaktiviert), gelb (aktiv, aber noch nicht getestet), gruen (letzte Anfrage erfolgreich inkl. Rueckantwort), rot (letzter Fehler)
  4. Empfang – gleiche Logik fuer eingehende Anfragen, inkl. Anzeige, von welcher Gegenstelle zuletzt empfangen wurde

Der Morsebutton

Der Button "📡 Foo" in der Instanzliste sendet eine Testanfrage (POST {URL}:{Port}{API-Pfad}/foo mit Payload {"message":"Foo"}) an die gewaehlte Instanz. Antwortet die Gegenstelle mit {"message":"Bar"}, springt die Senden-LED auf gruen, ansonsten auf rot. Der Button ist nur wirksam, wenn "Push" fuer die Instanz aktiviert ist.

Das "Lauschen" (Empfangsseite / Pull)

Echtes dauerhaftes Lauschen im Sinne eines eigenen Hintergrundprozesses ist mit einer klassischen PHP/TYPO3-Webanwendung nicht sinnvoll umsetzbar (kein Dauer-Daemon). Stattdessen registriert die Extension eine PSR-15-Middleware (Mrg\Yaae\Middleware\ApiMiddleware), die jede eingehende Anfrage unter /yaae/v1/* abfaengt, bevor TYPO3 sie als Seite verarbeitet. Dadurch ist die Instanz ueber ihre normale Web-URL jederzeit erreichbar, sobald der Webserver laeuft – das entspricht dem ueblichen REST-/Webhook- Muster und ist der TYPO3-typische Weg fuer "staendig lauschende" Endpunkte.

Verfuegbare Endpunkte (jeweils unterhalb der TYPO3-Basis-URL der jeweiligen Instanz):

  • POST /yaae/v1/foo – Testendpunkt, antwortet mit Bar
  • POST /yaae/v1/push – Platzhalter fuer eingehende Push-Daten (quittiert aktuell nur den Empfang)
  • GET /yaae/v1/pull – Platzhalter fuer abholbare Daten (liefert aktuell ein leeres Datenobjekt)

Die anfragende Gegenstelle identifiziert sich per Header X-Yaae-From: <eigene Basis-URL>. Die Middleware gleicht diesen Host gegen die konfigurierten Instanzen ab; nur wenn eine passende Instanz gefunden wird und dort "Pull" aktiviert ist, wird die Anfrage beantwortet (sonst HTTP 403).

Was mit den eingehenden bzw. abzuholenden Daten inhaltlich passiert, ist aktuell bewusst nicht implementiert (push/pull-Platzhalter in ApiMiddleware) – das ist laut Anforderung fuer den Moment zweitrangig und kann spaeter dort ergaenzt werden.

Naechste sinnvolle Ausbaustufen (nicht Teil dieser Version)

  • Echte Nutzdaten-Verarbeitung in push/pull
  • Authentifizierung per Token/HMAC statt reinem Host-Abgleich
  • Scheduler-Task fuer aktives, zeitgesteuertes Pull-Polling
  • Logging der Kommunikation als eigene Tabelle (Historie statt nur "letzter Status")