Release v1.5.72
- WRONG_PASSWORD JVM error now falls back to legacy UnRAR extractor - Added masked password logging for JVM and legacy extractors - Per-attempt password logging shows which passwords are tried and in what order Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
5dabee332e
commit
7029271999
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.5.71",
|
"version": "1.5.72",
|
||||||
"description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)",
|
"description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)",
|
||||||
"main": "build/main/main/main.js",
|
"main": "build/main/main/main.js",
|
||||||
"author": "Sucukdeluxe",
|
"author": "Sucukdeluxe",
|
||||||
|
|||||||
@ -1266,7 +1266,8 @@ async function runExternalExtract(
|
|||||||
}
|
}
|
||||||
logger.warn(`JVM-Extractor nicht verfügbar, nutze Legacy-Extractor: ${path.basename(archivePath)}`);
|
logger.warn(`JVM-Extractor nicht verfügbar, nutze Legacy-Extractor: ${path.basename(archivePath)}`);
|
||||||
} else {
|
} else {
|
||||||
logger.info(`JVM-Extractor aktiv (${layout.rootDir}): ${path.basename(archivePath)}`);
|
const maskedPasswords = passwordCandidates.map((p) => p === "" ? '""' : `"${p.slice(0, 2)}${"*".repeat(Math.max(0, p.length - 2))}"`);
|
||||||
|
logger.info(`JVM-Extractor aktiv (${layout.rootDir}): ${path.basename(archivePath)}, ${passwordCandidates.length} Passwörter: [${maskedPasswords.join(", ")}]`);
|
||||||
const jvmResult = await runJvmExtractCommand(
|
const jvmResult = await runJvmExtractCommand(
|
||||||
layout,
|
layout,
|
||||||
archivePath,
|
archivePath,
|
||||||
@ -1295,7 +1296,9 @@ async function runExternalExtract(
|
|||||||
const isCodecError = jvmFailureLower.includes("registered codecs")
|
const isCodecError = jvmFailureLower.includes("registered codecs")
|
||||||
|| jvmFailureLower.includes("can not open")
|
|| jvmFailureLower.includes("can not open")
|
||||||
|| jvmFailureLower.includes("cannot open archive");
|
|| jvmFailureLower.includes("cannot open archive");
|
||||||
const shouldFallbackToLegacy = isUnsupportedMethod || isCodecError;
|
const isWrongPassword = jvmFailureReason.includes("WRONG_PASSWORD")
|
||||||
|
|| jvmFailureLower.includes("wrong password");
|
||||||
|
const shouldFallbackToLegacy = isUnsupportedMethod || isCodecError || isWrongPassword;
|
||||||
if (backendMode === "jvm" && !shouldFallbackToLegacy) {
|
if (backendMode === "jvm" && !shouldFallbackToLegacy) {
|
||||||
throw new Error(jvmFailureReason);
|
throw new Error(jvmFailureReason);
|
||||||
}
|
}
|
||||||
@ -1303,6 +1306,8 @@ async function runExternalExtract(
|
|||||||
logger.warn(`JVM-Extractor: Komprimierungsmethode nicht unterstützt, fallback auf Legacy: ${path.basename(archivePath)}`);
|
logger.warn(`JVM-Extractor: Komprimierungsmethode nicht unterstützt, fallback auf Legacy: ${path.basename(archivePath)}`);
|
||||||
} else if (isCodecError) {
|
} else if (isCodecError) {
|
||||||
logger.warn(`JVM-Extractor: Archiv-Format nicht erkannt, fallback auf Legacy: ${path.basename(archivePath)}`);
|
logger.warn(`JVM-Extractor: Archiv-Format nicht erkannt, fallback auf Legacy: ${path.basename(archivePath)}`);
|
||||||
|
} else if (isWrongPassword) {
|
||||||
|
logger.warn(`JVM-Extractor: Kein Passwort hat funktioniert, fallback auf Legacy: ${path.basename(archivePath)}`);
|
||||||
} else {
|
} else {
|
||||||
logger.warn(`JVM-Extractor Fehler, fallback auf Legacy: ${jvmFailureReason}`);
|
logger.warn(`JVM-Extractor Fehler, fallback auf Legacy: ${jvmFailureReason}`);
|
||||||
}
|
}
|
||||||
@ -1351,8 +1356,12 @@ async function runExternalExtractInner(
|
|||||||
const passwords = passwordCandidates;
|
const passwords = passwordCandidates;
|
||||||
let lastError = "";
|
let lastError = "";
|
||||||
|
|
||||||
|
const maskedPasswords = passwords.map((p) => p === "" ? '""' : `"${p.slice(0, 2)}${"*".repeat(Math.max(0, p.length - 2))}"`);
|
||||||
|
logger.info(`Legacy-Extractor: ${path.basename(archivePath)}, ${passwords.length} Passwörter: [${maskedPasswords.join(", ")}]`);
|
||||||
|
|
||||||
let announcedStart = false;
|
let announcedStart = false;
|
||||||
let bestPercent = 0;
|
let bestPercent = 0;
|
||||||
|
let passwordAttempt = 0;
|
||||||
let usePerformanceFlags = externalExtractorSupportsPerfFlags && shouldUseExtractorPerformanceFlags();
|
let usePerformanceFlags = externalExtractorSupportsPerfFlags && shouldUseExtractorPerformanceFlags();
|
||||||
|
|
||||||
for (const password of passwords) {
|
for (const password of passwords) {
|
||||||
@ -1363,6 +1372,9 @@ async function runExternalExtractInner(
|
|||||||
announcedStart = true;
|
announcedStart = true;
|
||||||
onArchiveProgress?.(0);
|
onArchiveProgress?.(0);
|
||||||
}
|
}
|
||||||
|
passwordAttempt += 1;
|
||||||
|
const maskedPw = password === "" ? '""' : `"${password.slice(0, 2)}${"*".repeat(Math.max(0, password.length - 2))}"`;
|
||||||
|
logger.info(`Legacy-Passwort-Versuch ${passwordAttempt}/${passwords.length} für ${path.basename(archivePath)}: ${maskedPw}`);
|
||||||
let args = buildExternalExtractArgs(command, archivePath, targetDir, conflictMode, password, usePerformanceFlags, hybridMode);
|
let args = buildExternalExtractArgs(command, archivePath, targetDir, conflictMode, password, usePerformanceFlags, hybridMode);
|
||||||
let result = await runExtractCommand(command, args, (chunk) => {
|
let result = await runExtractCommand(command, args, (chunk) => {
|
||||||
const parsed = parseProgressPercent(chunk);
|
const parsed = parseProgressPercent(chunk);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user