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

2.0 KiB

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.

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:
cp .env.example .env
  1. 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

php -S 127.0.0.1:8080 -t src/public src/public/index.php

Beispiele

Request speichern:

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:

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.

php tests/run.php

Zusätzlich gibt es weiter einen kleinen manuellen Smoke-Test für eine bereits laufende Instanz:

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.