From fc51df695d075da9c53d7dda780fd7d6d1fee575 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Tue, 8 May 2018 20:45:40 +0200 Subject: [PATCH] Added expected return value --- addjob.php | 5 +++-- editjob.php | 8 +++++--- js/site.js | 4 ++++ runnow.php | 2 +- templates/addjob.html.twig | 4 ++++ templates/editjob.html.twig | 4 ++++ webcron.php | 36 +++++++++++++++--------------------- 7 files changed, 36 insertions(+), 27 deletions(-) diff --git a/addjob.php b/addjob.php index eca0aeb..be533f5 100644 --- a/addjob.php +++ b/addjob.php @@ -63,6 +63,7 @@ elseif ($_SERVER["REQUEST_METHOD"] == "POST") { $host = $_POST['host']; $name = $_POST['name']; $delay = $_POST['delay']; + $expected = $_POST['expected']; $nextrunObj = new DateTime($_POST['nextrun']); $nextrun = $nextrunObj->getTimestamp(); @@ -76,8 +77,8 @@ elseif ($_SERVER["REQUEST_METHOD"] == "POST") { } - $stmt = $db->prepare("INSERT INTO jobs(user, name, url, host, delay, nextrun) VALUES(?, ?, ?, ?, ?, ?)"); - $stmt->execute(array($_SESSION["userID"], $name, $url, $host, $delay, $nextrun)); + $stmt = $db->prepare("INSERT INTO jobs(user, name, url, host, delay, nextrun, expected) VALUES(?, ?, ?, ?, ?, ?, ?)"); + $stmt->execute(array($_SESSION["userID"], $name, $url, $host, $delay, $nextrun, $expected)); header("location:addjob.php?message=added"); exit; diff --git a/editjob.php b/editjob.php index 1d6a275..e4e8843 100644 --- a/editjob.php +++ b/editjob.php @@ -40,6 +40,7 @@ if ($_SERVER["REQUEST_METHOD"] == "GET") { $url = $jobnameResult[0]['url']; $host = $jobnameResult[0]['host']; $delay = $jobnameResult[0]['delay']; + $expected = $jobnameResult[0]['expected']; $nextrun = date("m/d/Y h:i A", $jobnameResult[0]['nextrun']); @@ -59,7 +60,7 @@ if ($_SERVER["REQUEST_METHOD"] == "GET") { } - echo $twig->render('editjob.html.twig', array("name" => $name, "url" => $url, "host" => $host, "delay" => $delay, "nextrun" => $nextrun, "jobID" => $jobID, "error" => $error)); + echo $twig->render('editjob.html.twig', array("name" => $name, "url" => $url, "host" => $host, "delay" => $delay, "expected" => $expected, nextrun => $nextrun, "jobID" => $jobID, "error" => $error)); } elseif ($_SERVER["REQUEST_METHOD"] == "POST") { @@ -72,6 +73,7 @@ elseif ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST['name']; $delay = $_POST['delay']; $host = $_POST['host']; + $expected = $_POST['expected']; $nextrunObj = new DateTime($_POST['nextrun']); $nextrun = $nextrunObj->getTimestamp(); @@ -85,8 +87,8 @@ elseif ($_SERVER["REQUEST_METHOD"] == "POST") { } - $stmt = $db->prepare("UPDATE jobs SET name = ?, url = ?, host = ?, delay = ?, nextrun = ? WHERE jobID = ?"); - $stmt->execute(array($name, $url, $host, $delay, $nextrun, $jobID)); + $stmt = $db->prepare("UPDATE jobs SET name = ?, url = ?, host = ?, delay = ?, nextrun = ?, expected = ? WHERE jobID = ?"); + $stmt->execute(array($name, $url, $host, $delay, $nextrun, $expected, $jobID)); header("location:overview.php?message=edited"); exit; diff --git a/js/site.js b/js/site.js index 5b4263b..29050be 100644 --- a/js/site.js +++ b/js/site.js @@ -46,4 +46,8 @@ $(document).ready(function() { $('#resultmodal').modal('show'); }); }); + $("body").on("change", ".input[name=url]", function() { + $(".label[for=expected]").html("Capture services after reboot? (1: yes; 0: no)"); + $(".input[name=url]").attr("placeholder", "1"); + }) }); diff --git a/runnow.php b/runnow.php index 0559098..82fdc00 100644 --- a/runnow.php +++ b/runnow.php @@ -69,7 +69,7 @@ if (filter_var($jobnameResult[0]["url"], FILTER_VALIDATE_URL)) { } } } -if($nosave !== true) { +if($nosave !== true && $statuscode != $jobnameResult[0]["expected"]) { $stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)"); $stmt->execute(array($jobID, $statuscode, $body, $timestamp)); } diff --git a/templates/addjob.html.twig b/templates/addjob.html.twig index 612f407..5155944 100644 --- a/templates/addjob.html.twig +++ b/templates/addjob.html.twig @@ -55,6 +55,10 @@ + +
+ +
diff --git a/templates/editjob.html.twig b/templates/editjob.html.twig index b204550..ec2e94d 100644 --- a/templates/editjob.html.twig +++ b/templates/editjob.html.twig @@ -51,6 +51,10 @@ +
+ + +
diff --git a/webcron.php b/webcron.php index e874ca2..0747d9b 100644 --- a/webcron.php +++ b/webcron.php @@ -40,27 +40,22 @@ if (file_exists("cache/get-services.trigger")) { $rebootjobs = unserialize(file_get_contents("cache/get-services.trigger")); foreach($rebootjobs as $job) { - - $services = array(); - $url = "ssh " . $job['host'] . " '" . "sudo systemctl list-units | cat" . "' 2>&1"; - exec($url, $services); - $services = implode("\n", $services); - - $stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)"); - $stmt->execute(array($job['jobID'], '200', $services, time())); + if($job['expected'] != 0) { + $services = array(); + $url = "ssh " . $job['host'] . " '" . "sudo systemctl list-units | cat" . "' 2>&1"; + exec($url, $services); + $services = implode("\n", $services); - $nextrun = ($job['nextrun'] < time()) ? $job['nextrun'] + $job['delay'] : $job['nextrun']; - if ($nextrun < time() ) { $nextrun = time() + $job['delay']; } - - $nexttime = $db->prepare("UPDATE jobs SET nextrun = ? WHERE jobID = ?"); - $nexttime->execute(array($nextrun, $result["jobID"])); + $stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)"); + $stmt->execute(array($job['jobID'], '200', $services, time())); + } } unlink("cache/get-services.trigger"); unlink("cache/reboot-time.trigger"); } } -$stmt = $db->query('SELECT jobID, url, host, delay, nextrun FROM jobs WHERE nextrun < ' . time()); +$stmt = $db->query('SELECT jobID, url, host, delay, nextrun, expected FROM jobs WHERE nextrun < ' . time()); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); $client = new \GuzzleHttp\Client(); @@ -97,16 +92,15 @@ foreach ($results as $result) { } } - if($nosave !== true) { + if($nosave !== true && $statuscode != $result["expected"]) { $stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)"); $stmt->execute(array($result['jobID'], $statuscode, $body, time())); - - $nextrun = $result['nextrun'] + $result['delay']; - if ($nextrun < time() ) { $nextrun = time() + $result['delay']; } - - $nexttime = $db->prepare("UPDATE jobs SET nextrun = ? WHERE jobID = ?"); - $nexttime->execute(array($nextrun, $result["jobID"])); } + $nextrun = $result['nextrun'] + $result['delay']; + if ($nextrun < time() ) { $nextrun = time() + $result['delay']; } + + $nexttime = $db->prepare("UPDATE jobs SET nextrun = ? WHERE jobID = ?"); + $nexttime->execute(array($nextrun, $result["jobID"])); $nosave = false; }