fix(precheck): require the explicit notifier decision before host start (#1816, Vikunja 614). Untested
This commit is contained in:
1 parent
f9202a7701
commit
ea4eaf388f
4 files changed
+142
No files matched your search
@@ -9,6 +9,7 @@
|
||||
#
|
||||
# Checks: the config and business file validate; `sudo -n true` fails and
|
||||
# `id -G` prints one group; bus.tester is off for library and on for factory,
|
||||
# the explicit notifier config is valid at 0600 in a private 0700 directory;
|
||||
# and factory refuses a business file with a library project
|
||||
# (profile-library-business); the run root is 0700; XDG_DATA_HOME is unset or
|
||||
# <home>/.local/share; node is 24 or later; bwrap runs; the unprivileged port
|
||||
@@ -172,6 +173,11 @@ const say = (...f) => console.log(f.join("\t"));
|
||||
let system;
|
||||
try { system = loadSystem(); } catch (e) { say("CONFIG", "bad", e.message.split("\n")[0]); process.exit(0); }
|
||||
say("CONFIG", "ok", system.dataRoot, configDir());
|
||||
try {
|
||||
const { readNotifyConfig } = await import(`${repo}/packages/cli/src/cli.mjs`);
|
||||
readNotifyConfig(system.dataRoot, id);
|
||||
say("NOTIFY", "ok");
|
||||
} catch (e) { say("NOTIFY", "bad", e.message.split("\n")[0]); }
|
||||
const file = businessFilePath(id);
|
||||
let raw;
|
||||
try { raw = JSON.parse(readFileSync(file, "utf8")); } catch (e) { say("BUSINESS", "bad", `cannot read ${file}: ${e.code ?? e.message}`); process.exit(0); }
|
||||
@@ -204,6 +210,19 @@ case "$cfg" in
|
||||
*) refuse "config: the check did not run: $(printf '%s' "$facts" | head -n 1)" ;;
|
||||
esac
|
||||
|
||||
# Use the CLI's exact file/owner/mode/JSON rule; its journal also needs a private directory.
|
||||
if [ -n "$DATA_ROOT" ]; then
|
||||
notify_dir="$DATA_ROOT/notify/$BUSINESS"
|
||||
notify="$(line NOTIFY)"
|
||||
case "$notify" in
|
||||
"NOTIFY ok")
|
||||
if private_dir "$notify_dir"; then ok "notifier config $notify_dir/notify.json validates (directory 0700, file 0600)"
|
||||
else refuse "notifier config: $notify_dir must be $ME's 0700 directory"; fi ;;
|
||||
"NOTIFY bad "*) refuse "notifier config: ${notify#NOTIFY bad }" ;;
|
||||
*) refuse "notifier config: the check did not run" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Tester and profile.
|
||||
library="$(line LIBRARY | cut -f2)"
|
||||
biz="$(line BUSINESS)"
|
||||
|
||||
Reference in new issue
Block a user