Skip to content

Commit 9da0fce

Browse files
authored
Merge pull request #97 from 45Drives/build
Fix removing leftover tmp files while downloading
2 parents 658e4a1 + d4f84cf commit 9da0fce

10 files changed

Lines changed: 251 additions & 39 deletions

File tree

.github/workflows/build-packages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Build Packages
22
on:
33
push:
44
branches:
5-
- tmpFiles
5+
- build
66
tags:
77
- 'v*.*.*'
88
jobs:

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
## Cockpit Navigator 0.5.11-1
1+
## Cockpit Navigator 0.5.12-1
22

3-
* deleting tmp/navigotrs files and fixed auto parent folder selection
3+
* Building latest fixes

makefile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,34 @@ endif
4444

4545
uninstall-local:
4646
rm -rf $(HOME)/.local/share/cockpit/navigator
47+
# Remote install defaults
48+
REMOTE_HOST ?= 192.168.123.5
49+
REMOTE_USER ?= root
50+
# Where navigator lands on the remote
51+
REMOTE_PREFIX ?= /usr/share/cockpit
52+
REMOTE_DESTDIR ?= $(DESTDIR)
53+
# Restart cockpit on remote after install (1=yes)
54+
RESTART_COCKPIT ?= 1
55+
# Tools
56+
SSH := ssh $(REMOTE_USER)@$(REMOTE_HOST)
57+
RSYNC := rsync -aH --delete
58+
59+
# Remote install (uses ssh + rsync)
60+
install-remote:
61+
@echo "Installing to $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_DESTDIR)$(REMOTE_PREFIX)"
62+
$(SSH) "mkdir -p $(REMOTE_DESTDIR)$(REMOTE_PREFIX)"
63+
$(RSYNC) navigator $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_DESTDIR)$(REMOTE_PREFIX)/
64+
ifeq ($(DIST),$(EL7_DIST))
65+
$(SSH) "sed -i 's/pf-c-button/btn/g;s/pf-m-primary/btn-primary/g;s/pf-m-secondary/btn-default/g;s/pf-m-danger/btn-danger/g' $(REMOTE_DESTDIR)$(REMOTE_PREFIX)/navigator/index.html"
66+
$(SSH) "sed -i 's/pf-c-button/btn/g;s/pf-m-primary/btn-primary/g;s/pf-m-secondary/btn-default/g;s/pf-m-danger/btn-danger/g' $(REMOTE_DESTDIR)$(REMOTE_PREFIX)/navigator/components/ModalPrompt.js"
67+
endif
68+
ifneq ($(NAV_VERS),)
69+
$(SSH) "printf '%s\n' 'export let NAVIGATOR_VERSION = \"$(NAV_VERS)\";' > $(REMOTE_DESTDIR)$(REMOTE_PREFIX)/navigator/version.js"
70+
endif
71+
ifeq ($(RESTART_COCKPIT),1)
72+
$(SSH) "systemctl stop cockpit.socket || true; systemctl start cockpit.socket || true"
73+
endif
74+
75+
# Optional convenience target
76+
uninstall-remote:
77+
$(SSH) "rm -rf $(REMOTE_DESTDIR)$(REMOTE_PREFIX)/navigator"

manifest.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"name": "cockpit-navigator",
44
"title": "Cockpit Navigator",
55
"description": "A File System Browser for Cockpit.",
6-
"version": "0.5.11",
6+
"version": "0.5.12",
77
"build_number": "1",
8-
"stable": false,
8+
"stable": true,
99
"author": "Josh Boudreau <jboudreau@45drives.com>",
1010
"git_url": "https://github.com/45Drives/cockpit-navigator",
1111
"license": "GPL-3.0+",
@@ -32,8 +32,7 @@
3232
"rsync",
3333
"zip",
3434
"file",
35-
"/bin/mkdir",
36-
"/bin/rmdir",
35+
"coreutils",
3736
"inotify-tools"
3837
]
3938
},
@@ -70,7 +69,7 @@
7069
],
7170
"changelog": {
7271
"urgency": "medium",
73-
"version": "0.5.11",
72+
"version": "0.5.12",
7473
"build_number": "1",
7574
"date": null,
7675
"packager": "Josh Boudreau <jboudreau@45drives.com>",

navigator/components/NavContextMenu.js

Lines changed: 81 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ export class NavContextMenu {
137137
});
138138
}
139139

140-
async download(e) {
140+
async download(e) {
141141
let download_target = "";
142-
let result; // function-scoped so we can reference later
142+
let result;
143143

144144
if (this.nav_window_ref.selected_entries.size === 1 &&
145145
!(this.nav_window_ref.selected_entry() instanceof NavDir)) {
@@ -149,7 +149,6 @@ export class NavContextMenu {
149149
try {
150150
result = await this.zip_for_download();
151151
download_target = new NavFile(result["archive-path"], result["stat"], this.nav_window_ref);
152-
console.log("prepared archive for download:", result["archive-path"]);
153152
} catch (err) {
154153
this.nav_window_ref.stop_load();
155154
this.nav_window_ref.modal_prompt.alert(err.message);
@@ -158,34 +157,85 @@ export class NavContextMenu {
158157
this.nav_window_ref.stop_load();
159158
}
160159
}
161-
if (result?.["archive-path"]) {
162-
const unitName = `nav-clean-on-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;
163-
const script = [
164-
'set -euo pipefail',
165-
'if ! command -v inotifywait >/dev/null 2>&1; then ' +
166-
'sleep 300; rm -f -- "$ARCHIVE"; ' +
167-
'[ -n "${TEMPDIR:-}" ] && [[ "$TEMPDIR" == /tmp/navigator-* ]] && rm -rf -- "$TEMPDIR"; ' +
168-
'exit 0; fi',
169-
'inotifywait -q -t 1800 -e open -- "$ARCHIVE" || true',
170-
'rm -f -- "$ARCHIVE"',
171-
'sleep 3600',
172-
'[ -n "${TEMPDIR:-}" ] && [[ "$TEMPDIR" == /tmp/navigator-* ]] && rm -rf -- "$TEMPDIR" || :'
173-
].join(' && ');
174-
const cmd = [
175-
'systemd-run',
176-
'--property=CollectMode=inactive-or-failed',
177-
'--property=RuntimeMaxSec=90000',
178-
'--unit', unitName,
179-
'--setenv=ARCHIVE=' + result['archive-path'],
180-
...(result['temp-dir'] ? ['--setenv=TEMPDIR=' + result['temp-dir']] : []),
181-
'/bin/bash','-lc', script
182-
];
183-
184-
await cockpit.spawn(cmd, { superuser: 'require', err: 'out' }).then(out => console.log(out));
185-
console.log("scheduled cleanup:", unitName);
186-
console.log("Deleting :", result['archive-path'], "in 30 minutes or after download starts.");
187-
}
188-
160+
if (result?.["archive-path"]) {
161+
const unitName = `nav-clean-sweep-on-close-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;
162+
163+
const script = `
164+
set -euo pipefail
165+
166+
ARCHIVE="$ARCHIVE"
167+
DIR="$(dirname -- "$ARCHIVE")"
168+
BASE="$(basename -- "$ARCHIVE")"
169+
ROOT="/tmp/navigator"
170+
PATTERN="navigator-download*"
171+
172+
if ! command -v inotifywait >/dev/null 2>&1; then
173+
sleep 300
174+
rm -f -- "$ARCHIVE" || true
175+
# Sweep everything matching PATTERN that's not in use
176+
find "$ROOT" -mindepth 1 -maxdepth 1 -name "$PATTERN" -print0 | \
177+
while IFS= read -r -d '' p; do
178+
if command -v lsof >/dev/null 2>&1 && lsof -t -- "$p" >/dev/null 2>&1; then
179+
continue
180+
fi
181+
rm -rf -- "$p"
182+
done
183+
[ -n "\${TEMPDIR:-}" ] && [[ "$TEMPDIR" == /tmp/navigator-* ]] && rm -rf -- "$TEMPDIR" || :
184+
exit 0
185+
fi
186+
187+
if ! timeout 1800 bash -lc '
188+
inotifywait -q -m -e open --format "%e %f" -- "$DIR" |
189+
while read ev f; do
190+
if [ "$f" = "$BASE" ]; then exit 0; fi
191+
done
192+
'; then
193+
find "$ROOT" -mindepth 1 -maxdepth 1 -name "$PATTERN" -print0 | \
194+
while IFS= read -r -d '' p; do
195+
if command -v lsof >/dev/null 2>&1 && lsof -t -- "$p" >/dev/null 2>&1; then
196+
continue
197+
fi
198+
rm -rf -- "$p"
199+
done
200+
exit 0
201+
fi
202+
203+
if command -v lsof >/dev/null 2>&1; then
204+
# Ensure no process holds ARCHIVE open
205+
sleep 1
206+
while lsof -t -- "$ARCHIVE" >/dev/null 2>&1; do sleep 1; done
207+
else
208+
timeout 86400 bash -lc '
209+
inotifywait -q -m -e close --format "%e %f" -- "$DIR" |
210+
while read ev f; do
211+
if [ "$f" = "$BASE" ]; then exit 0; fi
212+
done
213+
' || true
214+
fi
215+
216+
rm -f -- "$ARCHIVE" || true
217+
218+
# (uncomment -mmin +5 to keep very fresh ones)
219+
find "$ROOT" -mindepth 1 -maxdepth 1 -name "$PATTERN" -print0 | \
220+
while IFS= read -r -d '' p; do
221+
if command -v lsof >/dev/null 2>&1 && lsof -t -- "$p" >/dev/null 2>&1; then
222+
continue
223+
fi
224+
rm -rf -- "$p"
225+
done
226+
[ -n "\${TEMPDIR:-}" ] && [[ "$TEMPDIR" == /tmp/navigator-* ]] && rm -rf -- "$TEMPDIR" || :
227+
`;
228+
const cmd = [
229+
'systemd-run',
230+
'--property=CollectMode=inactive-or-failed',
231+
'--property=RuntimeMaxSec=90000',
232+
'--unit', unitName,
233+
'--setenv=ARCHIVE=' + result['archive-path'],
234+
...(result['temp-dir'] ? ['--setenv=TEMPDIR=' + result['temp-dir']] : []),
235+
'/bin/bash','-lc', script
236+
];
237+
await cockpit.spawn(cmd, { superuser: 'require', err: 'out' });
238+
}
189239
const downloader = new NavDownloader(download_target);
190240
downloader.download();
191241
}

packaging/debian-bookworm/changelog

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,45 @@
1+
cockpit-navigator (0.5.12-1bookworm) bookworm; urgency=medium
2+
3+
* Building latest fixes
4+
5+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 12:25:51 -0300
6+
7+
cockpit-navigator (0.5.11-4bookworm) bookworm; urgency=medium
8+
9+
* build package
10+
11+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:58:45 -0300
12+
13+
cockpit-navigator (0.5.11-3bookworm) bookworm; urgency=medium
14+
15+
* build package + fixed deletion method of tmp files
16+
17+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:10:19 -0300
18+
19+
cockpit-navigator (0.5.11-2bookworm) bookworm; urgency=medium
20+
21+
* Building testing package for temp files/folder selection fixes
22+
23+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 05:57:34 -0300
24+
25+
cockpit-navigator (0.5.11-2bookworm) bookworm; urgency=medium
26+
27+
* build package
28+
29+
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:49:10 -0300
30+
131
cockpit-navigator (0.5.11-1bookworm) bookworm; urgency=medium
232

333
* deleting tmp/navigotrs files and fixed auto parent folder selection
434

535
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:17:03 -0300
636

37+
cockpit-navigator (0.5.10-2bookworm) bookworm; urgency=medium
38+
39+
* update rocky dependencies
40+
41+
-- Josh Boudreau <jboudreau@45drives.com> Tue, 13 May 2025 08:05:51 -0300
42+
743
cockpit-navigator (0.5.10-1bookworm) bookworm; urgency=medium
844

945
* build for bookworm

packaging/rocky-el8/main.spec.j2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,20 @@ rm -rf %{buildroot}
3333
/usr/share/cockpit/navigator/*
3434

3535
%changelog
36+
* Tue Sep 16 2025 Jordan Keough <jkeough@45drives.com> 0.5.12-1
37+
- Building latest fixes
38+
* Tue Sep 16 2025 Rachit Hans <rhans@45drives.com> 0.5.11-4
39+
- build package
40+
* Tue Sep 16 2025 Rachit Hans <rhans@45drives.com> 0.5.11-3
41+
- build package + fixed deletion method of tmp files
42+
* Tue Sep 16 2025 Jordan Keough <jkeough@45drives.com> 0.5.11-2
43+
- Building testing package for temp files/folder selection fixes
44+
* Mon Sep 15 2025 Rachit Hans <rhans@45drives.com> 0.5.11-2
45+
- build package
3646
* Mon Sep 15 2025 Rachit Hans <rhans@45drives.com> 0.5.11-1
3747
- deleting tmp/navigotrs files and fixed auto parent folder selection
48+
* Tue May 13 2025 Josh Boudreau <jboudreau@45drives.com> 0.5.10-2
49+
- update rocky dependencies
3850
* Wed Oct 26 2022 Joshua Boudreau <jboudreau@45drives.com> 0.5.10-1
3951
- Disallow changing selected file/folder while editing permissions
4052
- Allow opening non-text file for editing via prompt

packaging/rocky-el9/main.spec.j2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,19 @@ rm -rf %{buildroot}
3333
/usr/share/cockpit/navigator/*
3434

3535
%changelog
36+
* Tue Sep 16 2025 Jordan Keough <jkeough@45drives.com> 0.5.12-1
37+
- Building latest fixes
38+
* Tue Sep 16 2025 Rachit Hans <rhans@45drives.com> 0.5.11-4
39+
- build package
40+
* Tue Sep 16 2025 Rachit Hans <rhans@45drives.com> 0.5.11-3
41+
- build package + fixed deletion method of tmp files
42+
* Tue Sep 16 2025 Jordan Keough <jkeough@45drives.com> 0.5.11-2
43+
- Building testing package for temp files/folder selection fixes
44+
* Mon Sep 15 2025 Rachit Hans <rhans@45drives.com> 0.5.11-2
45+
- build package
3646
* Mon Sep 15 2025 Rachit Hans <rhans@45drives.com> 0.5.11-1
3747
- deleting tmp/navigotrs files and fixed auto parent folder selection
48+
* Tue May 13 2025 Josh Boudreau <jboudreau@45drives.com> 0.5.10-2
49+
- update rocky dependencies
3850
* Mon Feb 24 2025 Brett Kelly <bkelly@45drives.com> 0.5.10-1
3951
- build for el9

packaging/ubuntu-focal/changelog

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,45 @@
1+
cockpit-navigator (0.5.12-1focal) focal; urgency=medium
2+
3+
* Building latest fixes
4+
5+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 12:25:51 -0300
6+
7+
cockpit-navigator (0.5.11-4focal) focal; urgency=medium
8+
9+
* build package
10+
11+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:58:45 -0300
12+
13+
cockpit-navigator (0.5.11-3focal) focal; urgency=medium
14+
15+
* build package + fixed deletion method of tmp files
16+
17+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:10:19 -0300
18+
19+
cockpit-navigator (0.5.11-2focal) focal; urgency=medium
20+
21+
* Building testing package for temp files/folder selection fixes
22+
23+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 05:57:34 -0300
24+
25+
cockpit-navigator (0.5.11-2focal) focal; urgency=medium
26+
27+
* build package
28+
29+
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:49:10 -0300
30+
131
cockpit-navigator (0.5.11-1focal) focal; urgency=medium
232

333
* deleting tmp/navigotrs files and fixed auto parent folder selection
434

535
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:17:03 -0300
636

37+
cockpit-navigator (0.5.10-2focal) focal; urgency=medium
38+
39+
* update rocky dependencies
40+
41+
-- Josh Boudreau <jboudreau@45drives.com> Tue, 13 May 2025 08:05:51 -0300
42+
743
cockpit-navigator (0.5.10-1focal) focal; urgency=medium
844

945
* Disallow changing selected file/folder while editing permissions

packaging/ubuntu-jammy/changelog

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,45 @@
1+
cockpit-navigator (0.5.12-1jammy) jammy; urgency=medium
2+
3+
* Building latest fixes
4+
5+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 12:25:51 -0300
6+
7+
cockpit-navigator (0.5.11-4jammy) jammy; urgency=medium
8+
9+
* build package
10+
11+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:58:45 -0300
12+
13+
cockpit-navigator (0.5.11-3jammy) jammy; urgency=medium
14+
15+
* build package + fixed deletion method of tmp files
16+
17+
-- Rachit Hans <rhans@45drives.com> Tue, 16 Sep 2025 11:10:19 -0300
18+
19+
cockpit-navigator (0.5.11-2jammy) jammy; urgency=medium
20+
21+
* Building testing package for temp files/folder selection fixes
22+
23+
-- Jordan Keough <jkeough@45drives.com> Tue, 16 Sep 2025 05:57:34 -0300
24+
25+
cockpit-navigator (0.5.11-2jammy) jammy; urgency=medium
26+
27+
* build package
28+
29+
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:49:10 -0300
30+
131
cockpit-navigator (0.5.11-1jammy) jammy; urgency=medium
232

333
* deleting tmp/navigotrs files and fixed auto parent folder selection
434

535
-- Rachit Hans <rhans@45drives.com> Mon, 15 Sep 2025 14:17:03 -0300
636

37+
cockpit-navigator (0.5.10-2jammy) jammy; urgency=medium
38+
39+
* update rocky dependencies
40+
41+
-- Josh Boudreau <jboudreau@45drives.com> Tue, 13 May 2025 08:05:51 -0300
42+
743
cockpit-navigator (0.5.10-1jammy) jammy; urgency=medium
844

945
* build for jammy

0 commit comments

Comments
 (0)