summaryrefslogtreecommitdiff
path: root/app/Controller/CronjobController.php
diff options
context:
space:
mode:
authorMiodrag Tokić <miki@denimo.io>2018-06-04 14:50:17 +0200
committerFrédéric Guillot <fred@miniflux.net>2018-06-04 09:59:55 -0700
commit5dae1e2e8397e6a374b16ff391719e1767ba4250 (patch)
tree07e0f4bd69903916c88bb268e660e5adaec4c1a6 /app/Controller/CronjobController.php
parent87a94201aa1c48394798b4780a7ab8a03d303f8c (diff)
Run cron jobs via URL
Kanboard supports running cron jobs via CLI. There are hosting services that don't offer CLI access, but they do offer calling a URL periodically. This feature is often used as a CLI cron job replacement. This commit adds a CronjobController called by "/cronjob" URL that will execute cron jobs as they were executed via CLI. The URL has public access, but is protected using the webhook token. The "/cronjob" URL should be called via HTTPS.
Diffstat (limited to 'app/Controller/CronjobController.php')
-rw-r--r--app/Controller/CronjobController.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/Controller/CronjobController.php b/app/Controller/CronjobController.php
new file mode 100644
index 00000000..082fadfa
--- /dev/null
+++ b/app/Controller/CronjobController.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Controller\BaseController;
+use Symfony\Component\Console\Input\ArrayInput;
+use Symfony\Component\Console\Output\NullOutput;
+
+/**
+ * Class CronjobController
+ *
+ * Runs cron jobs via URL
+ *
+ * @package Kanboard\Controller
+ */
+class CronjobController extends BaseController
+{
+ public function run()
+ {
+ $this->checkWebhookToken();
+
+ $input = new ArrayInput(array(
+ 'command' => 'cronjob',
+ ));
+ $output = new NullOutput();
+
+ $this->cli->setAutoExit(false);
+ $this->cli->run($input, $output);
+
+ $this->response->html('Cronjob executed');
+ }
+}