2026-03-17 15:47:32 +01:00

82 lines
2.0 KiB
Markdown

# 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`.