Managed By) - connecting this ITFlow to a manager with its code,
* checking in straight away, and disconnecting. The workings are in functions/managed.php.
*/
defined('FROM_POST_HANDLER') || die("Direct file access is not allowed");
// Off unless config.php turns it on (managedEnabled()) - then none of this answers
if (!managedEnabled()) {
return;
}
if (isset($_POST['managed_connect'])) {
validateCSRFToken();
if (!settingsColumnExists($mysqli, 'config_managed')) {
flashAlert("Apply the database update first", 'error');
redirect();
}
if (managedIsManaged()) {
flashAlert("This ITFlow is already managed by " . escapeHtml(managedManagerName()) . " - disconnect it first", 'error');
redirect();
}
$url = rtrim(trim((string) ($_POST['url'] ?? '')), '/');
if (!preg_match('#^https?://[^\s/]+(/[^\s]*)?$#', $url)) {
flashAlert("That isn't an address - it starts https://", 'error');
redirect();
}
$error = '';
if (!managedEnroll((string) ($_POST['code'] ?? ''), $url, $error)) {
flashAlert("Not connected - " . escapeHtml($error), 'error');
redirect();
}
$manager = managedManagerName();
logAudit("Management", "Connect", "$session_name connected this ITFlow to " . escapeSql($manager) . " to be managed");
flashAlert("Connected - " . escapeHtml($manager) . " manages this ITFlow now");
redirect();
}
if (isset($_POST['managed_checkin_now'])) {
validateCSRFToken();
if (!managedIsManaged()) {
flashAlert("This ITFlow isn't managed", 'error');
redirect();
}
$result = managedCheckin();
if (!$result['ok']) {
flashAlert("The check-in didn't get through - " . escapeHtml($result['error']), 'error');
} elseif (!managedIsManaged()) {
flashAlert("Checked in - the manager has removed this ITFlow, so it is no longer managed", 'info');
} else {
flashAlert("Checked in with " . escapeHtml(managedManagerName()) . "" . ($result['commands'] ? ' - it had ' . $result['commands'] . ' request' . ($result['commands'] === 1 ? '' : 's') : ''));
}
redirect();
}
if (isset($_POST['managed_disconnect'])) {
validateCSRFToken();
if (!managedIsManaged()) {
flashAlert("This ITFlow isn't managed", 'error');
redirect();
}
if (managedRequired()) {
flashAlert("This install's config.php keeps it managed, so it can't be disconnected here", 'error');
redirect();
}
$manager = managedManagerName();
managedDisconnect('disconnected');
logAudit("Management", "Disconnect", "$session_name disconnected this ITFlow from " . escapeSql($manager));
flashAlert("Disconnected - " . escapeHtml($manager) . " no longer manages this ITFlow", 'error');
redirect();
}