summaryrefslogtreecommitdiffstats
path: root/inc/trigger.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2014-12-02 19:22:48 +0100
committerSimon Rettberg2014-12-02 19:22:48 +0100
commitba2a49e9875eda489385e370bb9f2259779caa7b (patch)
tree2654d7b4a6bf99d584e146f7708c75a5b8beaeac /inc/trigger.inc.php
parentFix wrong event type when displaying event log (diff)
downloadslx-admin-ba2a49e9875eda489385e370bb9f2259779caa7b.tar.gz
slx-admin-ba2a49e9875eda489385e370bb9f2259779caa7b.tar.xz
slx-admin-ba2a49e9875eda489385e370bb9f2259779caa7b.zip
Tweaks and fixes
Diffstat (limited to 'inc/trigger.inc.php')
-rw-r--r--inc/trigger.inc.php48
1 files changed, 24 insertions, 24 deletions
diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php
index 790323b5..a5a149c8 100644
--- a/inc/trigger.inc.php
+++ b/inc/trigger.inc.php
@@ -65,11 +65,11 @@ class Trigger
}
}
if ($publicCandidate !== 'none' && $publicCandidate !== 'many') {
- Property::setServerIp($publicCandidate);
+ Property::setServerIp($publicCandidate, true);
return true;
}
if ($privateCandidate !== 'none' && $privateCandidate !== 'many') {
- Property::setServerIp($privateCandidate);
+ Property::setServerIp($privateCandidate, true);
return true;
}
return false;
@@ -109,26 +109,29 @@ class Trigger
* To be called if the server ip changes, as it's embedded in the AD module configs.
* This will then recreate all AD tgz modules.
*/
- public static function rebuildAdModules()
+ public static function rebuildAdModules($parent = NULL)
{
- $task = Taskmanager::submit('LdadpLauncher', array('ids' => array())); // Stop all running instances
+ $task = Taskmanager::submit('LdadpLauncher', array(
+ 'parentTask' => $parent,
+ 'failOnParentFail' => false,
+ 'ids' => array()
+ )); // Stop all running instances
$ads = ConfigModule::getAdConfigs();
if (empty($ads))
- return;
+ return false;
- $parent = isset($task['id']) ? $task['id'] : NULL;
+ if (isset($task['id']))
+ $parent = $task['id'];
foreach ($ads as $ad) {
$ad['parentTask'] = $parent;
$ad['failOnParentFail'] = false;
+ $ad['proxyip'] = Property::getServerIp();
$task = Taskmanager::submit('CreateAdConfig', $ad);
if (isset($task['id']))
$parent = $task['id'];
}
- if (Taskmanager::waitComplete($parent, 2000) === false) {
- EventLog::warning('Rebuilding LDAP-AD-Proxy config failed. AD Auth might not work properly.');
- sleep(1);
- }
- Trigger::ldadp();
+ Trigger::ldadp($parent);
+ return $parent;
}
/**
@@ -157,23 +160,20 @@ class Trigger
}
/**
- * Check and process all callbacks
+ * Check and process all callbacks.
*/
public static function checkCallbacks()
{
- $res = Database::simpleQuery("SELECT taskid, cbfunction FROM callback");
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $status = Taskmanager::status($row['taskid']);
- if (Taskmanager::isFailed($status) || Taskmanager::isFinished($status))
- Database::exec("DELETE FROM callback WHERE taskid = :task AND cbfunction = :cb LIMIT 1", array('task' => $row['taskid'], 'cb' => $row['cbfunction']));
- if (Taskmanager::isFinished($status)) {
- $func = array('TaskmanagerCallback', preg_replace('/\W/', '', $row['cbfunction']));
- if (!call_user_func_array('method_exists', $func)) {
- Eventlog::warning("Callback {$row['cbfunction']} doesn't exist.");
- } else {
- call_user_func($func, $status);
- }
+ $callbackList = TaskmanagerCallback::getPendingCallbacks();
+ foreach ($callbackList as $taskid => $callbacks) {
+ $status = Taskmanager::status($taskid);
+ if ($status === false)
+ continue;
+ foreach ($callbacks as $callback) {
+ TaskmanagerCallback::handleCallback($callback, $status);
}
+ if (Taskmanager::isFailed($status) || Taskmanager::isFinished($status))
+ Taskmanager::release($status);
}
}