function getCsrfToken() { return document.querySelector('meta[name="csrf-token"]')?.content || ''; } function sslAction(action, extraData) { const data = 'action=' + action + '&_csrf_token=' + encodeURIComponent(getCsrfToken()); const body = extraData ? data + '&' + extraData : data; fetch('/servers/' + serverId + '/ssl', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-CSRF-Token': getCsrfToken(), }, body: body, }) .then(r => r.json()) .then(data => { showToast(data.success ? 'success' : 'error', data.message); if (data.output) { document.getElementById('sslResultMessage').textContent = data.message || ''; document.getElementById('sslResultOutputText').textContent = data.output; document.getElementById('sslResultOutput').style.display = 'block'; document.getElementById('sslResultModal').style.display = 'flex'; } if (action === 'install' && data.success) { setTimeout(() => location.reload(), 1500); } if (['renew', 'delete'].includes(action) && data.success) { setTimeout(() => location.reload(), 1000); } }) .catch(err => showToast('error', 'Request failed: ' + err.message)); } function openRequestModal() { document.getElementById('sslRequestForm').reset(); document.getElementById('sslRequestModal').style.display = 'flex'; } function closeRequestModal() { document.getElementById('sslRequestModal').style.display = 'none'; } function requestCert(e) { e.preventDefault(); const btn = document.getElementById('requestCertBtn'); btn.disabled = true; btn.innerHTML = ' Requesting...'; const domains = document.getElementById('sslDomains').value; const email = document.getElementById('sslEmail').value; sslAction('request', 'domains=' + encodeURIComponent(domains) + '&email=' + encodeURIComponent(email)); btn.disabled = false; btn.innerHTML = ' Request Certificate'; closeRequestModal(); } function deleteCert(name) { if (!confirm("Delete certificate '" + name + "'?")) return; sslAction('delete', 'cert_name=' + encodeURIComponent(name)); } function closeSslResultModal() { document.getElementById('sslResultModal').style.display = 'none'; document.getElementById('sslResultOutput').style.display = 'none'; } document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeRequestModal(); closeSslResultModal(); } });