fix(v5): MakeMKV-Installer aus dem Internet Archive nur nach Rückfrage, mit Größe und SHA-256

WAS: makemkvInstallerHolen fragt vor der Archiv-Quelle über eine
Freigabe-Funktion; ohne Freigabe wird das Archiv übersprungen und im
Bericht genannt. Der Kern stellt die Frage ans Fenster (beschaffung-status
mit `frage`), die MakeMKV-Karte zeigt sie mit „Archiv-Kopie laden" /
„Lieber nicht" (beschaffung-antwort); ohne Antwort in zehn Minuten gilt
Nein. Die geladene Datei wird mit Größe und SHA-256 gemeldet.
WARUM: Durchsicht 12.09.2026, Fund F16 (Commander-Entscheid: Archiv nur
nach Rückfrage) — eine unsignierte EXE von fremder Hand, die mit
Adminrechten läuft, entscheidet der Nutzer, nicht Rippy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-09-12 21:43:13 +02:00
co-authored by Claude Opus 5
parent 3dacd7cb4f
commit ae82d8c0fd
7 changed files with 140 additions and 9 deletions
@@ -22,6 +22,7 @@ import {
} from '../bausteine'
import {
benachrichtigungTesten,
beschaffungAntworten,
einstellungSetzen,
fremdenOrdnerLoeschen,
kompressionAbbrechen,
@@ -480,6 +481,19 @@ export function MakemkvKarte({ verbindung }: { verbindung: Verbindung }) {
{b !== null && (
<div className="rounded-lg border border-tinte/10 bg-buehne/70 p-2.5">
<p className={`font-mono text-[11px] leading-5 ${b.fehler ? 'text-rot' : b.laeuft ? 'text-gold-hell' : 'text-gruen'}`}>{b.text}</p>
{b.frage !== undefined && b.frage.length > 0 && (
<div className="mt-2 rounded-lg border border-warn/45 bg-warn/10 p-2.5">
<p className="text-xs leading-5 text-dunst">{b.frage}</p>
<div className="mt-2 flex flex-wrap gap-2">
<button onClick={() => beschaffungAntworten(true)} className="rounded-lg border border-warn/50 bg-warn/15 px-3 py-1 text-[11px] font-semibold text-warn hover:bg-warn/25">
Archiv-Kopie laden
</button>
<button onClick={() => beschaffungAntworten(false)} className={KNOPF_LEISE}>
Lieber nicht
</button>
</div>
</div>
)}
{b.laeuft && b.anteil !== null && (
<div className="mt-1.5 h-1.5 overflow-hidden rounded-full bg-tinte/8">
<div className="h-full rounded-full bg-gradient-to-r from-gold-tief to-gold-hell transition-all" style={{ width: `${Math.round(b.anteil * 100)}%` }} />
@@ -381,6 +381,11 @@ export function schluesselPruefen(): void {
senden({ art: 'schluessel-pruefen' })
}
/** 5.7.0 (F16): Ja/Nein auf eine Frage der MakeMKV-Beschaffung. */
export function beschaffungAntworten(ja: boolean): void {
anKern({ art: 'beschaffung-antwort', ja }, 'Antwort an die Beschaffung')
}
export function einstellungSetzen(schluessel: string, wert: string): void {
anKern({ art: 'einstellung-setzen', schluessel, wert }, `Einstellung ${schluessel}`)
}