system.crashed == true && system.reason == "reboot"

Not anymore
This commit is contained in:
Jeroen De Meerleer 2017-05-11 10:46:55 +02:00
parent b410ab18ce
commit 8b6fa405b1
Signed by: JeroenED
GPG Key ID: 28CCCB8F62BFADD6
1 changed files with 26 additions and 20 deletions

View File

@ -36,25 +36,28 @@ touch('cache/webcron.lock');
* Reboot finalize * Reboot finalize
*/ */
if (file_exists("cache/get-services.trigger")) { if (file_exists("cache/get-services.trigger")) {
$rebootjobs = unserialize(file_get_contents("cache/get-services.trigger")); if (file_exists("cache/reboot-time.trigger") && file_get_contents("cache/reboot-time.trigger") < time()) {
$services = array(); $rebootjobs = unserialize(file_get_contents("cache/get-services.trigger"));
exec("systemctl list-unit-files | cat", $services); $services = array();
$services = implode("\n", $services); exec("systemctl list-unit-files | cat", $services);
$services = implode("\n", $services);
foreach($rebootjobs as $job) {
$stmt = $db->query("SELECT jobID, delay, nextrun FROM jobs WHERE jobID = " . $job);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
$stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)");
$stmt->execute(array($result['jobID'], '200', $services, time()));
$nextrun = ($result['nextrun'] < time()) ? $result['nextrun'] + $result['delay'] : $result['nextrun']; foreach($rebootjobs as $job) {
if ($nextrun < time() ) { $nextrun = time() + $result['delay']; } $stmt = $db->query("SELECT jobID, delay, nextrun FROM jobs WHERE jobID = " . $job);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
$nexttime = $db->prepare("UPDATE jobs SET nextrun = ? WHERE jobID = ?"); $stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)");
$nexttime->execute(array($nextrun, $result["jobID"])); $stmt->execute(array($result['jobID'], '200', $services, time()));
$nextrun = ($result['nextrun'] < time()) ? $result['nextrun'] + $result['delay'] : $result['nextrun'];
if ($nextrun < time() ) { $nextrun = time() + $result['delay']; }
$nexttime = $db->prepare("UPDATE jobs SET nextrun = ? WHERE jobID = ?");
$nexttime->execute(array($nextrun, $result["jobID"]));
}
unlink("cache/get-services.trigger");
unlink("cache/reboot-time.trigger");
} }
unlink("cache/get-services.trigger");
} }
$stmt = $db->query('SELECT jobID, url, delay, nextrun FROM jobs WHERE nextrun < ' . time()); $stmt = $db->query('SELECT jobID, url, delay, nextrun FROM jobs WHERE nextrun < ' . time());
@ -81,9 +84,11 @@ foreach ($results as $result) {
exec($result["url"], $body, $statuscode); exec($result["url"], $body, $statuscode);
$body = implode("\n", $body); $body = implode("\n", $body);
} else { } else {
$rebootjobs[] = $result['jobID']; if (!file_exists('cache/get-services.trigger')) {
touch("cache/reboot.trigger"); $rebootjobs[] = $result['jobID'];
$nosave = true; touch("cache/reboot.trigger");
$nosave = true;
}
} }
} }
if($nosave !== true) { if($nosave !== true) {
@ -105,6 +110,7 @@ if(file_exists("cache/reboot.trigger")) {
unlink("cache/reboot.trigger"); unlink("cache/reboot.trigger");
$rebootser = serialize($rebootjobs); $rebootser = serialize($rebootjobs);
file_put_contents("cache/get-services.trigger", $rebootser); file_put_contents("cache/get-services.trigger", $rebootser);
exec("systemctl reboot"); file_put_contents("cache/reboot-time.trigger", time() + (5 * 60));
exec('sudo shutdown -r +5 "A reboot has been scheduled. Please save your work."');
} }
require_once 'include/finalize.inc.php'; require_once 'include/finalize.inc.php';