Files
proxdeploy/prisma/migrations/20261012072448_server/migration.sql
T
florian.wildeandClaude Opus 5.5 48e2a5cb8f feat(server): Proxmox-Server verwalten mit Fingerprint-Pinning
Server lassen sich anlegen, prüfen, bearbeiten und löschen. Proxmox
liefert ab Werk ein selbst signiertes Zertifikat; der Admin sieht es
vor dem Speichern und bestätigt den SHA-256-Fingerprint.

Der Pin wird in einem eigenen undici-Connector geprüft, sodass eine
fremde Gegenstelle das Token nie zu sehen bekommt. Weder Prüfung noch
Pin ist im Schema, im Client und per CHECK ausgeschlossen.

Fehler von Proxmox werden zu Ursache und Hinweis; bei 403 nennt der
Hinweis das fehlende Recht samt Pfad. Getestet gegen einen HTTPS-Mock
und im gebauten Stand auf Desktop und 390 px.

Closes #002

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:35:10 +02:00

45 lines
1.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- CreateTable
CREATE TABLE "Server" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"titel" TEXT NOT NULL,
"url" TEXT NOT NULL,
"tokenId" TEXT NOT NULL,
"tokenGeheimnis" TEXT NOT NULL,
"tlsPruefen" BOOLEAN NOT NULL DEFAULT false,
"fingerabdruck" TEXT,
"sshAktiv" BOOLEAN NOT NULL DEFAULT false,
"sshBenutzer" TEXT NOT NULL DEFAULT 'root',
"sshPort" INTEGER NOT NULL DEFAULT 22,
"sshPrivat" TEXT,
"sshOeffentlich" TEXT,
"sshHostSchluessel" JSONB,
"templateVmidVon" INTEGER NOT NULL DEFAULT 9000,
"templateVmidBis" INTEGER NOT NULL DEFAULT 9999,
"gastVmidVon" INTEGER NOT NULL DEFAULT 100,
"bauNetz" JSONB,
"standards" JSONB,
"faehigkeiten" JSONB,
"erreichbar" BOOLEAN,
"pveVersion" TEXT,
"geprueftAm" TIMESTAMP(3),
"erstelltAm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"geaendertAm" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Server_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Server_name_key" ON "Server"("name");
-- Bereiche müssen sinnvoll sein: Proxmox erlaubt VMIDs von 100 bis 999999999.
ALTER TABLE "Server"
ADD CONSTRAINT "server_vmid_bereiche" CHECK (
"templateVmidVon" >= 100 AND "templateVmidVon" < "templateVmidBis" AND "templateVmidBis" <= 999999999
AND "gastVmidVon" >= 100 AND "gastVmidVon" <= 999999999
),
ADD CONSTRAINT "server_name_format" CHECK ("name" ~ '^[a-z0-9][a-z0-9-]{0,31}$'),
ADD CONSTRAINT "server_ssh_port" CHECK ("sshPort" BETWEEN 1 AND 65535),
-- Ohne TLS-Prüfung ist ein gepinnter Fingerprint Pflicht – sonst wäre jede Verbindung blind.
ADD CONSTRAINT "server_tls_oder_pin" CHECK ("tlsPruefen" OR "fingerabdruck" IS NOT NULL);