v0.249.0: i18n slice 1 release B — backup pages in English, Hungarian byte-identical (R-556)
gates / gates (push) Successful in 20s
gates / gates (push) Successful in 20s
Seven backup pages + the restore-progress JS converted against fixtures captured unconverted
(f8ebc47); recovery renders through executeTemplateLang; English retrieval claims registered;
the Fut comparison left unconverted (R-563).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
{{template "layout_start" .}}
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Biztonsági mentés — Távoli mentés</h2>
|
||||
<h2>{{T "backups_remote.biztonsagi_mentes_tavoli_mentes"}}</h2>
|
||||
<span class="domain-badge">{{.Domain}}</span>
|
||||
</div>
|
||||
|
||||
@@ -12,11 +12,9 @@
|
||||
<!-- R-193: the PERMANENT entry point. Bound to RecoveryOffer, never to the postpone flag — a
|
||||
customer who clicked "Most nem" once must not lose the route to their own data. -->
|
||||
<div class="alert alert-warning">
|
||||
<strong>A korábbi, házon kívüli mentéseid visszaszerezhetők.</strong>
|
||||
Ezt a gépet újratelepítették, és a Felhom központi rendszere őriz hozzá egy lezárt csomagot. A
|
||||
helyreállítási kódoddal feloldhatod a korábbi mentéseidet, és megnézheted, mi van bennük.
|
||||
{{T "backups_remote.a_korabbi_hazon_kivuli_menteseid"}}
|
||||
<div class="form-actions" style="margin-top:.5rem">
|
||||
<a href="/recovery" class="btn btn-primary">Adatok visszaszerzése</a>
|
||||
<a href="/recovery" class="btn btn-primary">{{T "backups_remote.adatok_visszaszerzese"}}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
@@ -31,30 +29,30 @@
|
||||
{{if and (not .OffboxConfigured) .OffsiteHubEnabled}}
|
||||
<!-- R-70 (v0.161.0): hub-managed offsite is provisioned for this box — "igényelhető" would be a
|
||||
lie (it is already ordered) and the bare empty state hid the pre-apply window (DIAG-f10). -->
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">Felhom offsite tárhely kiépítve — a beállítás automatikus, folyamatban. Ha egy napon belül nem áll be, jelezd az üzemeltetőnek.</div>
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">{{T "backups_remote.felhom_offsite_tarhely_kiepitve_a"}}</div>
|
||||
{{else if not .OffboxConfigured}}
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">Felhom offsite tárhely — igényelhető szolgáltatás. Titkosított, házon kívüli másolat a mentéseidről. Érdeklődj az üzemeltetőnél.</div>
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">{{T "backups_remote.felhom_offsite_tarhely_igenyelheto_szolg"}}</div>
|
||||
{{else if eq .OffboxToggledCount 0}}
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">Aktív — nincs kijelölt alkalmazás</div>
|
||||
<div class="alert alert-info" style="margin-bottom:1rem" id="felhom-offsite-card">{{T "backups_remote.aktiv_nincs_kijelolt_alkalmazas"}}</div>
|
||||
{{end}}
|
||||
|
||||
<!-- Off-box (NAS) backup — Part B: encrypted restic repo over SFTP (the off-site 3-2-1 leg). -->
|
||||
<h3 id="offbox-section" class="backup-tier-divider">Távoli mentés (3. mentés) — titkosított, offsite</h3>
|
||||
<p class="form-hint" style="margin:-0.25rem 0 1rem">Az alkalmazás-mentések titkosított másolata egy távoli tárolóra — saját NAS vagy Felhom offsite tárhely — restic + SFTP kapcsolaton. A tároló csak titkosított adatot lát. Ez a 3-2-1 szabály „1 off-site" lába — független a helyi másodpéldánytól és a teljes rendszermentéstől.</p>
|
||||
<h3 id="offbox-section" class="backup-tier-divider">{{T "backups_remote.tavoli_mentes_3_mentes_titkositott"}}</h3>
|
||||
<p class="form-hint" style="margin:-0.25rem 0 1rem">{{T "backups_remote.az_alkalmazas_mentesek_titkositott_masol"}}</p>
|
||||
<div class="card" style="margin-bottom:1.5rem">
|
||||
{{if .Offbox}}
|
||||
<div class="stats-grid backup-page-cards">
|
||||
<div class="stat-card {{if or (eq .Offbox.LastStatus "error") (eq .Offbox.LastStatus "incomplete")}}stat-warn{{end}}">
|
||||
<div class="stat-value" id="offbox-status-value" style="font-size:1.15rem">{{if eq .Offbox.LastStatus "ok"}}✓ Rendben{{else if eq .Offbox.LastStatus "incomplete"}}! Hiányos{{else if eq .Offbox.LastStatus "error"}}✗ Hiba{{else if eq .Offbox.LastStatus "running"}}Fut…{{else}}–{{end}}</div>
|
||||
<div class="stat-label">Utolsó távoli mentés{{if .Offbox.LastRun}}<br><span class="relative-time">{{timeAgoStr .Offbox.LastRun}}</span>{{end}}</div>
|
||||
<div class="stat-value" id="offbox-status-value" style="font-size:1.15rem">{{if eq .Offbox.LastStatus "ok"}}{{T "backups_remote.rendben"}}{{else if eq .Offbox.LastStatus "incomplete"}}{{T "backups_remote.hianyos"}}{{else if eq .Offbox.LastStatus "error"}}{{T "backups_remote.hiba"}}{{else if eq .Offbox.LastStatus "running"}}Fut…{{else}}–{{end}}</div>
|
||||
<div class="stat-label">{{T "backups_remote.utolso_tavoli_mentes"}}{{if .Offbox.LastRun}}<br><span class="relative-time">{{timeAgoStr .Offbox.LastRun}}</span>{{end}}</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value" style="font-size:1.15rem">{{if and .Offbox.StatsKnown .Offbox.RepoSizeHuman}}{{.Offbox.RepoSizeHuman}}{{else}}–{{end}}</div>
|
||||
<div class="stat-label">Tároló méret · {{if .Offbox.StatsKnown}}{{.Offbox.SnapshotCount}} pillanatkép{{else}}a pillanatképek száma még ismeretlen{{end}}</div>
|
||||
<div class="stat-label">{{T "backups_remote.tarolo_meret"}} {{if .Offbox.StatsKnown}}{{T "backups_remote.pillanatkep"}}{{else}}{{T "backups_remote.a_pillanatkepek_szama_meg_ismeretlen"}}{{end}}</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value" style="font-size:1.05rem">{{if .Offbox.Enabled}}{{.Offbox.User}}@{{.Offbox.Host}}{{else}}Kikapcsolva{{end}}</div>
|
||||
<div class="stat-label">{{if .Offbox.Enabled}}{{.Offbox.RepoPath}}{{else}}A távoli mentés ki van kapcsolva{{end}}</div>
|
||||
<div class="stat-value" style="font-size:1.05rem">{{if .Offbox.Enabled}}{{.Offbox.User}}@{{.Offbox.Host}}{{else}}{{T "backups_remote.kikapcsolva"}}{{end}}</div>
|
||||
<div class="stat-label">{{if .Offbox.Enabled}}{{.Offbox.RepoPath}}{{else}}{{T "backups_remote.a_tavoli_mentes_ki_van"}}{{end}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{if and .Offbox.Enabled (gt .Offbox.QuotaGB 0)}}
|
||||
@@ -62,7 +60,7 @@
|
||||
picture of emptiness, and a picture is a claim. -->
|
||||
<!-- SLICE 4: soft-quota usage bar (shared model; quota_gb from the hub descriptor). -->
|
||||
<div id="offbox-quota-bar" style="max-width:560px;margin:.5rem 0">
|
||||
<div class="stat-label" style="margin-bottom:.25rem">Tárhelykeret: {{if .Offbox.StatsKnown}}{{if .Offbox.RepoSizeHuman}}{{.Offbox.RepoSizeHuman}}{{else}}0{{end}} / {{.Offbox.QuotaGB}} GB ({{.OffboxQuotaPct}}%){{else}}még nem tudjuk, mennyi van a tárolóban — legfeljebb {{.Offbox.QuotaGB}} GB{{end}}</div>
|
||||
<div class="stat-label" style="margin-bottom:.25rem">{{T "backups_remote.tarhelykeret"}} {{if .Offbox.StatsKnown}}{{if .Offbox.RepoSizeHuman}}{{.Offbox.RepoSizeHuman}}{{else}}0{{end}} / {{.Offbox.QuotaGB}} GB ({{.OffboxQuotaPct}}%){{else}}{{T "backups_remote.meg_nem_tudjuk_mennyi_van"}}{{end}}</div>
|
||||
{{if .Offbox.StatsKnown}}<div style="background:var(--border,#334);border-radius:4px;height:8px;overflow:hidden">
|
||||
<div style="height:8px;border-radius:4px;width:{{.OffboxQuotaPct}}%;background:{{if ge .OffboxQuotaPct 100}}var(--crit,#e5484d){{else if ge .OffboxQuotaPct 80}}var(--warn,#f5a524){{else}}var(--ok,#30a46c){{end}}"></div>
|
||||
</div>{{end}}
|
||||
@@ -79,13 +77,11 @@
|
||||
promise that turns out false is worse here than saying less — the R-202 lesson. */}}
|
||||
{{if .Offbox.OrphanedRenamedTo}}
|
||||
<div class="alert alert-info" style="margin-top:.75rem">
|
||||
<p><strong>A korábbi mentéseid félre vannak téve — nem töröltük őket.</strong></p>
|
||||
<p class="form-hint">Amikor új mentési kulcsot kapott a géped, a régebbi előzményt átmozgattuk
|
||||
a távoli tárhelyen, és ott is maradt. <strong>Megnyitni innen egyelőre nem lehet</strong>, és
|
||||
ez nem a kódodon múlik. Ha szükséged van rá, keresd a Felhom ügyfélszolgálatát.</p>
|
||||
<p><strong>{{T "backups_remote.a_korabbi_menteseid_felre_vannak"}}</strong></p>
|
||||
<p class="form-hint">{{T "backups_remote.amikor_uj_mentesi_kulcsot_kapott"}}</p>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .Offbox.LastError}}<p class="form-hint" style="color:var(--crit)">Utolsó hiba: {{.Offbox.LastError}}</p>{{end}}
|
||||
{{if .Offbox.LastError}}<p class="form-hint" style="color:var(--crit)">{{T "backups_remote.utolso_hiba"}}</p>{{end}}
|
||||
{{/* Part E: display pick — a stale zero-toggle warning is replaced once the selection
|
||||
changed (neutral color: the replacement is reassurance, not a deviation). */}}
|
||||
{{if .OffboxWarningDisplay}}<p class="form-hint"{{if eq .OffboxWarningDisplay .Offbox.LastWarning}} style="color:var(--warn)"{{end}}>{{.OffboxWarningDisplay}}</p>{{end}}
|
||||
@@ -94,15 +90,15 @@
|
||||
reset moves the old history aside (never deletes) and starts a fresh repo under the current key. */}}
|
||||
{{if eq .Offbox.RepoState "orphaned"}}
|
||||
<div class="card" style="border-left:3px solid var(--crit,#e5484d);margin:.75rem 0;padding:.75rem 1rem" id="offbox-orphan-card">
|
||||
<p style="margin:0 0 .35rem;font-weight:600">A távoli tároló másik kulccsal készült mentéseket tartalmaz</p>
|
||||
<p style="margin:0 0 .35rem;font-weight:600">{{T "backups_remote.a_tavoli_tarolo_masik_kulccsal"}}</p>
|
||||
{{/* R-299: this paragraph carried the SAME unevaluable promise as the confirm block below, in a
|
||||
different conjugation („visszaállíthatók lehetnek" vs „visszaállítható lehet") — which is
|
||||
also why the first regression guard, matching the singular form, did not catch it. The
|
||||
discriminator is superseded identity_blob on the HUB; the box has no wire field for it. The
|
||||
two accurate halves are kept: the store IS orphaned, and new backups genuinely cannot be
|
||||
written. The guard now matches the STEM, so any inflection fails the test. */}}
|
||||
<p class="form-hint" style="margin:0 0 .5rem">A távoli tárhelyen lévő mentések egy korábbi, már nem elérhető kulccsal készültek (jellemzően újratelepítés után). Emiatt új mentés jelenleg nem írható a tárolóba. A meglévő mentések nem sérültek. Azt viszont ez a gép nem tudja megállapítani, hogy később megnyithatók-e — ez attól függ, megvan-e még a hozzájuk tartozó kulcs. Ha szükséged van rájuk, írj nekünk.</p>
|
||||
<button type="button" class="btn btn-sm btn-outline" id="orphan-reveal" onclick="var c=document.getElementById('orphan-confirm');c.style.display='block';this.style.display='none'">Új távoli mentés indítása…</button>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">{{T "backups_remote.a_tavoli_tarhelyen_levo_mentesek"}}</p>
|
||||
<button type="button" class="btn btn-sm btn-outline" id="orphan-reveal" onclick="var c=document.getElementById('orphan-confirm');c.style.display='block';this.style.display='none'">{{T "backups_remote.uj_tavoli_mentes_inditasa"}}</button>
|
||||
<div id="orphan-confirm" style="display:none;margin-top:.6rem">
|
||||
{{/* R-294 / R-202: this paragraph promised the set-aside copies "may be restorable later
|
||||
with the recovery code". The discriminator is host_escrow_superseded.identity_blob,
|
||||
@@ -112,11 +108,11 @@
|
||||
system cannot evaluate is the same defect as an unconditional false one. It now
|
||||
states what it knows, declines what it does not, and names a route.
|
||||
Copy is verbatim from documentation/design/SPEC-orphan-card-copy-2026-08-10.md §4. */}}
|
||||
<p class="form-hint" style="margin:0 0 .5rem">A régi előzmény <strong>félretéve marad a tárhelyen — nem töröljük</strong>. Új, üres tárolót hozunk létre, és a következő mentés oda készül.</p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem"><strong>A félretett mentések megnyithatóságát itt nem tudjuk megígérni.</strong> Ez attól függ, megvan-e még a hozzájuk tartozó kulcs, és ezt ez a gép nem tudja megállapítani. Ha szeretnéd, hogy utánanézzünk, <strong>írj nekünk</strong> — a félretett másolat addig is a helyén marad.</p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">{{T "backups_remote.a_regi_elozmeny_felreteve_marad"}}</p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">{{T "backups_remote.a_felretett_mentesek_megnyithatosagat_it"}}</p>
|
||||
<form method="POST" action="/backup/offbox/reset" style="display:inline">{{.CSRFField}}
|
||||
<input type="hidden" name="confirm" value="1">
|
||||
<button type="submit" class="btn btn-sm btn-primary">Megerősítés — új távoli mentés indítása</button>
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{T "backups_remote.megerosites_uj_tavoli_mentes_inditasa"}}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -130,24 +126,24 @@
|
||||
{{/* v0.138.0: the report-cycle gap between a completed ceremony and the hub-verified flip.
|
||||
Info (blue) accent — NOT a warning: nothing is wrong, the confirmation is simply in flight. */}}
|
||||
<div class="card" style="border-left:3px solid var(--blue);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p style="margin:0 0 .35rem"><strong>Helyreállítási kód létrehozva</strong></p>
|
||||
<p class="form-hint" style="margin:0">A helyreállítási csomag elküldve a központba, megerősítésre vár — ez általában néhány másodperc, legfeljebb 15 perc.</p>
|
||||
<p style="margin:0 0 .35rem"><strong>{{T "backups_remote.helyreallitasi_kod_letrehozva"}}</strong></p>
|
||||
<p class="form-hint" style="margin:0">{{T "backups_remote.a_helyreallitasi_csomag_elkuldve_a"}}</p>
|
||||
</div>
|
||||
{{else if .OffboxCeremonyTimedOut}}
|
||||
{{/* v0.138.0: the confirmation never arrived within two report cycles + slack — degrade to a
|
||||
warning with the re-ceremony CTA, never an indefinite "waiting". */}}
|
||||
<div class="card" style="border-left:3px solid var(--warn);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p class="form-hint" style="color:var(--warn);margin:0 0 .5rem">A megerősítés nem érkezett meg a várt időn belül. Ellenőrizze az internetkapcsolatot, majd készítsen új helyreállítási kódot.</p>
|
||||
<p class="form-hint" style="color:var(--warn);margin:0 0 .5rem">{{T "backups_remote.a_megerosites_nem_erkezett_meg"}}</p>
|
||||
{{if .EscrowAgentOK}}
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">Új helyreállítási kód készítése</a>
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">{{T "backups_remote.uj_helyreallitasi_kod_keszitese"}}</a>
|
||||
{{else}}
|
||||
<p class="form-hint" style="margin:0">A funkcióhoz az ügynök frissítése szükséges — a frissítés automatikusan megérkezik.</p>
|
||||
<p class="form-hint" style="margin:0">{{T "backups_remote.a_funkciohoz_az_ugynok_frissitese"}}</p>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else if and .OffboxConfigured (ne .Offbox.EscrowState "escrowed")}}
|
||||
<div class="card" style="border-left:3px solid var(--warn);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p style="margin:0 0 .35rem"><strong>Helyreállítási kód szükséges</strong></p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">A távoli mentések csak akkor állíthatók vissza egy teljes meghibásodás után, ha létrehozza a helyreállítási kódot.</p>
|
||||
<p style="margin:0 0 .35rem"><strong>{{T "backups_remote.helyreallitasi_kod_szukseges"}}</strong></p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">{{T "backups_remote.a_tavoli_mentesek_csak_akkor"}}</p>
|
||||
{{/* §7.3 / Q7 — THE TRAP THAT MUST NOT SURVIVE THIS SESSION. While a recovery is outstanding,
|
||||
creating a NEW code seals the CURRENT key and demotes the package that opens the earlier
|
||||
history to retained custody, which no shipped path can read (R-199). It also re-enables
|
||||
@@ -156,58 +152,54 @@
|
||||
a warning beside a button is a warning people click past. */}}
|
||||
{{if .RecoveryOffer}}
|
||||
<p class="form-hint" style="margin:0">
|
||||
Ehhez a géphez <strong>egy korábbi helyreállítási kód tartozik</strong>, és a korábbi mentéseid még megvannak.
|
||||
Új kód létrehozása <strong>a régi mentéseidet elérhetetlenné tenné</strong>, ezért most nem indítható.
|
||||
Előbb <a href="/recovery">add meg a meglévő kódodat</a> — vagy ott jelezheted, ha nem kéred vissza a korábbi adatokat.
|
||||
{{T "backups_remote.ehhez_a_gephez_egy_korabbi"}}
|
||||
</p>
|
||||
{{else if .EscrowAgentOK}}
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">Helyreállítási kód létrehozása</a>
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">{{T "backups_remote.helyreallitasi_kod_letrehozasa"}}</a>
|
||||
{{else}}
|
||||
<p class="form-hint" style="margin:0">A funkcióhoz az ügynök frissítése szükséges — a frissítés automatikusan megérkezik.</p>
|
||||
<p class="form-hint" style="margin:0">{{T "backups_remote.a_funkciohoz_az_ugynok_frissitese"}}</p>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else if and .OffboxConfigured .EscrowStale}}
|
||||
<div class="card" style="border-left:3px solid var(--warn);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p class="form-hint" style="color:var(--warn);margin:0 0 .5rem">A letétben lévő helyreállítási csomag nem fedi a jelenlegi távoli mentési jelszót. Hozzon létre új helyreállítási kódot.</p>
|
||||
<p class="form-hint" style="color:var(--warn);margin:0 0 .5rem">{{T "backups_remote.a_letetben_levo_helyreallitasi_csomag"}}</p>
|
||||
{{if .EscrowAgentOK}}
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">Új helyreállítási kód készítése</a>
|
||||
<a href="/backup/escrow" class="btn btn-sm btn-primary">{{T "backups_remote.uj_helyreallitasi_kod_keszitese"}}</a>
|
||||
{{else}}
|
||||
<p class="form-hint" style="margin:0">A funkcióhoz az ügynök frissítése szükséges — a frissítés automatikusan megérkezik.</p>
|
||||
<p class="form-hint" style="margin:0">{{T "backups_remote.a_funkciohoz_az_ugynok_frissitese"}}</p>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else if .OffboxConfigured}}
|
||||
{{/* v0.127.1: the re-ceremony CTA is a real secondary button (outline, NOT primary — escrowed
|
||||
is a healthy state; available-not-urgent, unlike the stale variant above). */}}
|
||||
<div style="margin:.5rem 0">
|
||||
<p class="form-hint" style="margin:0 0 .4rem">A helyreállítási kód letétbe helyezve.</p>
|
||||
{{if .EscrowAgentOK}}<a href="/backup/escrow" class="btn btn-sm btn-outline">Új helyreállítási kód készítése</a>{{end}}
|
||||
<p class="form-hint" style="margin:0 0 .4rem">{{T "backups_remote.a_helyreallitasi_kod_letetbe_helyezve"}}</p>
|
||||
{{if .EscrowAgentOK}}<a href="/backup/escrow" class="btn btn-sm btn-outline">{{T "backups_remote.uj_helyreallitasi_kod_keszitese"}}</a>{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .AbandonActive}}
|
||||
{{/* R-241: the countdown, stated for the whole window on the page the choice was made from. */}}
|
||||
<div class="card" style="border-left:3px solid var(--warn);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p style="margin:0 0 .35rem"><strong>A korábbi mentések törlése folyamatban</strong></p>
|
||||
<p style="margin:0 0 .35rem"><strong>{{T "backups_remote.a_korabbi_mentesek_torlese_folyamatban"}}</strong></p>
|
||||
<p class="form-hint" style="margin:0 0 .5rem">
|
||||
{{/* R-302: the FOURTH instance of the retrieval promise, under a different verb than the
|
||||
banner's — which is why no earlier guard counted it. Same condition, same single
|
||||
derivation: fixing the strip above and not this would leave one page contradicting the
|
||||
other. The deletion and its date are certain and always render. */}}
|
||||
A kérésed szerint a korábbi távoli mentéseidet <strong>{{.AbandonDate}}</strong> napján véglegesen töröljük
|
||||
(még <strong>{{.AbandonDaysLeft}} nap</strong>).
|
||||
{{if .AbandonRetrievalOffered}}Addig meggondolhatod magad: ha megvan a helyreállítási kódod,
|
||||
a mentéseid visszaszerezhetők, és a törlés elmarad.{{else}}Hogy ezek még visszaszerezhetők-e a helyreállítási kóddal, azt innen nem tudjuk megállapítani — ha vissza szeretnéd kapni őket, <strong>írj nekünk a törlés előtt</strong>.{{end}}
|
||||
{{T "backups_remote.a_keresed_szerint_a_korabbi"}}
|
||||
{{if .AbandonRetrievalOffered}}{{T "backups_remote.addig_meggondolhatod_magad_ha_megvan"}}{{else}}{{T "backups_remote.hogy_ezek_meg_visszaszerezhetok_e"}}{{end}}
|
||||
</p>
|
||||
<a href="/recovery" class="btn btn-sm btn-primary">Mégis visszaszerzem a kóddal</a>
|
||||
<a href="/recovery" class="btn btn-sm btn-primary">{{T "backups_remote.megis_visszaszerzem_a_koddal"}}</a>
|
||||
</div>
|
||||
{{else if .AbandonPurging}}
|
||||
<div class="card" style="border-left:3px solid var(--border,#2a3142);margin:.75rem 0;padding:.75rem 1rem">
|
||||
<p class="form-hint" style="margin:0">A korábbi távoli mentéseid törlése megtörtént. A hozzájuk tartozó lezárt helyreállítási csomag eltávolítása még folyamatban van.</p>
|
||||
<p class="form-hint" style="margin:0">{{T "backups_remote.a_korabbi_tavoli_menteseid_torlese"}}</p>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .OffboxConfigured}}
|
||||
<div class="schedule-actions" style="margin-top:1rem">
|
||||
<form method="POST" action="/backup/offbox/run" style="display:inline">{{.CSRFField}}
|
||||
<button type="submit" class="btn btn-sm btn-primary">Távoli mentés most</button>
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{T "backups_remote.tavoli_mentes_most"}}</button>
|
||||
</form>
|
||||
</div>
|
||||
<!-- v0.147.0 (4c): live progress for a MANUAL run — total bytes, percent and which app is being
|
||||
@@ -219,9 +211,9 @@
|
||||
<div id="offbox-progress-bar" class="progress-fill" style="width:0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
<h4 style="margin-top:1.25rem">Mely alkalmazások mentődnek a távoli tárolóra?</h4>
|
||||
<h4 style="margin-top:1.25rem">{{T "backups_remote.mely_alkalmazasok_mentodnek_a_tavoli"}}</h4>
|
||||
{{if and .OffboxApps (eq .Offbox.EscrowState "escrowed") (eq .OffboxToggledCount 0)}}
|
||||
<p class="form-hint">Nincs távoli mentésre jelölt alkalmazás — jelölj ki legalább egyet.</p>
|
||||
<p class="form-hint">{{T "backups_remote.nincs_tavoli_mentesre_jelolt_alkalmazas"}}</p>
|
||||
{{end}}
|
||||
{{if .OffboxApps}}
|
||||
<div class="app-row-list">
|
||||
@@ -230,39 +222,39 @@
|
||||
<form method="POST" action="/backup/offbox/toggle" style="display:inline">{{$.CSRFField}}
|
||||
<input type="hidden" name="app" value="{{.Name}}">
|
||||
<input type="hidden" name="enabled" value="{{if .Enabled}}false{{else}}true{{end}}">
|
||||
<button type="submit" class="btn btn-xs {{if .Enabled}}btn-outline{{else}}btn-primary{{end}}">{{if .Enabled}}Távoli mentés kikapcsolása{{else}}Távoli mentés bekapcsolása{{end}}</button>
|
||||
<button type="submit" class="btn btn-xs {{if .Enabled}}btn-outline{{else}}btn-primary{{end}}">{{if .Enabled}}{{T "backups_remote.tavoli_mentes_kikapcsolasa"}}{{else}}{{T "backups_remote.tavoli_mentes_bekapcsolasa"}}{{end}}</button>
|
||||
</form>
|
||||
{{if $.OffboxBlockedSet}}{{if index $.OffboxBlockedSet .Name}}
|
||||
<span class="form-hint" style="display:block;margin-top:.25rem">A teljes mentés túllépné a tárhelykeretet — csak a konfiguráció és az adatbázis kerül mentésre.</span>
|
||||
<span class="form-hint" style="display:block;margin-top:.25rem">{{T "backups_remote.a_teljes_mentes_tullepne_a"}}</span>
|
||||
{{end}}{{end}}
|
||||
{{template "app_list_row_end"}}
|
||||
{{end}}
|
||||
</div>
|
||||
{{else}}<p class="form-hint">Nincs telepített alkalmazás.</p>{{end}}
|
||||
{{else}}<p class="form-hint">{{T "backups_remote.nincs_telepitett_alkalmazas"}}</p>{{end}}
|
||||
{{end}}
|
||||
{{else}}
|
||||
{{if .OffsiteHubEnabled}}
|
||||
<p class="form-hint">Felhom offsite tárhely kiépítve — a beállítás automatikus, folyamatban. Ha egy napon belül nem áll be, jelezd az üzemeltetőnek.</p>
|
||||
<p class="form-hint">{{T "backups_remote.felhom_offsite_tarhely_kiepitve_a"}}</p>
|
||||
{{else}}
|
||||
<p class="form-hint">Még nincs beállítva távoli mentési cél.</p>
|
||||
<p class="form-hint">{{T "backups_remote.meg_nincs_beallitva_tavoli_mentesi"}}</p>
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
<details style="margin-top:1rem">
|
||||
<summary class="btn btn-xs btn-primary" style="cursor:pointer;display:inline-block">Távoli mentési cél beállítása</summary>
|
||||
<summary class="btn btn-xs btn-primary" style="cursor:pointer;display:inline-block">{{T "backups_remote.tavoli_mentesi_cel_beallitasa"}}</summary>
|
||||
<form method="POST" action="/backup/offbox/config" style="margin-top:.75rem;padding:1rem;border:1px solid var(--border,#ddd);border-radius:6px;max-width:560px">{{.CSRFField}}
|
||||
<div class="form-row"><label>Cél címe (IP vagy hosztnév — NAS vagy SFTP-kiszolgáló)</label><input type="text" name="host" class="form-input" value="{{if .Offbox}}{{.Offbox.Host}}{{end}}" placeholder="pl. 192.168.0.10"></div>
|
||||
<div class="form-row"><label>{{T "backups_remote.cel_cime_ip_vagy_hosztnev"}}</label><input type="text" name="host" class="form-input" value="{{if .Offbox}}{{.Offbox.Host}}{{end}}" placeholder="{{T "backups_remote.pl_ip"}}"></div>
|
||||
<div class="form-row"><label>SSH port</label><input type="number" name="port" class="form-input" value="{{if .Offbox}}{{.Offbox.Port}}{{else}}22{{end}}"></div>
|
||||
<div class="form-row"><label>Felhasználó</label><input type="text" name="user" class="form-input" value="{{if .Offbox}}{{.Offbox.User}}{{end}}" placeholder="pl. felhom"></div>
|
||||
<div class="form-row"><label>Tároló útvonala a célgépen</label><input type="text" name="repo_path" class="form-input" value="{{if .Offbox}}{{.Offbox.RepoPath}}{{end}}" placeholder="pl. /volume1/felhom-backup/repo"></div>
|
||||
<div class="form-row"><label><input type="checkbox" name="enabled" {{if .Offbox}}{{if .Offbox.Enabled}}checked{{end}}{{else}}checked{{end}}> Napi automatikus távoli mentés engedélyezve</label></div>
|
||||
<div class="form-row"><label>SSH privát kulcs {{if .OffboxConfigured}}(üresen hagyva változatlan){{end}}</label>
|
||||
<div class="form-row"><label>{{T "backups_remote.felhasznalo"}}</label><input type="text" name="user" class="form-input" value="{{if .Offbox}}{{.Offbox.User}}{{end}}" placeholder="{{T "backups_remote.pl_felhom"}}"></div>
|
||||
<div class="form-row"><label>{{T "backups_remote.tarolo_utvonala_a_celgepen"}}</label><input type="text" name="repo_path" class="form-input" value="{{if .Offbox}}{{.Offbox.RepoPath}}{{end}}" placeholder="{{T "backups_remote.pl_repo_path"}}"></div>
|
||||
<div class="form-row"><label><input type="checkbox" name="enabled" {{if .Offbox}}{{if .Offbox.Enabled}}checked{{end}}{{else}}checked{{end}}> {{T "backups_remote.napi_automatikus_tavoli_mentes_engedelye"}}</label></div>
|
||||
<div class="form-row"><label>{{T "backups_remote.ssh_privat_kulcs"}} {{if .OffboxConfigured}}{{T "backups_remote.uresen_hagyva_valtozatlan"}}{{end}}</label>
|
||||
<textarea name="ssh_key" class="form-input" rows="4" autocomplete="off" placeholder="-----BEGIN OPENSSH PRIVATE KEY-----"></textarea>
|
||||
<span class="form-hint">A kulcsot 0600-as fájlba írjuk; sosem naplózzuk és nem tároljuk a beállításokban.</span></div>
|
||||
<div class="form-row"><label>A célgép ismert-host sora (known_hosts) {{if .OffboxConfigured}}(üresen hagyva változatlan){{end}}</label>
|
||||
<span class="form-hint">{{T "backups_remote.a_kulcsot_0600_as_fajlba"}}</span></div>
|
||||
<div class="form-row"><label>{{T "backups_remote.a_celgep_ismert_host_sora"}} {{if .OffboxConfigured}}{{T "backups_remote.uresen_hagyva_valtozatlan"}}{{end}}</label>
|
||||
<textarea name="known_hosts" class="form-input" rows="2" autocomplete="off" placeholder="nas.local ssh-ed25519 AAAA…"></textarea>
|
||||
<span class="form-hint">A host-kulcs rögzítése (no blind TOFU). Lekérdezhető: <span class="mono">ssh-keyscan -p <port> <host></span></span></div>
|
||||
<button type="submit" class="btn btn-sm btn-primary" style="margin-top:.5rem">Mentés</button>
|
||||
<span class="form-hint">{{T "backups_remote.a_host_kulcs_rogzitese_no"}} <span class="mono">ssh-keyscan -p <port> <host></span></span></div>
|
||||
<button type="submit" class="btn btn-sm btn-primary" style="margin-top:.5rem">{{T "backups_remote.mentes"}}</button>
|
||||
</form>
|
||||
</details>
|
||||
</div>
|
||||
@@ -308,24 +300,24 @@
|
||||
with a large database it can dominate the early wall clock, and an unnamed silent
|
||||
stretch at the start reads as a hang. */
|
||||
if(p.phase === 'dump'){
|
||||
text.textContent = 'Adatbázisok mentése a pillanatképhez…';
|
||||
text.textContent = '{{T "backups_remote.adatbazisok_mentese_a_pillanatkephez"}}';
|
||||
bar.style.width = '100%';
|
||||
box.className = 'alert alert-info'; box.style.display = '';
|
||||
return;
|
||||
}
|
||||
if(p.phase === 'retention'){
|
||||
text.textContent = 'Karbantartás: régi mentések rendezése a távoli tárolón…';
|
||||
text.textContent = '{{T "backups_remote.karbantartas_regi_mentesek_rendezese_a"}}';
|
||||
bar.style.width = '100%';
|
||||
box.className = 'alert alert-info'; box.style.display = '';
|
||||
return;
|
||||
}
|
||||
if(p.phase === 'shares'){
|
||||
text.textContent = 'Megosztott mappák mentése…';
|
||||
text.textContent = '{{T "backups_remote.megosztott_mappak_mentese"}}';
|
||||
bar.style.width = '100%';
|
||||
box.className = 'alert alert-info'; box.style.display = '';
|
||||
return;
|
||||
}
|
||||
var label = p.current_app ? ('Mentés: ' + p.current_app) : 'Mentés folyamatban';
|
||||
var label = p.current_app ? ('{{T "backups_remote.mentes_2"}} ' + p.current_app) : '{{T "backups_remote.mentes_folyamatban"}}';
|
||||
if(p.bytes_done > 0){
|
||||
/* Bytes are genuinely moving — the informative case. */
|
||||
label += ' — ' + Math.round(p.percent) + '% (' + p.done_human + ' / ' + p.total_human + ')';
|
||||
@@ -338,16 +330,16 @@
|
||||
so do not pretend: name the file being processed and the elapsed time, which is
|
||||
what actually tells the customer it is alive. */
|
||||
var fpct = Math.round((p.files_done / p.total_files) * 100);
|
||||
label += ' — ' + p.files_done + ' / ' + p.total_files + ' fájl'
|
||||
label += ' — ' + p.files_done + ' / ' + p.total_files + ' {{T "backups_remote.fajl"}}'
|
||||
+ (p.total_human ? ' (' + p.total_human + ')' : '');
|
||||
if(p.current_file){
|
||||
var base = p.current_file.split('/').pop();
|
||||
label += ' · feldolgozás alatt: ' + base;
|
||||
label += ' {{T "backups_remote.feldolgozas_alatt"}} ' + base;
|
||||
}
|
||||
if(p.elapsed_sec > 0){ label += ' · ' + p.elapsed_sec + ' mp'; }
|
||||
bar.style.width = Math.max(0, Math.min(100, fpct)) + '%';
|
||||
} else {
|
||||
label += ' — a mentendő adatok felmérése…';
|
||||
label += ' {{T "backups_remote.a_mentendo_adatok_felmerese"}}';
|
||||
bar.style.width = '0%';
|
||||
}
|
||||
text.textContent = label;
|
||||
|
||||
Reference in New Issue
Block a user