diff --git a/core/scripts/webpanel/assets/js/index.js b/core/scripts/webpanel/assets/js/index.js index a8ec42e..22f87ea 100644 --- a/core/scripts/webpanel/assets/js/index.js +++ b/core/scripts/webpanel/assets/js/index.js @@ -53,6 +53,15 @@ function updateServiceBox(serviceName, status) { statusBox.classList.remove('bg-success'); statusBox.classList.add('bg-danger'); } + + if (serviceName === 'hysteria2') { + const restartBtn = document.getElementById('restart-hysteria2-btn'); + if (status === true) { + restartBtn.style.display = 'none'; + } else { + restartBtn.style.display = 'block'; + } + } } document.addEventListener('DOMContentLoaded', function () { @@ -70,4 +79,48 @@ document.addEventListener('DOMContentLoaded', function () { toggleIpBtn.querySelector('i').classList.toggle('fa-eye'); toggleIpBtn.querySelector('i').classList.toggle('fa-eye-slash'); }); + + const restartBtn = document.getElementById('restart-hysteria2-btn'); + const restartUrl = document.querySelector('.content').dataset.restartHysteriaUrl; + + restartBtn.addEventListener('click', function(e) { + e.preventDefault(); + + restartBtn.innerHTML = 'Restarting... '; + restartBtn.style.pointerEvents = 'none'; + + fetch(restartUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + } + }) + .then(response => { + if (!response.ok) { + return response.json().then(err => { throw new Error(err.detail || 'Unknown error'); }); + } + return response.json(); + }) + .then(data => { + Swal.fire({ + icon: 'success', + title: 'Success', + text: data.detail, + timer: 2000, + showConfirmButton: false + }); + setTimeout(updateServiceStatuses, 1000); + }) + .catch(error => { + Swal.fire({ + icon: 'error', + title: 'Error', + text: `Failed to restart Hysteria2: ${error.message}` + }); + }) + .finally(() => { + restartBtn.innerHTML = 'Restart Service '; + restartBtn.style.pointerEvents = 'auto'; + }); + }); }); \ No newline at end of file diff --git a/core/scripts/webpanel/templates/index.html b/core/scripts/webpanel/templates/index.html index 497b44b..0806813 100644 --- a/core/scripts/webpanel/templates/index.html +++ b/core/scripts/webpanel/templates/index.html @@ -15,7 +15,8 @@
+ data-services-status-url="{{ url_for('server_services_status_api') }}" + data-restart-hysteria-url="{{ url_for('restart_service') }}">
@@ -151,6 +152,9 @@
+