From e44db4897ba8855fdfceb9837cbfdccf0d9980c9 Mon Sep 17 00:00:00 2001 From: VAIO73 <50487331+Vaso73@users.noreply.github.com> Date: Mon, 19 Oct 2026 08:27:47 +0000 Subject: [PATCH] fix(monitor): label Docker published ports precisely --- AppImage/components/lxc-app-panel.tsx | 3 ++- AppImage/messages/en/common.json | 1 + AppImage/messages/sk/common.json | 1 + tests/lxc_updates/test_docker_app_discovery_ui.cjs | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/AppImage/components/lxc-app-panel.tsx b/AppImage/components/lxc-app-panel.tsx index 895a4133..fcdbaa6d 100644 --- a/AppImage/components/lxc-app-panel.tsx +++ b/AppImage/components/lxc-app-panel.tsx @@ -2569,7 +2569,8 @@ export function LxcAppPanel({ vmid, ctIp, onChange, managed, initialData, oci }: {t(e.kind === "docker_container" ? "vmLxc.appEditor.dockerEvidenceContainer" : e.kind === "docker_image" ? "vmLxc.appEditor.dockerEvidenceImage" : e.kind === "compose_project" ? "vmLxc.appEditor.dockerEvidenceProject" - : e.kind === "tcp_listener" ? "vmLxc.appEditor.nativeEvidencePort" + : e.kind === "tcp_listener" ? (d.source === "docker_metadata" + ? "vmLxc.appEditor.dockerEvidencePort" : "vmLxc.appEditor.nativeEvidencePort") : e.kind === "installation_file" ? "vmLxc.appEditor.nativeEvidenceFile" : e.kind === "process_executable" ? "vmLxc.appEditor.nativeEvidenceProcess" : e.kind === "working_directory" ? "vmLxc.appEditor.nativeEvidenceDirectory" diff --git a/AppImage/messages/en/common.json b/AppImage/messages/en/common.json index bae0c2f9..926cb9cb 100644 --- a/AppImage/messages/en/common.json +++ b/AppImage/messages/en/common.json @@ -1755,6 +1755,7 @@ "dockerScanPartial": "Docker search is incomplete. Some containers could not be checked.", "dockerEvidenceContainer": "Docker container", "dockerEvidenceImage": "Image", + "dockerEvidencePort": "Published TCP port", "dockerEvidenceProject": "Compose project", "dockerEndpointReview": "Container with published TCP ports. Confirm the name and web address before saving. Registration does not configure updates.", "noNewApplicationsDetected": "No new applications were detected.", diff --git a/AppImage/messages/sk/common.json b/AppImage/messages/sk/common.json index 1980ff79..3984d716 100644 --- a/AppImage/messages/sk/common.json +++ b/AppImage/messages/sk/common.json @@ -1699,6 +1699,7 @@ "dockerScanPartial": "Docker vyhľadávanie je neúplné. Niektoré kontajnery sa nepodarilo skontrolovať.", "dockerEvidenceContainer": "Docker kontajner", "dockerEvidenceImage": "Obraz", + "dockerEvidencePort": "Publikovaný TCP port", "dockerEvidenceProject": "Compose projekt", "dockerEndpointReview": "Kontajner s publikovanými TCP portmi. Pred uložením potvrď názov a webovú adresu. Registrácia nenastaví aktualizácie.", "noNewApplicationsDetected": "Neboli zistené žiadne nové aplikácie.", diff --git a/tests/lxc_updates/test_docker_app_discovery_ui.cjs b/tests/lxc_updates/test_docker_app_discovery_ui.cjs index 621d2f2d..dd6bf00e 100644 --- a/tests/lxc_updates/test_docker_app_discovery_ui.cjs +++ b/tests/lxc_updates/test_docker_app_discovery_ui.cjs @@ -5,7 +5,7 @@ const candidate = { vmid:101,slug:'docker-'+'b'.repeat(24),discovery_id:'docker-'+'b'.repeat(24), source:'docker_metadata',name:'Uncatalogued web app',default_ports:[8080], installed_version:null,tracking_suggestion:null, - evidence:[{kind:'docker_container',value:'web-1'},{kind:'docker_image',value:'example/web:7'}], + evidence:[{kind:'docker_container',value:'web-1'},{kind:'docker_image',value:'example/web:7'},{kind:'tcp_listener',value:'8080'}], } async function main() { const f = fixture({nativeCandidate:null,dockerCandidate:candidate}) @@ -15,6 +15,7 @@ async function main() { assert.equal(f.calls.filter(c=>c.url.endsWith('/docker-discovery')&&c.method==='POST').length,1) assert.ok(text(f.tree()).includes('example/web:7')) assert.ok(text(f.tree()).includes('dockerEndpointReview')) + assert.ok(text(f.tree()).includes('dockerEvidencePort'),'published mapping is not claimed as a probed listener') assert.ok(text(f.tree()).includes('nativeVersionUnknown')) await f.button('registerButton').props.onClick(); f.render() f.button('cancelButton').props.onClick(); f.render()