summaryrefslogtreecommitdiffstats
path: root/modules-available/systemstatus/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/systemstatus/page.inc.php')
-rw-r--r--modules-available/systemstatus/page.inc.php44
1 files changed, 33 insertions, 11 deletions
diff --git a/modules-available/systemstatus/page.inc.php b/modules-available/systemstatus/page.inc.php
index 7ee9e5a4..c1c52af0 100644
--- a/modules-available/systemstatus/page.inc.php
+++ b/modules-available/systemstatus/page.inc.php
@@ -228,20 +228,42 @@ class Page_SystemStatus extends Page
protected function ajaxServices()
{
- $data = array();
+ $data = array('services' => array());
+ $tasks = array();
- $taskId = Trigger::ldadp();
- if ($taskId === false)
- return;
- $status = Taskmanager::waitComplete($taskId, 10000);
+ foreach (['dmsd', 'dnbd3-server', 'atftpd'] as $svc) {
+ $tasks[] = array(
+ 'name' => $svc,
+ 'task' => Taskmanager::submit('Systemctl', ['service' => $svc, 'operation' => 'is-active'])
+ );
+ }
+ $tasks[] = array(
+ 'name' => 'LDAP/AD-Proxy',
+ 'task' => Trigger::ldadp()
+ );
+ $deadline = time() + 10;
+ do {
+ $done = true;
+ foreach ($tasks as &$task) {
+ if (!is_string($task['task']) && (Taskmanager::isFailed($task['task']) || Taskmanager::isFinished($task['task'])))
+ continue;
+ $task['task'] = Taskmanager::waitComplete($task['task'], 100);
+ if (!Taskmanager::isFailed($task['task']) && !Taskmanager::isFinished($task['task'])) {
+ $done = false;
+ }
+ }
+ unset($task);
+ } while (!$done && time() < $deadline);
- if (Taskmanager::isFailed($status)) {
- if (isset($status['data']['messages']))
- $data['ldadpError'] = $status['data']['messages'];
- else
- $data['ldadpError'] = 'Taskmanager error';
+ foreach ($tasks as $task) {
+ $fail = Taskmanager::isFailed($task['task']);
+ $data['services'][] = array(
+ 'name' => $task['name'],
+ 'fail' => $fail,
+ 'data' => isset($task['data']) ? $task['data'] : null,
+ 'unknown' => $task['task'] === false
+ );
}
- // TODO: Dozentenmodul, tftp, ...
echo Render::parse('services', $data);
}