- serve.py: URL-Encoding fix, Body-Limit (10MB), Port-Reuse, TOCTOU-Race, Logging - index.html: XSS in renderTemplates geheilt, Escape-Key für Edit-Modal, Accessibility - templates.json: Pfade ohne ../, leere Descriptions ergänzt - validate.py: categories/ entfernt, CLI-Flags umbenannt, zu mutually_exclusive_group - smoke_test.sh: set -euo pipefail, Port-Validation, Timeout 5s, code-Fallback - cleanup_server.sh: lsof statt pgrep, Graceful-Term + SIGKILL-Fallback - agent_verify.sh: set -euo pipefail, ROOT-Pfade, dynamischer Port, grep-Crash fix - AGENTS.md: history/ entfernt, Pfad-Schema präzisiert - README.md: categories/ entfernt, Web-Ansicht + API-Endpunkte hinzugefügt
26 lines
584 B
Bash
Executable file
26 lines
584 B
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PORT="${1:-8081}"
|
|
|
|
# Finde Prozess auf Port
|
|
PID=$(lsof -ti ":$PORT" 2>/dev/null || true)
|
|
|
|
if [ -n "$PID" ]; then
|
|
# Graceful shutdown attempt
|
|
kill -TERM "$PID" 2>/dev/null || true
|
|
# Warte bis zu 5 Sekunden
|
|
for i in $(seq 1 10); do
|
|
if ! kill -0 "$PID" 2>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 0.5
|
|
done
|
|
# Force kill if still running
|
|
if kill -0 "$PID" 2>/dev/null; then
|
|
kill -9 "$PID" 2>/dev/null || true
|
|
fi
|
|
echo "Prozess $PID auf Port $PORT beendet."
|
|
else
|
|
echo "Keine laufende Instanz auf Port $PORT gefunden."
|
|
fi
|