feat(cluster): add configurable BLF expiry interval in HA menu with 120s default and automatic check-sync notify on failover
This commit is contained in:
1 parent
c1c6eab03c
commit
f14185d597
6 files changed
+145
-17
No files matched your search
@@ -6394,6 +6394,33 @@ async function refreshClusterStatus() {
|
||||
const secretInput = document.getElementById('cluster-secret');
|
||||
if (secretInput && st.cluster_secret) secretInput.value = st.cluster_secret;
|
||||
|
||||
const blfExpiryContainer = document.getElementById('cluster-blf-expiry-container');
|
||||
const blfExpiryInput = document.getElementById('cluster-blf-expiry');
|
||||
if (blfExpiryContainer && blfExpiryInput) {
|
||||
if (st.enabled) {
|
||||
blfExpiryContainer.classList.remove('hidden');
|
||||
blfExpiryInput.value = st.blf_expiry || 120;
|
||||
} else {
|
||||
blfExpiryContainer.classList.add('hidden');
|
||||
blfExpiryInput.value = st.blf_expiry || 1800;
|
||||
}
|
||||
}
|
||||
|
||||
if (chkEnabled && !chkEnabled.dataset.blfBound) {
|
||||
chkEnabled.dataset.blfBound = '1';
|
||||
chkEnabled.addEventListener('change', () => {
|
||||
const c = document.getElementById('cluster-blf-expiry-container');
|
||||
const inp = document.getElementById('cluster-blf-expiry');
|
||||
if (chkEnabled.checked) {
|
||||
if (c) c.classList.remove('hidden');
|
||||
if (inp && (!inp.value || inp.value === '1800')) inp.value = 120;
|
||||
} else {
|
||||
if (c) c.classList.add('hidden');
|
||||
if (inp) inp.value = 1800;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Badges & Cartes
|
||||
const headerBadge = document.getElementById('cluster-header-state-badge');
|
||||
const navBadge = document.getElementById('nav-badge-cluster');
|
||||
@@ -6584,6 +6611,7 @@ async function saveClusterSettings(e) {
|
||||
peer_port: parseInt(form.elements['peer_port'] ? form.elements['peer_port'].value : 8443, 10) || 8443,
|
||||
cluster_secret: form.elements['cluster_secret'].value.trim(),
|
||||
vrid: parseInt(form.elements['vrid'].value, 10) || 51,
|
||||
blf_expiry: parseInt(form.elements['blf_expiry'] ? form.elements['blf_expiry'].value : 120, 10) || 120,
|
||||
auto_sync: form.elements['auto_sync'].checked ? 1 : 0
|
||||
};
|
||||
|
||||
|
||||
@@ -2939,6 +2939,24 @@ $isDevEnv = file_exists(__DIR__ . '/../.dev')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- DÉLAI D'EXPIRATION / RÉABONNEMENT BLF (HA) -->
|
||||
<div id="cluster-blf-expiry-container" class="hidden p-3.5 rounded-xl bg-anthracite-900/80 border border-cyan-500/30 space-y-1">
|
||||
<div class="flex flex-col sm:flex-row sm:items-center justify-between gap-3">
|
||||
<div>
|
||||
<div class="flex items-center gap-2 mb-0.5">
|
||||
<label for="cluster-blf-expiry" class="text-xs font-bold text-white cursor-pointer">Fréquence de réabonnement BLF & Postes</label>
|
||||
<span class="px-2 py-0.2 rounded text-[10px] font-bold bg-cyan-500/20 text-cyan-300 border border-cyan-500/30">Recommandé HA : 120s</span>
|
||||
</div>
|
||||
<p class="text-[11px] text-slate-400">Plafond d'expiration imposé aux téléphones pour forcer le rafraîchissement rapide des voyants BLF après bascule HA (par défaut 1800s sans HA, 120s avec HA).</p>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 shrink-0">
|
||||
<input type="number" id="cluster-blf-expiry" name="blf_expiry" value="120" min="30" max="3600"
|
||||
class="w-24 px-3 py-2 rounded-xl bg-anthracite-900 border border-anthracite-700 text-sm text-white text-center font-mono focus:outline-none focus:border-cyan-400">
|
||||
<span class="text-xs text-slate-400 font-mono">sec</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- OPTIONS AVANCÉES (VRID, AUTO-SYNC) -->
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-3 pt-2 border-t border-anthracite-700/60">
|
||||
<div class="flex items-center gap-2">
|
||||
|
||||
Reference in new issue
Block a user