# Share Inbox Service Kleiner privater PHP-Service zum Einsammeln von Inhalten per HTTP und zum späteren Abrufen als JSON. ## Hinweis zu KI-Unterstützung Hinweis: Teile dieses Repositories wurden unter Einsatz generativer KI erstellt oder überarbeitet. Die Verantwortung für Inhalt und Veröffentlichung liegt beim Maintainer. ## Lizenz Dieses Repository steht unter der [MIT-Lizenz](LICENSE). ## Funktionen - `POST /share` speichert eingehende Daten. - `GET /inbox` listet gespeicherte Einträge. - Storage kann per Flag zwischen `ndjson` und `sqlite` umgeschaltet werden. ## Voraussetzungen - PHP 8.1+ mit aktiviertem `pdo_sqlite`, falls `sqlite` genutzt werden soll ## Konfiguration 1. Beispielkonfiguration kopieren: ```sh cp .env.example .env ``` 2. Wichtige Variablen: - `INBOX_SECRET`: Shared Secret für `POST /share` - `INBOX_MAX_BODY_BYTES`: maximales Request-Body-Limit - `INBOX_STORAGE_DIR`: Speicherort außerhalb des Webroots, Standard `var/inbox` - `INBOX_STORAGE_BACKEND`: `ndjson` oder `sqlite` - `INBOX_CORS_ALLOW_ORIGINS`: kommaseparierte Liste erlaubter Origins oder `*` ## Lokal starten ```sh php -S 127.0.0.1:8080 -t src/public src/public/index.php ``` ## Beispiele Request speichern: ```sh curl -X POST http://127.0.0.1:8080/share \ -H "Content-Type: application/json" \ -H "X-Inbox-Secret: change-me" \ -d '{"type":"url","content":"https://example.com"}' ``` Inbox lesen: ```sh curl "http://127.0.0.1:8080/inbox?limit=20" ``` ## Tests Die Tests benötigen keine externen PHP-Abhängigkeiten und starten den eingebauten PHP-Server selbst. ```sh php tests/run.php ``` Zusätzlich gibt es weiter einen kleinen manuellen Smoke-Test für eine bereits laufende Instanz: ```sh chmod +x bin/smoke-test.sh INBOX_SECRET=change-me bin/smoke-test.sh ``` ## Hinweise - Laufzeitdaten liegen standardmäßig unter `var/inbox/` und damit nicht im Webroot. - Fehlerdetails gehen ins PHP-Error-Log, nicht mehr an Clients. - `sqlite` ist als optionaler Modus gedacht; Standard bleibt `ndjson`.