feat(license): Lizenz-System mit Ed25519-Verify gegen license.netcell-it.com
Portiert mail-gateway/internal/license (Verify, Cache, Trial, Signature) + DB-Mirror (internal/services/license) + REST-Handler (status/verify/key/clear) + UI-Page /license (Activate, Status, Limits, Features, Re-verify) + <LicenseBanner /> neben UpdateBanner (trial-expiring, expired, verify-failed) + Scheduler: täglich Re-verify (24h-Tick) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
"ntp": "Zeit (NTP)",
|
||||
"firewall": "Firewall",
|
||||
"cluster": "Cluster",
|
||||
"license": "Lizenz",
|
||||
"settings": "Einstellungen",
|
||||
"section": {
|
||||
"overview": "Übersicht",
|
||||
@@ -551,5 +552,42 @@
|
||||
"download": "Download",
|
||||
"copy": "Kopieren",
|
||||
"copied": "Kopiert"
|
||||
},
|
||||
"license": {
|
||||
"title": "Lizenz",
|
||||
"status": "Status",
|
||||
"product": "Produkt",
|
||||
"key": "Lizenz-Schlüssel",
|
||||
"noKey": "Kein Schlüssel hinterlegt",
|
||||
"validUntil": "Gültig bis",
|
||||
"expired": "Abgelaufen",
|
||||
"daysLeft": "noch {{days}} Tage",
|
||||
"lastVerifiedAt": "Letzte Verifizierung",
|
||||
"verifiedBy": "Verifiziert von",
|
||||
"limits": "Limits",
|
||||
"unlimited": "Unbegrenzt",
|
||||
"features": "Features",
|
||||
"reverify": "Erneut prüfen",
|
||||
"reverified": "Lizenz erfolgreich verifiziert",
|
||||
"enterKey": "Schlüssel eingeben",
|
||||
"replaceKey": "Schlüssel ersetzen",
|
||||
"enterKeyHint": "Lizenz-Schlüssel aus dem Self-Service-Portal von license.netcell-it.com einfügen.",
|
||||
"activate": "Aktivieren",
|
||||
"saved": "Lizenz gespeichert und verifiziert",
|
||||
"savedButVerifyFailed": "Schlüssel gespeichert, aber Server-Verifizierung fehlgeschlagen",
|
||||
"clearKey": "Schlüssel entfernen",
|
||||
"cleared": "Lizenz entfernt — System fällt auf Trial zurück",
|
||||
"confirmClear": "Lizenz-Schlüssel wirklich entfernen?",
|
||||
"confirmClearHint": "System fällt auf Trial-Modus zurück, sobald der Schlüssel gelöscht wird.",
|
||||
"lastVerifyFailed": "Letzte Server-Verifizierung fehlgeschlagen",
|
||||
"trialExpiring": "Trial läuft in {{days}} Tag(en) ab",
|
||||
"trialExpiringHint": "Lizenz aktivieren, bevor die Trial-Periode endet."
|
||||
},
|
||||
"licenseBanner": {
|
||||
"expired": "Lizenz abgelaufen oder ungültig.",
|
||||
"trialExpiring": "Trial läuft in {{days}} Tag(en) ab.",
|
||||
"verifyFailed": "Lizenz-Verifizierung fehlgeschlagen",
|
||||
"cta": "Jetzt aktivieren →",
|
||||
"openPage": "Lizenz-Seite öffnen →"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user