dud / contao-wartung-client
Client-Bundle für den Wartomat (Contao-Wartungssystem von Drum und Dran)
Package info
github.com/drum-und-dran/contao-wartung-client
Type:contao-bundle
pkg:composer/dud/contao-wartung-client
Requires
- php: ^7.4 || ^8.0
- composer-runtime-api: ^2.0
- contao/core-bundle: ^4.13 || ^5.0 || ^6.0
- doctrine/dbal: ^2.13 || ^3.0 || ^4.0
- symfony/config: ^5.4 || ^6.4 || ^7.0 || ^8.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0 || ^8.0
- symfony/http-foundation: ^5.4 || ^6.4 || ^7.0 || ^8.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0 || ^8.0
- symfony/routing: ^5.4 || ^6.4 || ^7.0 || ^8.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^9.6 || ^10.5 || ^11.0 || ^12.0
Suggests
None
Provides
None
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
Replaces
None
README
Client-Bundle für den Wartomat, das Contao-Wartungssystem von Drum und Dran. Es stellt einen geschützten JSON-Endpunkt bereit, über den der Wartomat PHP-, Contao- und Datenbankversion sowie weitere Betriebsdaten einer Contao-Installation abfragt.
Voraussetzungen
- PHP 7.4 oder neuer
- Contao 4.13, 5.x oder 6.x
Installation
Über den Contao Manager oder per Composer:
composer require dud/contao-wartung-client
Bundle und Route werden automatisch registriert (Contao-Manager-Plugin). Eine manuelle Einbindung in
config/routes.yaml ist ab Version 1.1.0 nicht mehr nötig und kann entfernt werden.
Einrichtung (empfohlen): gemeinsames Geheimnis
Im Wartomat auf der Detailseite des Clients das Client-Geheimnis kopieren und in der Contao-Installation in
.env.local eintragen:
CONTAO_WARTUNG_SECRET=<Geheimnis aus dem Wartomat>
Danach den Cache leeren (vendor/bin/contao-console cache:clear --env=prod bzw. im Contao Manager).
Sobald das Geheimnis gesetzt ist, nimmt das Bundle nur noch signierte Anfragen an.
API
GET /contao-wartung/api
| Modus | Authentifizierung | Antwort |
|---|---|---|
hmac |
Header X-Wartung-Timestamp, X-Wartung-Nonce, X-Wartung-Signature = hex(HMAC-SHA256(secret, "v2\n<timestamp>\n<nonce>")), Uhrzeitabweichung ≤ 5 Minuten |
Basisdaten und erweiterte Daten |
legacy |
?auth=sha256(host ohne www + salt) – nur solange kein Geheimnis gesetzt ist |
nur Basisdaten |
Basisdaten: php_version, contao_version, mysql_version, bundle_version, auth_mode, schema.
Erweiterte Daten: PHP-Laufzeit (SAPI, memory_limit, Erweiterungen, OPcache), Symfony-Version, Umgebung und
Debug-Modus, Wartungsmodus, freier Speicherplatz, letzter Contao-Cron-Lauf, Anzahl Administratoren ohne
Zwei-Faktor-Anmeldung, installierte Contao-Erweiterungen mit Version und (ab 1.2.0) die Version des Contao Managers
(contao_manager, ausgelesen ohne Code aus dem Phar auszuführen).
Antworten werden mit Cache-Control: no-store und X-Robots-Tag: noindex ausgeliefert.
Sicherheit
Der Legacy-Token beruht auf einem im Quelltext veröffentlichten Salt und ist damit für jeden berechenbar. Er bleibt nur zur Abwärtskompatibilität erhalten und liefert deshalb ausschließlich die Basisdaten. Für alle Installationen sollte das Geheimnis gesetzt werden.
Entwicklung
composer install
php -d phar.readonly=0 vendor/bin/phpunit # phar.readonly=0 nur für den Test mit echtem Phar
Autor
Gunnar Haeuschkel – Drum und Dran