feat: add per-hoster provider routing (Hoster-Zuordnung)

- New settings field hosterRouting maps file hosters to specific debrid providers
- 27 known hosters predefined (Rapidgator, Uploaded, Turbobit, Nitroflare, etc.)
- Custom hoster support via prompt dialog
- Routing takes priority over default provider chain
- Falls back to normal chain on error when autoProviderFallback is enabled
- Logs routing decisions: "Hoster-Zuordnung: rapidgator → Debrid-Link"
- Full UI section in settings with add/remove/change provider per hoster
- Storage validation and normalization for hosterRouting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sucukdeluxe
2026-03-06 19:14:16 +01:00
co-authored by Claude Opus 4.6
parent 9f94404435
commit c811649b9d
6 changed files with 246 additions and 3 deletions
+63
View File
@@ -1305,6 +1305,69 @@ body,
opacity: 1;
}
.hoster-routing-table {
display: flex;
flex-direction: column;
gap: 0;
border: 1px solid var(--border);
border-radius: 10px;
overflow: hidden;
margin-bottom: 10px;
}
.hoster-routing-header {
display: grid;
grid-template-columns: 1fr 1fr 40px;
gap: 10px;
padding: 8px 12px;
background: color-mix(in srgb, var(--card) 80%, var(--surface));
font-size: 0.78rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--muted);
border-bottom: 1px solid var(--border);
}
.hoster-routing-row {
display: grid;
grid-template-columns: 1fr 1fr 40px;
gap: 10px;
padding: 6px 12px;
align-items: center;
border-bottom: 1px solid color-mix(in srgb, var(--border) 40%, transparent);
}
.hoster-routing-row:last-child {
border-bottom: none;
}
.hoster-routing-label {
font-weight: 500;
font-size: 0.88rem;
}
.hoster-routing-row select {
padding: 4px 8px;
font-size: 0.84rem;
}
.hoster-routing-row .btn-sm {
padding: 2px 8px;
font-size: 0.9rem;
min-width: 28px;
line-height: 1.4;
border-radius: 6px;
}
.hoster-routing-add {
margin-top: 8px;
}
.hoster-routing-add select {
max-width: 260px;
}
.account-modal {
width: min(960px, calc(100vw - 36px));
max-height: calc(100vh - 36px);