Files
perinco-CRM/deploy/scanner-setup.sh
T
Sascha WolfandClaude Opus 5 3c9d83161e chore(scanner): alte Scanner-App zurueckgebaut
Die eigenstaendige Vorgaenger-App unter scanner.perinco.de ist auf dem Server
entfernt: Unit project-scanner-backend (Port 5005), beide Apache-Vhosts, das
Let's-Encrypt-Zertifikat samt Renewal-Config, /var/www/Projekt Scanner (486 MB)
und die Datenbank project_scanner (Dump unter /root/backups). Damit entfallen
die LEGACY_*-Variablen und das Importskript, dessen Quelle es nicht mehr gibt.

/root/.cache/ms-playwright bleibt bewusst stehen: der Cache stammt aus der
Installation der alten App, liegt aber ausserhalb beider Verzeichnisse und wird
vom CRM-Scanner benutzt - playwright ist auf 1.60.0 gepinnt, damit es genau
dieser Build (chromium-1223) bleibt. Der Hinweis steht jetzt in README und
docs/06-betrieb.md, damit ihn beim naechsten Aufraeumen niemand mitnimmt.

SCANNER_SCHEDULER_OFFSET geht auf 0: der Versatz sollte verhindern, dass beide
Instanzen mit denselben Portal-Cookies gleichzeitig losziehen. Ohne zweite
Instanz hat er keinen Zweck mehr, die Mechanik bleibt fuer kuenftige Erststarts
im Code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 17:45:42 +02:00

75 lines
2.6 KiB
Bash

#!/bin/bash
# ---------------------------------------------------------------------------
# Einmalige Einrichtung des portierten Projekt Scanners im CRM-Backend.
#
# Ergaenzt /var/www/perinco_CRM/server/.env um die SCANNER_*-Variablen.
# Idempotent: vorhandene Werte werden nicht ueberschrieben, der
# Verschluesselungsschluessel wird nur erzeugt, wenn noch keiner drinsteht.
#
# Geheimnisse werden nie ausgegeben - nur, ob ein Wert gesetzt ist.
#
# Die eigenstaendige Vorgaenger-App (scanner.perinco.de, Port 5005, Datenbank
# project_scanner) wurde am 09.09.2026 zurueckgebaut. Die frueher hier
# gesetzten LEGACY_*-Variablen und das Importskript sind damit entfallen.
#
# Aufruf auf dem Server:
# bash /tmp/scanner-setup.sh
# ---------------------------------------------------------------------------
set -euo pipefail
CRM_ENV=/var/www/perinco_CRM/server/.env
if [ ! -f "$CRM_ENV" ]; then
echo "FEHLER: $CRM_ENV fehlt."
exit 1
fi
cp -a "$CRM_ENV" "$CRM_ENV.bak.$(date +%Y%m%d%H%M%S)"
# Wert nur setzen, wenn der Schluessel fehlt oder leer ist.
#
# Werte mit Leerzeichen werden gequotet: systemd liest diese Datei als
# EnvironmentFile und trennt dort an Leerzeichen - ein ungequoteter Pfad kaeme
# abgeschnitten an. dotenv entfernt die Quotes beim Einlesen wieder.
upsert() {
local key="$1" value="$2"
if grep -qE "^${key}=.+" "$CRM_ENV"; then
echo " $key: bleibt unveraendert"
return
fi
# Leere Zeile des Schluessels entfernen, dann neu anhaengen.
sed -i "/^${key}=/d" "$CRM_ENV"
case "$value" in
*[[:space:]]*) printf '%s="%s"\n' "$key" "$value" >> "$CRM_ENV" ;;
*) printf '%s=%s\n' "$key" "$value" >> "$CRM_ENV" ;;
esac
echo " $key: gesetzt"
}
echo "== Scanner-Konfiguration in $CRM_ENV =="
# Kopfzeile nur beim ersten Lauf, sonst sammelt sich bei jedem Aufruf eine an.
if ! grep -q '^# --- Projekt Scanner' "$CRM_ENV"; then
printf '\n# --- Projekt Scanner (eingerichtet durch deploy/scanner-setup.sh) ---\n' >> "$CRM_ENV"
fi
upsert SCANNER_DB_NAME perinco_scanner
upsert SCANNER_UPLOAD_DIR /var/www/perinco_CRM/server/uploads
upsert SCANNER_SCHEDULER true
upsert SCANNER_SCHEDULER_OFFSET 0
if grep -qE '^SCANNER_ENCRYPTION_KEY=.+' "$CRM_ENV"; then
echo " SCANNER_ENCRYPTION_KEY: bleibt unveraendert"
else
sed -i '/^SCANNER_ENCRYPTION_KEY=/d' "$CRM_ENV"
printf 'SCANNER_ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" >> "$CRM_ENV"
echo " SCANNER_ENCRYPTION_KEY: neu erzeugt (64 Hex-Zeichen)"
fi
chmod 600 "$CRM_ENV"
echo "== Ergebnis (Werte maskiert) =="
grep -E '^SCANNER_' "$CRM_ENV" | sed -E 's/=(.+)/= <gesetzt>/' | sort -u
echo "Fertig. Danach: systemctl restart perinco-crm-backend"