/* * Copyright (C) 2022 Red Hat, Inc. * SPDX-License-Identifier: LGPL-2.1-or-later */ import cockpit from "cockpit"; import { exitInstaller, setRebootData } from "../apis/runtime.js"; import { debug, error } from "./log.js"; const KS_REBOOT = 1; let _isExiting = false; export const isExiting = () => _isExiting; export const rebootSystem = () => { setRebootData({ action: cockpit.variant("i", KS_REBOOT), }).then(exitGui); }; const killWebUIProcess = () => { const pidFile = cockpit.file("/run/anaconda/webui_script.pid", { superuser: "try" }); let pid; pidFile.read() .then(content => { pid = content.trim(); debug("Killing WebUI process, PID: ", pid); return cockpit.spawn(["kill", pid]); }) .catch(exc => error("Failed to kill WebUI process, PID: ", pid, exc.message)) .finally(pidFile.close); }; export const exitGui = () => { _isExiting = true; exitInstaller() .catch(exc => error("Exit D-Bus call failed:", exc.message)) .finally(killWebUIProcess); };