From 653c67062c098107f5fdf266f4b7087442d52e69 Mon Sep 17 00:00:00 2001 From: "kirill.labutin" Date: Fri, 14 Aug 2026 18:01:21 +0300 Subject: [PATCH] bump version. docker image includes app --- Dockerfile | 5 ++--- app/pom.xml | 2 +- app/src/main/java/ru/kirillius/pf/sdn/App.java | 14 ++++++++++++-- .../java/ru/kirillius/pf/sdn/web/RPC/System.java | 9 +++++++++ core/pom.xml | 2 +- .../java/ru/kirillius/pf/sdn/core/Context.java | 3 +++ docker/entrypoint.sh | 2 +- launcher/pom.xml | 2 +- ovpn-connector/pom.xml | 2 +- pom.xml | 2 +- webui/src/pages/Statistics.js | 16 ++++++++++++++-- 11 files changed, 46 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0f1cdb7..d9db047 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,12 @@ FROM alpine:latest -RUN apk add --no-cache openjdk25 git curl +RUN apk add --no-cache openjdk25 git RUN mkdir -p /data /data/local -COPY launcher.sh /launcher.sh COPY docker/config.json /data/config.json COPY docker/entrypoint.sh /entrypoint.sh -RUN chmod +x /launcher.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] diff --git a/app/pom.xml b/app/pom.xml index 4a4c14f..55bbf5f 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -6,7 +6,7 @@ ru.kirillius pf-sdn - 1.0.2.5 + 1.1.0.0 pf-sdn.app diff --git a/app/src/main/java/ru/kirillius/pf/sdn/App.java b/app/src/main/java/ru/kirillius/pf/sdn/App.java index f13273c..fe8fb4f 100644 --- a/app/src/main/java/ru/kirillius/pf/sdn/App.java +++ b/app/src/main/java/ru/kirillius/pf/sdn/App.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.regex.Pattern; @@ -114,7 +115,9 @@ public class App implements Context, Closeable { serviceManager.getService(ComponentHandlerService.class).syncComponentsWithConfig(); serviceManager.getService(ResourceUpdateService.class).start(); - removeObsoleteVersions(); + if(!isExternalManagement()) { + removeObsoleteVersions(); + } } private void removeObsoleteVersions() { @@ -175,7 +178,14 @@ public class App implements Context, Closeable { */ public void requestExit(boolean restart) { running.set(false); - shouldRestart.set(restart); + if(!isExternalManagement()) { + shouldRestart.set(restart); + } + } + + @Override + public boolean isExternalManagement() { + return Objects.equals(System.getProperty("app.external.management", Boolean.FALSE.toString()), Boolean.TRUE.toString()); } /** diff --git a/app/src/main/java/ru/kirillius/pf/sdn/web/RPC/System.java b/app/src/main/java/ru/kirillius/pf/sdn/web/RPC/System.java index 2641bef..d3789e6 100644 --- a/app/src/main/java/ru/kirillius/pf/sdn/web/RPC/System.java +++ b/app/src/main/java/ru/kirillius/pf/sdn/web/RPC/System.java @@ -122,10 +122,19 @@ public class System implements RPC { @ProtectedMethod @JRPCMethod public void doUpdate() { + if(context.isExternalManagement()){ + return; + } var updateService = context.getServiceManager().getService(AppUpdateService.class); updateService.updateApp(); } + @ProtectedMethod + @JRPCMethod + public boolean isExternalManaged() { + return context.isExternalManagement(); + } + @ProtectedMethod @JRPCMethod public JSONArray getRepositoryTypes() { diff --git a/core/pom.xml b/core/pom.xml index a2aa809..7d2354d 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -6,7 +6,7 @@ ru.kirillius pf-sdn - 1.0.2.5 + 1.1.0.0 diff --git a/core/src/main/java/ru/kirillius/pf/sdn/core/Context.java b/core/src/main/java/ru/kirillius/pf/sdn/core/Context.java index 572d926..0989202 100644 --- a/core/src/main/java/ru/kirillius/pf/sdn/core/Context.java +++ b/core/src/main/java/ru/kirillius/pf/sdn/core/Context.java @@ -26,4 +26,7 @@ public interface Context { * @param shouldRestart {@code true} to exit with restart intent, {@code false} to shut down. */ void requestExit(boolean shouldRestart); + + + boolean isExternalManagement(); } diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 6093539..865923e 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,2 +1,2 @@ #!/bin/sh -exec /launcher.sh --c=/data/config.json +exec java -Xmx256m -jar default.pfapp --c=/data/config.json -Dapp.external.management=true -l=. -r="https://repo.kirillius.ru/apps/pf/" \ No newline at end of file diff --git a/launcher/pom.xml b/launcher/pom.xml index 43dd1ee..9cdb48f 100644 --- a/launcher/pom.xml +++ b/launcher/pom.xml @@ -6,7 +6,7 @@ ru.kirillius pf-sdn - 1.0.2.5 + 1.1.0.0 launcher diff --git a/ovpn-connector/pom.xml b/ovpn-connector/pom.xml index fd81c79..3ecdc1c 100644 --- a/ovpn-connector/pom.xml +++ b/ovpn-connector/pom.xml @@ -6,7 +6,7 @@ ru.kirillius pf-sdn - 1.0.2.5 + 1.1.0.0 pf-sdn.ovpn-connector diff --git a/pom.xml b/pom.xml index b02fb17..4e79cb5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ru.kirillius pf-sdn - 1.0.2.5 + 1.1.0.0 pom diff --git a/webui/src/pages/Statistics.js b/webui/src/pages/Statistics.js index 188da40..ce4ee02 100644 --- a/webui/src/pages/Statistics.js +++ b/webui/src/pages/Statistics.js @@ -87,10 +87,14 @@ async function renderSystemAndManagerStatus() { const currentVersion = (versionInfo && versionInfo.current) || ''; const downloadedVersion = (versionInfo && versionInfo.downloaded) || ''; configChanged = await JSONRPC.System.isConfigChanged(); + const isExternalManaged = await JSONRPC.System.isExternalManaged(); const hasAvailableUpdate = availableVersion && availableVersion !== currentVersion; const isDownloaded = hasAvailableUpdate && downloadedVersion === availableVersion; - const updateButtonDisabled = !hasAvailableUpdate || isDownloaded; + const updateButtonDisabled = !hasAvailableUpdate || isDownloaded || isExternalManaged; const systemStatus = (() => { + if (isExternalManaged) { + return 'Управляется извне'; + } if (!hasAvailableUpdate) { return 'Нет обновлений'; } @@ -104,6 +108,7 @@ async function renderSystemAndManagerStatus() { Текущая версия: ${currentVersion || '-'}
Последняя версия: ${availableVersion || '-'} + ${isExternalManaged ? '

Обновление ПО управляется внешней системой, установка из веб-интерфейса недоступна.

' : ''}

Конфигурация: ${configChanged ? 'изменена' : 'актуальна'}

@@ -225,8 +230,15 @@ function attachEventHandlers() { $btn.prop('disabled', true).text('Обновление...'); try { - await JSONRPC.System.doUpdate(); + const updatePromise = JSONRPC.System.doUpdate(); alert('Обновление ПО запущено!'); + await updatePromise; + if (confirm('Обновление завершено. Перезагрузить?')) { + await JSONRPC.System.restart(); + setTimeout(() => { + window.location.reload(); + }, 10000); + } await renderSystemAndManagerStatus(); } catch (e) { alert('Ошибка при запуске обновления ПО!');