update api.dragons-at-work.de to api.example.com

michael 2025-09-10 14:12:26 +02:00
parent ec1b44ad7c
commit d33bd17ccd
14 changed files with 90 additions and 76 deletions

@ -9,7 +9,7 @@ Furt bietet eine REST-API für die Integration mit Websites und Anwendungen. Die
## Base URL ## Base URL
``` ```
Production: https://api.dragons-at-work.de Production: https://api.example.com
Development: http://localhost:7811 Development: http://localhost:7811
``` ```
@ -121,7 +121,7 @@ Die Request-ID wird in allen Responses zurückgegeben und in den Server-Logs mit
- Eigene SMTP-Konfiguration - Eigene SMTP-Konfiguration
- Eigene Mail-Empfänger - Eigene Mail-Empfänger
- Eigene Subject-Präfixe - Eigene Subject-Präfixe
- Eigene Rate-Limits - Eigene Rate-Limits
- Isolierte Logs und Metriken - Isolierte Logs und Metriken
@ -148,7 +148,7 @@ async function sendContactForm(formData) {
}, },
body: JSON.stringify(formData) body: JSON.stringify(formData)
}); });
const result = await response.json(); const result = await response.json();
return result; return result;
} }
@ -157,7 +157,7 @@ async function sendContactForm(formData) {
### curl (Testing) ### curl (Testing)
```bash ```bash
curl -X POST https://api.dragons-at-work.de/v1/mail/send \ curl -X POST https://api.example.com/v1/mail/send \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \ -H "X-API-Key: your-api-key" \
-d '{"name":"Test","email":"test@example.com","message":"Test message"}' -d '{"name":"Test","email":"test@example.com","message":"Test message"}'
@ -166,7 +166,7 @@ curl -X POST https://api.dragons-at-work.de/v1/mail/send \
### Hugo Shortcode Integration ### Hugo Shortcode Integration
```html ```html
{{< furt-contact-form {{< furt-contact-form
api-endpoint="https://api.example.com/v1/mail/send" api-endpoint="https://api.example.com/v1/mail/send"
api-key="your-api-key" api-key="your-api-key"
success-url="/contact/thanks/" success-url="/contact/thanks/"
@ -199,4 +199,5 @@ curl http://localhost:7811/health
curl -H "X-API-Key: test" http://localhost:7811/auth/status curl -H "X-API-Key: test" http://localhost:7811/auth/status
``` ```
**Development-Endpoint:** Der `/test` Endpoint ist nur verfügbar wenn in der Konfiguration aktiviert. Er dient zum Testen der Request-Verarbeitung ohne Side-Effects. **Development-Endpoint:** Der `/test` Endpoint ist nur verfügbar wenn in der Konfiguration aktiviert. Er dient zum Testen der Request-Verarbeitung ohne Side-Effects.

@ -241,7 +241,7 @@ scrape_configs:
- job_name: 'furt-gateway' - job_name: 'furt-gateway'
metrics_path: '/health' metrics_path: '/health'
static_configs: static_configs:
- targets: ['api.dragons-at-work.de:443'] - targets: ['api.example.com:443']
``` ```
**Health-to-Metrics Mapping:** **Health-to-Metrics Mapping:**
@ -363,4 +363,5 @@ Health-Endpoint-Aufrufe erscheinen in den Server-Logs:
[2024-09-10 12:34:56] merkwerk health info: version=0.1.2, source=merkwerk [2024-09-10 12:34:56] merkwerk health info: version=0.1.2, source=merkwerk
``` ```
**Request-ID:** Health-Checks erhalten keine Request-ID da sie stateless sind. **Request-ID:** Health-Checks erhalten keine Request-ID da sie stateless sind.

13
Home.md

@ -31,7 +31,7 @@ sudo ./install.sh --upgrade # Update bestehender Installation
Das modulare Installationssystem führt automatisch durch: Das modulare Installationssystem führt automatisch durch:
1. System-Benutzer erstellen (`_furt` oder `furt`) 1. System-Benutzer erstellen (`_furt` oder `furt`)
2. Verzeichnisstruktur anlegen (OS-spezifische Pfade) 2. Verzeichnisstruktur anlegen (OS-spezifische Pfade)
3. Source-Code synchronisieren 3. Source-Code synchronisieren
4. System-Service einrichten (rc.d oder systemd) 4. System-Service einrichten (rc.d oder systemd)
5. Konfiguration validieren 5. Konfiguration validieren
@ -70,7 +70,7 @@ Nach der Installation muss die Konfigurationsdatei angepasst werden:
# OpenBSD # OpenBSD
doas $EDITOR /usr/local/etc/furt/furt.conf doas $EDITOR /usr/local/etc/furt/furt.conf
# Linux # Linux
sudo $EDITOR /etc/furt/furt.conf sudo $EDITOR /etc/furt/furt.conf
``` ```
@ -88,7 +88,7 @@ doas rcctl start furt
doas rcctl check furt doas rcctl check furt
# Linux # Linux
sudo systemctl start furt sudo systemctl start furt
sudo systemctl status furt sudo systemctl status furt
# Service-Test # Service-Test
@ -191,6 +191,7 @@ Furt ist aktuell ein integrierter HTTP-Server mit eingebautem Mail-Service (form
--- ---
**Projekt:** [Dragons@Work Digital Sovereignty](https://dragons-at-work.de) **Projekt:** [Dragons@Work Digital Sovereignty](https://dragons-at-work.de)
**Repository:** [Forgejo](https://smida.dragons-at-work.de/DAW/furt) **Repository:** [Forgejo](https://smida.dragons-at-work.de/DAW/furt)
**License:** ISC **License:** ISC

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Warum modulare Scripts? ## Warum modulare Scripts?
@ -21,13 +21,13 @@ Die sechs Helper Scripts folgen einer klaren Abhängigkeitskette. Das `setup-use
```bash ```bash
# Abhängigkeitskette bei Fresh Installation: # Abhängigkeitskette bei Fresh Installation:
setup-user.sh # Erstellt _furt oder furt Benutzer setup-user.sh # Erstellt _furt oder furt Benutzer
setup-directories.sh # Nutzt Benutzer für chown-Operationen setup-directories.sh # Nutzt Benutzer für chown-Operationen
sync-files.sh # Kopiert in die erstellten Verzeichnisse sync-files.sh # Kopiert in die erstellten Verzeichnisse
create-service.sh # Verwendet die kopierten Service-Templates create-service.sh # Verwendet die kopierten Service-Templates
validate-config.sh # Prüft die installierte Konfiguration validate-config.sh # Prüft die installierte Konfiguration
@ -43,7 +43,7 @@ Diese Reihenfolge ist nicht willkürlich. Jedes Script baut auf den Ergebnissen
Das Script prüft ob der Benutzer bereits existiert und überspringt die Erstellung falls nötig. Diese Idempotenz macht das Script sicher für mehrfache Ausführung. Das Script prüft ob der Benutzer bereits existiert und überspringt die Erstellung falls nötig. Diese Idempotenz macht das Script sicher für mehrfache Ausführung.
### Phase 2: Verzeichnisstruktur erstellen ### Phase 2: Verzeichnisstruktur erstellen
**[setup-directories.sh](setup-directories-sh.md)** legt die komplette furt-Verzeichnisstruktur an. Es versteht die Unterschiede zwischen BSD und Linux Filesystem-Konventionen: OpenBSD verwendet `/usr/local/etc/` für selbst-installierte Software um eine klare Trennung zur Basis-Installation zu schaffen. Linux-Distributionen legen alle Konfiguration in `/etc/`. **[setup-directories.sh](setup-directories-sh.md)** legt die komplette furt-Verzeichnisstruktur an. Es versteht die Unterschiede zwischen BSD und Linux Filesystem-Konventionen: OpenBSD verwendet `/usr/local/etc/` für selbst-installierte Software um eine klare Trennung zur Basis-Installation zu schaffen. Linux-Distributionen legen alle Konfiguration in `/etc/`.
```bash ```bash
@ -53,7 +53,7 @@ Das Script prüft ob der Benutzer bereits existiert und überspringt die Erstell
/var/log/furt/ # Logs (furt-writable) /var/log/furt/ # Logs (furt-writable)
/var/run/furt/ # PID-Files (furt-writable) /var/run/furt/ # PID-Files (furt-writable)
# Linux Struktur # Linux Struktur
/etc/furt/ # Konfiguration /etc/furt/ # Konfiguration
/usr/local/share/furt/ # Source-Code (read-only) /usr/local/share/furt/ # Source-Code (read-only)
/var/log/furt/ # Logs (furt-writable) /var/log/furt/ # Logs (furt-writable)
@ -77,7 +77,7 @@ Unter OpenBSD wird das rc.d-Script nach `/etc/rc.d/furt` kopiert, ausführbar ge
Das Script kann auch bestehende Konfigurationen auf Vollständigkeit prüfen - es erkennt fehlende Sektionen oder ungültige Werte und gibt entsprechende Hinweise. Das Script kann auch bestehende Konfigurationen auf Vollständigkeit prüfen - es erkennt fehlende Sektionen oder ungültige Werte und gibt entsprechende Hinweise.
### Phase 6: System-Test durchführen ### Phase 6: System-Test durchführen
**[health-check.sh](health-check-sh.md)** versucht den furt-Service zu erreichen und seine grundlegenden Funktionen zu testen. Bei einer Fresh Installation kann dieser Test fehlschlagen weil der Service noch nicht gestartet wurde - das ist normal und erwartet. **[health-check.sh](health-check-sh.md)** versucht den furt-Service zu erreichen und seine grundlegenden Funktionen zu testen. Bei einer Fresh Installation kann dieser Test fehlschlagen weil der Service noch nicht gestartet wurde - das ist normal und erwartet.
Das Script kann auch gegen entfernte furt-Installationen getestet werden um zu verifizieren dass Updates korrekt funktionieren. Das Script kann auch gegen entfernte furt-Installationen getestet werden um zu verifizieren dass Updates korrekt funktionieren.
@ -92,7 +92,7 @@ Das Orchestrator-Script `install.sh` unterstützt zwei Modi die sich in der Anza
``` ```
Führt alle sechs Phasen aus. Geeignet für neue Installationen auf Systemen wo furt noch nie installiert war. Führt alle sechs Phasen aus. Geeignet für neue Installationen auf Systemen wo furt noch nie installiert war.
### Upgrade Installation ### Upgrade Installation
```bash ```bash
./install.sh --upgrade ./install.sh --upgrade
``` ```
@ -127,7 +127,7 @@ Das modulare Design hilft erheblich bei der Fehlerdiagnose. Wenn die orchestrier
```bash ```bash
[INFO] Phase 1: Setting up system user... OK [INFO] Phase 1: Setting up system user... OK
[INFO] Phase 2: Creating directory structure... OK [INFO] Phase 2: Creating directory structure... OK
[INFO] Phase 3: Installing source code... FAILED [INFO] Phase 3: Installing source code... FAILED
[ERROR] sync-files.sh: Permission denied writing to /usr/local/share/furt/ [ERROR] sync-files.sh: Permission denied writing to /usr/local/share/furt/
``` ```
@ -153,4 +153,5 @@ Das Script-System ist für Erweiterungen designt. Neue Scripts können einfach i
Diese Konsistenz macht es einfach das System zu verstehen und zu erweitern ohne bestehende Funktionalität zu beeinträchtigen. Diese Konsistenz macht es einfach das System zu verstehen und zu erweitern ohne bestehende Funktionalität zu beeinträchtigen.
Die Helper Scripts transformieren die manuelle furt-Installation von einem fehleranfälligen, wiederholenden Prozess zu einem robusten, automatisierten Workflow der bei Bedarf fein-granular gesteuert werden kann. Die Helper Scripts transformieren die manuelle furt-Installation von einem fehleranfälligen, wiederholenden Prozess zu einem robusten, automatisierten Workflow der bei Bedarf fein-granular gesteuert werden kann.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Automatisierung verstehen ## Automatisierung verstehen
@ -24,7 +24,7 @@ doas pkg_add lua lua-socket lua-cjson luasec
# Debian # Debian
sudo apt install lua5.1 lua-socket lua-cjson lua-sec sudo apt install lua5.1 lua-socket lua-cjson lua-sec
# Arch Linux # Arch Linux
sudo pacman -S lua51 lua51-socket lua51-dkjson lua51-sec sudo pacman -S lua51 lua51-socket lua51-dkjson lua51-sec
``` ```
@ -51,7 +51,7 @@ Für eine neue furt-Installation führst du einfach das Orchestrator-Script aus:
doas ./install.sh doas ./install.sh
# Linux # Linux
sudo ./install.sh sudo ./install.sh
``` ```
Das Script durchläuft sechs Phasen und gibt für jeden Schritt eine Statusmeldung aus: Das Script durchläuft sechs Phasen und gibt für jeden Schritt eine Statusmeldung aus:
@ -76,7 +76,7 @@ furt installation completed successfully
Next steps: Next steps:
1. Edit configuration file: /usr/local/etc/furt/furt.conf 1. Edit configuration file: /usr/local/etc/furt/furt.conf
2. Start the service: doas rcctl start furt 2. Start the service: doas rcctl start furt
3. Test the API: curl http://127.0.0.1:7811/health 3. Test the API: curl http://127.0.0.1:7811/health
``` ```
@ -103,7 +103,7 @@ Nach der Konfiguration startest du furt mit den Standard-System-Tools:
doas rcctl start furt doas rcctl start furt
doas rcctl check furt doas rcctl check furt
# Linux # Linux
sudo systemctl start furt sudo systemctl start furt
sudo systemctl status furt sudo systemctl status furt
``` ```
@ -168,7 +168,7 @@ Jedes Helper Script kann auch einzeln ausgeführt werden. Dies ist nützlich fü
# Nur Source-Code aktualisieren # Nur Source-Code aktualisieren
sudo ./scripts/sync-files.sh sudo ./scripts/sync-files.sh
# Nur Konfiguration validieren # Nur Konfiguration validieren
sudo ./scripts/validate-config.sh sudo ./scripts/validate-config.sh
# Nur Health Check # Nur Health Check
@ -185,4 +185,5 @@ Häufige Probleme sind fehlende Berechtigungen, bereits existierende Benutzer od
Bei komplexeren Problemen kannst du zur manuellen Installation zurückkehren um jeden Schritt einzeln zu kontrollieren und zu verstehen wo der Fehler auftritt. Bei komplexeren Problemen kannst du zur manuellen Installation zurückkehren um jeden Schritt einzeln zu kontrollieren und zu verstehen wo der Fehler auftritt.
Die automatisierte Installation beschleunigt wiederkehrende furt-Deployments erheblich und reduziert die Wahrscheinlichkeit von Tippfehlern bei der manuellen Installation. Die automatisierte Installation beschleunigt wiederkehrende furt-Deployments erheblich und reduziert die Wahrscheinlichkeit von Tippfehlern bei der manuellen Installation.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Systemanforderungen verstehen ## Systemanforderungen verstehen
@ -77,7 +77,7 @@ Jetzt erstellen wir die benötigten Verzeichnisse mit korrekten Berechtigungen:
```bash ```bash
# OpenBSD Verzeichnisse # OpenBSD Verzeichnisse
doas mkdir -p /usr/local/etc/furt doas mkdir -p /usr/local/etc/furt
doas mkdir -p /usr/local/share/furt doas mkdir -p /usr/local/share/furt
doas mkdir -p /var/log/furt doas mkdir -p /var/log/furt
doas mkdir -p /var/run/furt doas mkdir -p /var/run/furt
@ -89,10 +89,10 @@ doas chown _furt:_furt /var/run/furt
Unter Linux ist die Struktur identisch, nur das Config-Verzeichnis liegt direkt in `/etc/`: Unter Linux ist die Struktur identisch, nur das Config-Verzeichnis liegt direkt in `/etc/`:
```bash ```bash
# Linux Verzeichnisse # Linux Verzeichnisse
sudo mkdir -p /etc/furt sudo mkdir -p /etc/furt
sudo mkdir -p /usr/local/share/furt sudo mkdir -p /usr/local/share/furt
sudo mkdir -p /var/log/furt sudo mkdir -p /var/log/furt
sudo mkdir -p /var/run/furt sudo mkdir -p /var/run/furt
sudo chown furt:furt /var/log/furt sudo chown furt:furt /var/log/furt
@ -108,7 +108,7 @@ Der furt-Quellcode wird nach `/usr/local/share/furt/` kopiert. Dieses Verzeichni
sudo cp -r src/ config/ scripts/ integrations/ /usr/local/share/furt/ sudo cp -r src/ config/ scripts/ integrations/ /usr/local/share/furt/
# Versions-Dateien für merkwerk-Integration falls vorhanden # Versions-Dateien für merkwerk-Integration falls vorhanden
sudo cp VERSION /usr/local/share/furt/ 2>/dev/null || true sudo cp VERSION /usr/local/share/furt/ 2>/dev/null || true
sudo cp .version_history /usr/local/share/furt/ 2>/dev/null || true sudo cp .version_history /usr/local/share/furt/ 2>/dev/null || true
``` ```
@ -125,7 +125,7 @@ sudo chmod +x /usr/local/share/furt/scripts/start.sh
Unter Linux ist die Gruppe `root`: Unter Linux ist die Gruppe `root`:
```bash ```bash
# Linux nutzt root als Standard-Gruppe # Linux nutzt root als Standard-Gruppe
sudo chown -R root:root /usr/local/share/furt sudo chown -R root:root /usr/local/share/furt
sudo chmod -R 644 /usr/local/share/furt sudo chmod -R 644 /usr/local/share/furt
sudo find /usr/local/share/furt -type d -exec chmod 755 {} \; sudo find /usr/local/share/furt -type d -exec chmod 755 {} \;
@ -149,7 +149,7 @@ Die wichtigsten Anpassungen betreffen die SMTP-Zugangsdaten und API-Keys. Öffne
```ini ```ini
[smtp_default] [smtp_default]
host = mail.example.com host = mail.example.com
user = noreply@example.com user = noreply@example.com
password = your-smtp-password-here password = your-smtp-password-here
``` ```
@ -166,7 +166,7 @@ Da die Konfigurationsdatei SMTP-Passwörter enthält, beschränken wir den Zugri
```bash ```bash
# OpenBSD Berechtigungen # OpenBSD Berechtigungen
doas chmod 640 /usr/local/etc/furt/furt.conf doas chmod 640 /usr/local/etc/furt/furt.conf
doas chown root:_furt /usr/local/etc/furt/furt.conf doas chown root:_furt /usr/local/etc/furt/furt.conf
# Linux Berechtigungen # Linux Berechtigungen
@ -192,7 +192,7 @@ Das `furt_flags=` in `/etc/rc.conf.local` ermöglicht es später Command-Line-Pa
Unter Linux verwenden wir systemd: Unter Linux verwenden wir systemd:
```bash ```bash
sudo cp deployment/linux/furt.service /etc/systemd/system/ sudo cp deployment/linux/furt.service /etc/systemd/system/
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable furt sudo systemctl enable furt
``` ```
@ -212,7 +212,7 @@ doas rcctl check furt
Der `rcctl check` Befehl zeigt ob der Service läuft. Bei Problemen findest du Fehlerdetails im System-Log. Der `rcctl check` Befehl zeigt ob der Service läuft. Bei Problemen findest du Fehlerdetails im System-Log.
```bash ```bash
# Linux Service-Start # Linux Service-Start
sudo systemctl start furt sudo systemctl start furt
sudo systemctl status furt sudo systemctl status furt
``` ```
@ -231,14 +231,15 @@ Die Response zeigt Service-Status, Version und verfügbare Features. Um die Mail
```bash ```bash
curl -X POST http://127.0.0.1:7811/v1/mail/send \ curl -X POST http://127.0.0.1:7811/v1/mail/send \
-H "X-API-Key: website-key" \ -H "X-API-Key: website-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{ -d '{
"name": "Installation Test", "name": "Installation Test",
"email": "test@example.com", "email": "test@example.com",
"subject": "furt Test", "subject": "furt Test",
"message": "Installation erfolgreich" "message": "Installation erfolgreich"
}' }'
``` ```
Eine erfolgreiche Response bestätigt dass SMTP-Konfiguration und API-Key korrekt funktionieren. Die Test-Mail sollte an die in der Konfiguration angegebene Adresse ankommen. Eine erfolgreiche Response bestätigt dass SMTP-Konfiguration und API-Key korrekt funktionieren. Die Test-Mail sollte an die in der Konfiguration angegebene Adresse ankommen.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Konfigurationskonzept verstehen ## Konfigurationskonzept verstehen
@ -213,7 +213,7 @@ furt liest die Konfigurationsdatei beim Start. Nach Änderungen musst du den Ser
# OpenBSD # OpenBSD
doas rcctl restart furt doas rcctl restart furt
# Linux # Linux
sudo systemctl restart furt sudo systemctl restart furt
``` ```
@ -239,4 +239,5 @@ curl -X POST http://127.0.0.1:7811/v1/mail/send \
Der Auth-Status-Endpunkt zeigt welche Permissions der verwendete API-Key hat. Der Mail-Test sendet eine echte E-Mail an die konfigurierte Adresse und bestätigt dass SMTP-Routing funktioniert. Der Auth-Status-Endpunkt zeigt welche Permissions der verwendete API-Key hat. Der Mail-Test sendet eine echte E-Mail an die konfigurierte Adresse und bestätigt dass SMTP-Routing funktioniert.
Diese flexible Konfigurationsarchitektur ermöglicht es furt als zentraler Mail-Gateway für komplexe Multi-Website-Umgebungen zu fungieren, während jede Website ihre spezifischen Routing- und Sicherheitsanforderungen erfüllen kann. Diese flexible Konfigurationsarchitektur ermöglicht es furt als zentraler Mail-Gateway für komplexe Multi-Website-Umgebungen zu fungieren, während jede Website ihre spezifischen Routing- und Sicherheitsanforderungen erfüllen kann.

@ -18,7 +18,7 @@ X-API-Key: your-tenant-api-key
**Warum Tenant-basiert:** Jeder API-Key definiert: **Warum Tenant-basiert:** Jeder API-Key definiert:
- Eigenen Mail-Empfänger - Eigenen Mail-Empfänger
- Eigene SMTP-Konfiguration - Eigene SMTP-Konfiguration
- Eigene Subject-Präfixe - Eigene Subject-Präfixe
- Isolierte Mail-Logs - Isolierte Mail-Logs
@ -67,7 +67,7 @@ Dadurch kann ein Furt-Gateway Kontaktformulare für mehrere Websites gleichzeiti
```json ```json
// Invalid examples // Invalid examples
{"name": ""} // Empty string {"name": ""} // Empty string
{"name": " "} // Only whitespace {"name": " "} // Only whitespace
{"name": null} // Null value {"name": null} // Null value
{"name": 123} // Wrong type {"name": 123} // Wrong type
``` ```
@ -205,7 +205,7 @@ Website: your-website (your-api-key)
From: John Doe <john@example.com> From: John Doe <john@example.com>
Subject: Partnership Inquiry Subject: Partnership Inquiry
Hello, I'm interested in discussing a potential partnership. Hello, I'm interested in discussing a potential partnership.
Could we schedule a call this week? Could we schedule a call this week?
--- ---
@ -259,10 +259,10 @@ X-RateLimit-Reset: 1632150000
```javascript ```javascript
document.getElementById('contact-form').addEventListener('submit', async (e) => { document.getElementById('contact-form').addEventListener('submit', async (e) => {
e.preventDefault(); e.preventDefault();
const formData = new FormData(e.target); const formData = new FormData(e.target);
const data = Object.fromEntries(formData); const data = Object.fromEntries(formData);
try { try {
const response = await fetch('/v1/mail/send', { const response = await fetch('/v1/mail/send', {
method: 'POST', method: 'POST',
@ -272,9 +272,9 @@ document.getElementById('contact-form').addEventListener('submit', async (e) =>
}, },
body: JSON.stringify(data) body: JSON.stringify(data)
}); });
const result = await response.json(); const result = await response.json();
if (result.success) { if (result.success) {
alert('Message sent successfully!'); alert('Message sent successfully!');
e.target.reset(); e.target.reset();
@ -290,8 +290,8 @@ document.getElementById('contact-form').addEventListener('submit', async (e) =>
### Hugo Shortcode Integration ### Hugo Shortcode Integration
```go ```go
{{< furt-contact-form {{< furt-contact-form
api-endpoint="https://api.dragons-at-work.de/v1/mail/send" api-endpoint="https://api.example.com/v1/mail/send"
api-key="your-api-key" api-key="your-api-key"
success-url="/contact/thanks/" success-url="/contact/thanks/"
fields="name,email,subject,message" fields="name,email,subject,message"
@ -302,18 +302,18 @@ document.getElementById('contact-form').addEventListener('submit', async (e) =>
```bash ```bash
# Valid request # Valid request
curl -X POST https://api.dragons-at-work.de/v1/mail/send \ curl -X POST https://api.example.com/v1/mail/send \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \ -H "X-API-Key: your-api-key" \
-d '{ -d '{
"name": "Test User", "name": "Test User",
"email": "test@example.com", "email": "test@example.com",
"subject": "Test Message", "subject": "Test Message",
"message": "This is a test message from the API." "message": "This is a test message from the API."
}' }'
# Test validation error # Test validation error
curl -X POST https://api.dragons-at-work.de/v1/mail/send \ curl -X POST https://api.example.com/v1/mail/send \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \ -H "X-API-Key: your-api-key" \
-d '{ -d '{
@ -377,4 +377,5 @@ Sending mail for tenant: your-website
To: contact@your-website.com To: contact@your-website.com
From: noreply@your-website.com From: noreply@your-website.com
SMTP: mail.your-provider.com:587 SMTP: mail.your-provider.com:587
``` ```

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -254,4 +254,5 @@ cp deployment/openbsd/rc.d-furt /etc/rc.d/furt
sed -i "s|/usr/local|$PREFIX|g" /etc/rc.d/furt sed -i "s|/usr/local|$PREFIX|g" /etc/rc.d/furt
``` ```
Das `create-service.sh` Script abstrahiert die Komplexität verschiedener Service-Management-Systeme und macht furt zu einem echten System-Service der automatisch startet, überwacht wird und in die Betriebssystem-Verwaltung integriert ist. Das `create-service.sh` Script abstrahiert die Komplexität verschiedener Service-Management-Systeme und macht furt zu einem echten System-Service der automatisch startet, überwacht wird und in die Betriebssystem-Verwaltung integriert ist.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -43,7 +43,7 @@ Die zweistufige Validierung deckt verschiedene Fehlerszenarien ab:
Der `/health` Endpunkt testet die gesamte furt-Applikations-Pipeline: Der `/health` Endpunkt testet die gesamte furt-Applikations-Pipeline:
- **Lua-Runtime:** Script-Loading und Execution - **Lua-Runtime:** Script-Loading und Execution
- **HTTP-Server:** Request-Parsing und Response-Generation - **HTTP-Server:** Request-Parsing und Response-Generation
- **Konfiguration:** Config-File-Loading und Validation - **Konfiguration:** Config-File-Loading und Validation
- **Features:** SMTP-Integration und Auth-System-Status - **Features:** SMTP-Integration und Auth-System-Status
@ -194,7 +194,7 @@ Das Script verwendet Standardwerte falls Parameter nicht erkannt werden:
# Korrekte Syntax # Korrekte Syntax
./scripts/health-check.sh --host 192.168.1.10 --port 8080 ./scripts/health-check.sh --host 192.168.1.10 --port 8080
# Nicht: # Nicht:
./scripts/health-check.sh 192.168.1.10 8080 ./scripts/health-check.sh 192.168.1.10 8080
``` ```
@ -256,4 +256,5 @@ else
fi fi
``` ```
Das `health-check.sh` Script ist der Schlussstein des modularen furt-Installationssystems und stellt sicher dass alle vorherigen Installationsschritte erfolgreich waren und der Service vollständig betriebsbereit ist. Das `health-check.sh` Script ist der Schlussstein des modularen furt-Installationssystems und stellt sicher dass alle vorherigen Installationsschritte erfolgreich waren und der Service vollständig betriebsbereit ist.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -197,4 +197,5 @@ CONFIG_DIR="$PREFIX/etc/furt"
SHARE_DIR="$PREFIX/share/furt" SHARE_DIR="$PREFIX/share/furt"
``` ```
Das `setup-directories.sh` Script schafft eine konsistente, sichere Verzeichnisstruktur die sich nahtlos in verschiedene Betriebssysteme integriert und dabei bewährte Admin-Praktiken respektiert. Das `setup-directories.sh` Script schafft eine konsistente, sichere Verzeichnisstruktur die sich nahtlos in verschiedene Betriebssysteme integriert und dabei bewährte Admin-Praktiken respektiert.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -116,7 +116,7 @@ getent passwd | grep -E '(furt|_furt)'
# BSD-spezifisch # BSD-spezifisch
id _furt id _furt
# Linux-spezifisch # Linux-spezifisch
id furt id furt
``` ```
@ -173,4 +173,5 @@ groupadd -g 1100 _furt 2>/dev/null || true
useradd -u 1100 -g _furt -s /bin/false -d /var/empty _furt 2>/dev/null || true useradd -u 1100 -g _furt -s /bin/false -d /var/empty _furt 2>/dev/null || true
``` ```
Das `setup-user.sh` Script reduziert die komplexen Unterschiede zwischen Betriebssystemen auf ein einfaches, einheitliches Interface. Es ist der erste Baustein des modularen Installationssystems und demonstriert wie kleine, spezialisierte Scripts robuste Automatisierung ermöglichen können. Das `setup-user.sh` Script reduziert die komplexen Unterschiede zwischen Betriebssystemen auf ein einfaches, einheitliches Interface. Es ist der erste Baustein des modularen Installationssystems und demonstriert wie kleine, spezialisierte Scripts robuste Automatisierung ermöglichen können.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -138,7 +138,7 @@ stat -c "%a %n" /usr/local/share/furt/scripts/start.sh
Korrekte Synchronisation zeigt alle Source-Verzeichnisse mit entsprechenden Berechtigungen: Korrekte Synchronisation zeigt alle Source-Verzeichnisse mit entsprechenden Berechtigungen:
``` ```
drwxr-xr-x root wheel 512 src drwxr-xr-x root wheel 512 src
drwxr-xr-x root wheel 512 config drwxr-xr-x root wheel 512 config
drwxr-xr-x root wheel 512 scripts drwxr-xr-x root wheel 512 scripts
-rwxr-xr-x root wheel 1234 scripts/start.sh -rwxr-xr-x root wheel 1234 scripts/start.sh
``` ```
@ -208,4 +208,5 @@ if [ -d "$TARGET" ]; then
fi fi
``` ```
Das `sync-files.sh` Script schließt die Lücke zwischen Development und Installation durch automatisierte, sichere Synchronisation aller furt-Komponenten mit betriebssystem-angemessenen Berechtigungen. Das `sync-files.sh` Script schließt die Lücke zwischen Development und Installation durch automatisierte, sichere Synchronisation aller furt-Komponenten mit betriebssystem-angemessenen Berechtigungen.

@ -4,7 +4,7 @@
## Getestet unter ## Getestet unter
- OpenBSD 7.7 - OpenBSD 7.7
- Debian 12 - Debian 12
- Arch Linux - Arch Linux
## Zweck des Scripts ## Zweck des Scripts
@ -246,4 +246,5 @@ if ! grep -q '^port' "$CONFIG_FILE"; then
fi fi
``` ```
Das `validate-config.sh` Script ist ein kritischer Sicherheits-Checkpoint der verhindert dass furt mit defekter Konfiguration startet und dadurch unvorhersagbare Fehler oder Sicherheitslücken entstehen. Es balanciert gründliche Validierung mit praktischer Nutzbarkeit. Das `validate-config.sh` Script ist ein kritischer Sicherheits-Checkpoint der verhindert dass furt mit defekter Konfiguration startet und dadurch unvorhersagbare Fehler oder Sicherheitslücken entstehen. Es balanciert gründliche Validierung mit praktischer Nutzbarkeit.