mrg / yaae
Yaae - verbindet mehrere TYPO3-Instanzen ueber konfigurierbare Push-/Pull-Endpunkte mit Status-Ampel und Testfunktion.
Package info
Type:typo3-cms-extension
pkg:composer/mrg/yaae
Requires
- typo3/cms-backend: ^13.4
- typo3/cms-core: ^13.4
- typo3/cms-extbase: ^13.4
- typo3/cms-fluid: ^13.4
- typo3/cms-frontend: ^13.4
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:
- Push – grau (aus) / gruen (an)
- Pull – grau (aus) / gruen (an)
- Senden (Foo → Bar) – grau (deaktiviert), gelb (aktiv, aber noch nicht getestet), gruen (letzte Anfrage erfolgreich inkl. Rueckantwort), rot (letzter Fehler)
- 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 mitBarPOST /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")