a3499d1807
gates / gates (push) Successful in 9s
R-216: the offsite key recovery is a coupled feature and now says so. featureProbes +
featureMinAgent 0.125.0 + a Supports gate at the unlock entry point, FAILING CLOSED — an
agent that cannot answer is named as such instead of the customer's code being blamed.
Measured live: a 404 from agent 0.120.0 came back as "we did not accept your recovery
code, check that all ten words", in 0.134 s, against a perfect code.
R-218: delete the repo-password short-circuit in needsOffsiteCredential. The declaration
stops when the TIER WORKS, not when a key exists — installing a key is the recovery
screen's whole job, so succeeding at recovery was switching off the mechanism that would
have delivered the coordinates to use it.
R-219: the unlock finishes the job — place the key, bring the tier up, then list. Without
it the promised listing could never render on the shape the screen exists for.
R-217: an unreadable store no longer claims to have opened with unattributable content
(the OffsiteInventory{} zero value). Opened / empty / unreadable are three states.
R-222: a code that is right about a RETAINED earlier package is named, not blamed. States
what the hub knows and promises nothing — no read path exists.
R-215: GET /recovery is gated on the same predicate as the interception.
Five red-proofs, each demonstrated failing and restored.
152 lines
7.5 KiB
HTML
152 lines
7.5 KiB
HTML
{{define "recovery"}}
|
|
<!DOCTYPE html>
|
|
<html lang="hu">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="robots" content="noindex, nofollow">
|
|
<title>Adatok visszaszerzése — Felhom</title>
|
|
<link rel="stylesheet" href="/static/style.css">
|
|
</head>
|
|
<body class="login-body">
|
|
<div class="login-card" style="max-width:46rem">
|
|
<img src="/static/felhom-logo.svg" alt="Felhom.eu" class="login-logo">
|
|
|
|
{{if .Unlocked}}
|
|
<!-- ── AFTER THE UNLOCK: what is in there. Read-only — nothing was restored. ────────────── -->
|
|
<h1 class="login-title">A mentéseid <span class="title-accent">elérhetők</span></h1>
|
|
{{if .Flash}}<div class="alert alert-info">{{.Flash}}</div>{{end}}
|
|
{{if .Error}}<div class="alert alert-error">{{.Error}}</div>{{end}}
|
|
|
|
{{if .InvUnavailable}}
|
|
<!-- R-217: the unlock SUCCEEDED but the repository could not be read. It renders NO listing and
|
|
claims nothing about the contents — the .Error above already says what is pending. This
|
|
branch exists because the previous code passed a zero-value OffsiteInventory here, whose
|
|
Empty=false fell through to .InvUntagged and asserted the store had opened with content. -->
|
|
{{else if .InvEmpty}}
|
|
<div class="alert alert-warning">
|
|
A tároló megnyílt, de <strong>nincs benne egyetlen mentés sem</strong>. Ez azt jelenti, hogy a
|
|
kulcs jó volt, de ehhez a géphez nem tartozik korábbi mentés. Ha korábban biztosan készültek
|
|
mentések, keresd a Felhom ügyfélszolgálatát, mielőtt bármit tennél.
|
|
</div>
|
|
{{else if .InvUntagged}}
|
|
<div class="alert alert-warning">
|
|
A tároló megnyílt, és van benne tartalom, de nem tudtuk alkalmazásokhoz rendelni. A Biztonsági
|
|
mentés oldalon nézheted meg részletesen.
|
|
</div>
|
|
{{else}}
|
|
<p class="login-subtitle" style="margin-bottom:1rem">
|
|
Ezek a <strong>te</strong> mentéseid, a lent jelzett időpontokból. Nézd át, hogy tényleg azt
|
|
találod-e itt, amire számítasz — <strong>semmit nem állítottunk vissza és semmi nem változott.</strong>
|
|
</p>
|
|
<table class="data-table" style="width:100%;margin-bottom:1rem">
|
|
<thead><tr><th>Alkalmazás</th><th>Legutóbbi mentés</th><th>Méret</th></tr></thead>
|
|
<tbody>
|
|
{{range .InvApps}}
|
|
<tr>
|
|
<td>{{.App}}</td>
|
|
<td>{{fmtTime .LatestAt}}</td>
|
|
<td>{{if gt .SizeBytes 0}}{{humanBytes .SizeBytes}}{{else}}—{{end}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
{{end}}
|
|
|
|
<p class="form-hint">
|
|
A visszaállítás alkalmazásonként történik, a <strong>Biztonsági mentés → Visszaállítás</strong>
|
|
oldalon. Ott választhatod ki, melyik alkalmazás mit hozzon vissza.
|
|
</p>
|
|
<div class="form-actions">
|
|
<a href="/backups/restore" class="btn btn-primary">Tovább a visszaállításhoz</a>
|
|
<a href="/launcher" class="btn btn-outline">Vissza a kezdőlapra</a>
|
|
</div>
|
|
|
|
{{else}}
|
|
<!-- ── BEFORE ANY CODE: explain, then take the code. ───────────────────────────────────── -->
|
|
<h1 class="login-title">Adatok <span class="title-accent">visszaszerzése</span></h1>
|
|
<p class="login-subtitle">{{.CustomerName}}</p>
|
|
|
|
{{if .Flash}}<div class="alert alert-info">{{.Flash}}</div>{{end}}
|
|
{{if .Error}}<div class="alert alert-error">{{.Error}}</div>{{end}}
|
|
|
|
<p>
|
|
Ezt a gépet újratelepítették. A korábbi, <strong>házon kívüli mentéseid megvannak</strong> — a
|
|
Felhom központi rendszere őriz hozzájuk egy lezárt csomagot{{with .SealedAt}}, amelyet
|
|
<strong>{{.}}</strong> zártunk le{{end}}. A csomagot csak a <strong>te helyreállítási
|
|
kódoddal</strong> lehet kinyitni.
|
|
</p>
|
|
|
|
<div class="alert alert-warning">
|
|
<strong>A helyreállítási kódot senki nem tudja pótolni</strong> — sem a Felhom, sem az
|
|
ügyfélszolgálat, sem az üzemeltető. Ez szándékos: így a mentéseidet rajtad kívül senki nem
|
|
tudja megnyitni. Ha a kód elveszett, a korábbi mentések nem nyithatók meg többé.
|
|
</div>
|
|
|
|
<p>
|
|
Ha megadod a kódot, <strong>feloldjuk a mentéseid zárolását és megmutatjuk, mi van bennük</strong>
|
|
— melyik alkalmazás, mikorról, mekkora. <strong>Ebben a lépésben semmit nem állítunk vissza és
|
|
semmi nem változik.</strong> A visszaállítást utána, alkalmazásonként külön választhatod.
|
|
</p>
|
|
|
|
<form method="POST" action="/recovery/unlock" autocomplete="off">
|
|
{{.CSRFField}}
|
|
<label for="recovery_code">Helyreállítási kód (tíz szó)</label>
|
|
<input type="password" id="recovery_code" name="recovery_code"
|
|
autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false"
|
|
placeholder="tíz szó, szóközökkel elválasztva" required>
|
|
<div class="form-actions">
|
|
<button type="submit" class="btn btn-primary">Mentések feloldása</button>
|
|
<form method="POST" action="/recovery/postpone" style="display:inline">
|
|
{{.CSRFField}}
|
|
<button type="submit" class="btn btn-outline">Most nem</button>
|
|
</form>
|
|
</div>
|
|
</form>
|
|
|
|
<p class="form-hint">
|
|
A „Most nem” csak azt jelenti, hogy nem zavarunk vele többet a kezdőlapon. A mentéseid ettől
|
|
megmaradnak, és ez az oldal a <strong>Biztonsági mentés → Távoli mentés</strong> oldalról
|
|
bármikor újra elérhető.
|
|
</p>
|
|
|
|
<!-- ── THE EXCEPTIONAL PATH. Deliberately not an equal third button. ───────────────────── -->
|
|
<hr style="margin:1.5rem 0;border:none;border-top:1px solid var(--border,#2a3142)">
|
|
{{if .ConfirmSetAside}}
|
|
<div class="alert alert-error">
|
|
<p><strong>Biztosan nem kéred vissza a korábbi mentéseket?</strong></p>
|
|
<p>Ha megerősíted:</p>
|
|
<ul>
|
|
<li>a korábbi mentéseket <strong>félretesszük — nem töröljük</strong>;</li>
|
|
<li>a helyreállítási kód nélkül <strong>többé nem lesznek megnyithatók</strong>;</li>
|
|
<li>a gép <strong>új, üres mentési tárolót kezd</strong>, és mostantól oda ment;</li>
|
|
<li>ez az oldal <strong>többé nem jelenik meg</strong>.</li>
|
|
</ul>
|
|
<p>Ha csak most nincs kéznél a kódod, válaszd inkább a „Most nem” lehetőséget.</p>
|
|
</div>
|
|
<div class="form-actions">
|
|
<form method="POST" action="/backup/offbox/reset">
|
|
{{.CSRFField}}
|
|
<input type="hidden" name="confirm" value="1">
|
|
<button type="submit" class="btn btn-danger">Igen, félretehetitek a korábbi mentéseket</button>
|
|
</form>
|
|
<a href="/recovery" class="btn btn-outline">Mégsem</a>
|
|
</div>
|
|
{{else}}
|
|
<p class="form-hint">
|
|
Ha a helyreállítási kódod véglegesen elveszett, és tudomásul veszed, hogy a korábbi mentések
|
|
így nem nyithatók meg többé:
|
|
{{if .CanSetAside}}
|
|
<a href="/recovery?setaside=1">nem kérem vissza a korábbi adatokat</a>.
|
|
{{else}}
|
|
ez a lehetőség akkor válik elérhetővé, ha a gép már újra kapcsolódott a házon kívüli
|
|
tárhelyhez. Addig a mentéseid érintetlenül megmaradnak.
|
|
{{end}}
|
|
</p>
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|