From d60511970e97ae4d78e152ead01847a87fb802b7 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Sun, 16 Apr 2017 10:41:06 +0200 Subject: [PATCH] Add possibility to run on demand --- js/site.js | 16 +++++++++++ runnow.php | 52 ++++++++++++++++++++++++++++++++++++ templates/overview.html.twig | 18 ++++++++++++- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 runnow.php diff --git a/js/site.js b/js/site.js index 31a4626..fe759ce 100644 --- a/js/site.js +++ b/js/site.js @@ -28,4 +28,20 @@ $(document).ready(function() { if(this.value != "custom") { $("input#delay").val($(this).data("val")); } }); $('#nextrunselector').datetimepicker(); + + $("body").on("click", ".runcron", function() { + fullurl = "/runnow.php?jobID=" + $(this).data("id"); + $.ajax(fullurl).done(function(data) { + results = JSON.parse(data); + + if(results["error"] !== undefined) { + $("#resulttitle").html("Error"); + $("#resultbody").text(results["error"]); + } else { + $("#resulttitle").html("Success"); + $("#resultbody").text(results["message"]); + } + $('#resultmodal').modal('show'); + }) + }); }); diff --git a/runnow.php b/runnow.php new file mode 100644 index 0000000..6866866 --- /dev/null +++ b/runnow.php @@ -0,0 +1,52 @@ +. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +require_once "include/initialize.inc.php"; + +if(!isset($_GET['jobID'])) { + header("location:/overview.php"); + exit; +} +$jobID = $_GET['jobID']; + +$jobnameqry = $db->prepare("SELECT * FROM jobs WHERE jobID = ?"); +$jobnameqry->execute(array($_GET['jobID'])); +$jobnameResult = $jobnameqry->fetchAll(PDO::FETCH_ASSOC); +if ($jobnameResult[0]["user"] != $_SESSION["userID"]) { + die(json_encode(array("error" => "You dirty hacker!"))); +} + + +$client = new \GuzzleHttp\Client(); + +$res = $client->request('GET', $jobnameResult[0]['url']); + +$stmt = $db->prepare("INSERT INTO runs(job, statuscode, result, timestamp) VALUES(?, ?, ?, ?)"); +$stmt->execute(array($jobID, $statuscode, $body, $timestamp)); + +echo json_encode(array("message" => "Cronjob succesfully ran")); + +require_once 'include/finalize.inc.php'; diff --git a/templates/overview.html.twig b/templates/overview.html.twig index f5cb386..3488dee 100644 --- a/templates/overview.html.twig +++ b/templates/overview.html.twig @@ -23,7 +23,8 @@ {{ job.delay }} {{ job.nextrun }} -
+
+ @@ -32,4 +33,19 @@ {% endfor %} + {% endblock %} \ No newline at end of file