diff --git a/core/src/main/java/ru/kirillius/pf/sdn/core/AppUpdateService.java b/core/src/main/java/ru/kirillius/pf/sdn/core/AppUpdateService.java index 27910a6..3a01404 100644 --- a/core/src/main/java/ru/kirillius/pf/sdn/core/AppUpdateService.java +++ b/core/src/main/java/ru/kirillius/pf/sdn/core/AppUpdateService.java @@ -50,7 +50,7 @@ public class AppUpdateService extends AppService { this.appLibraryPath = context.getLauncherConfig().getAppLibrary().toPath(); this.anchorClass = context.getClass(); this.httpClient = HttpClient.newBuilder() - .followRedirects(HttpClient.Redirect.NORMAL) + .followRedirects(HttpClient.Redirect.ALWAYS) .connectTimeout(Duration.ofSeconds(10)) .build(); } diff --git a/webui/src/modules/router.js b/webui/src/modules/router.js index 4c4443f..0b6ad9f 100644 --- a/webui/src/modules/router.js +++ b/webui/src/modules/router.js @@ -17,6 +17,7 @@ import { LogsPage } from '../pages/Logs.js'; import { NetworkResourcesPage } from '../pages/NetworkResources.js'; import { UnlockSitePage } from '../pages/UnlockSite.js'; import { LocalStoragesPage } from '../pages/LocalStorages.js'; +import { RestartPage } from '../pages/Restart.js'; // Переменная для отслеживания текущего активного хеша (для корректного unmount) @@ -118,6 +119,11 @@ const routes = { render: LocalStoragesPage.render, mount: LocalStoragesPage.mount, unmount: LocalStoragesPage.unmount + }, + '#restart': { + render: RestartPage.render, + mount: RestartPage.mount, + unmount: RestartPage.unmount } }; diff --git a/webui/src/pages/Restart.js b/webui/src/pages/Restart.js new file mode 100644 index 0000000..73e6a97 --- /dev/null +++ b/webui/src/pages/Restart.js @@ -0,0 +1,28 @@ +import $ from 'jquery'; +import { JSONRPC } from '@/json-rpc.js'; + +const REDIRECT_DELAY = 10000; + +function mountRestartPage() { + $('#sidebar').hide(); + + JSONRPC.System.restart().finally(() => { + setTimeout(() => { + window.location.href = '/'; + }, REDIRECT_DELAY); + }); +} + +export const RestartPage = { + render: () => ` +
+
+

Приложение перезапускается...

+
+
+ `, + mount: mountRestartPage, + unmount: () => { + $('#sidebar').show(); + } +}; diff --git a/webui/src/pages/Statistics.js b/webui/src/pages/Statistics.js index ce4ee02..46b1d15 100644 --- a/webui/src/pages/Statistics.js +++ b/webui/src/pages/Statistics.js @@ -234,10 +234,8 @@ function attachEventHandlers() { alert('Обновление ПО запущено!'); await updatePromise; if (confirm('Обновление завершено. Перезагрузить?')) { - await JSONRPC.System.restart(); - setTimeout(() => { - window.location.reload(); - }, 10000); + window.location.hash = 'restart'; + return; } await renderSystemAndManagerStatus(); } catch (e) { @@ -246,21 +244,8 @@ function attachEventHandlers() { } }); - $('#restart-system-btn').off('click').on('click', async function () { - const $btn = $(this); - - $btn.prop('disabled', true).text('Перезагрузка...'); - - try { - await JSONRPC.System.restart(); - alert('Перезагрузка системы инициирована!'); - setTimeout(() => { - window.location.reload(); - }, 10000); - } catch (e) { - alert('Ошибка при перезагрузке системы!'); - $btn.prop('disabled', false).text('Перезагрузить'); - } + $('#restart-system-btn').off('click').on('click', function () { + window.location.hash = 'restart'; }); $('#save-config-btn').off('click').on('click', async function () {