$name = $_GET['name']; $version = $_GET['version']; $hostname = $_GET['hostname']; if (!empty($_GET['uuid'])) { $uuid = $_GET['uuid']; } else { $uuid = null; } if (!empty($_GET['gid'])) { $gid = $_GET['gid']; } else { $gid = null; } $pid = $_GET['pid']; $p_api = new ServerAPI(); $p_api->fromURI($_GET["papi"]); $cible = $hostname; if ($gid) { $group = new Group($_GET['gid'], true); $cible = $group->getName(); } $params["papi"] = $p_api; $params["name"] = $hostname; $params["hostname"] = $hostname; $params["uuid"] = $uuid; $params["gid"] = $gid; $params["from"] = $from; $params["pid"] = $pid; $params["ltitle"] = get_def_package_label($name, $version); $params["create_directory"] = 'on'; $params["start_script"] = 'on';
$version = $_GET['version']; $hostname = $_GET['hostname']; if (!empty($_GET['uuid'])) { $uuid = $_GET['uuid']; } else { $uuid = null; } if (!empty($_GET['gid'])) { $gid = $_GET['gid']; } else { $gid = null; } $pid = $_GET['pid']; $papi = $_GET["papi"]; $p_api = new ServerAPI(); $p_api->fromURI($papi); $cible = $hostname; if ($gid) { $group = new Group($_GET['gid'], true); $cible = $group->getName(); } $params["papi"] = $papi; $params["name"] = $hostname; $params["hostname"] = $hostname; $params["uuid"] = $uuid; $params["gid"] = $gid; $params["from"] = $from; $params["pid"] = $pid; $params["ltitle"] = get_def_package_label($name, $version); $params["create_directory"] = 'on'; $params["start_script"] = 'on';
function get_sort_order() { $orders = array(); foreach ($_POST as $k => $v) { if (preg_match("/^" . $this->input_pre . "/", $k)) { $id_papi = base64_decode(preg_replace("/^" . $this->input_pre . "/", "", $k)); list($id, $papid) = preg_split('/##/', $id_papi); $p_api = new ServerAPI(); $p_api->fromURI(unserialize(base64_decode($papid))); $orders[$id_papi] = array($p_api, $id, $v); } } return $orders; }
function start_a_command($proxy = array()) { if ($_POST['editConvergence']) { $changed_params = getChangedParams($_POST); if ($changed_params == array('active')) { print "We have to edit command...."; } } $error = ""; if (!check_date($_POST)) { $error .= _T("Your start and end dates are not coherent, please check them.<br/>", "msc"); } # should add some other tests on fields (like int are int? ...) if ($error != '') { new NotifyWidgetFailure($error); complete_post(); $url = "base/computers/msctabs?"; foreach ($_GET as $k => $v) { $url .= "{$v}={$k}"; } header("Location: " . urlStrRedirect("msc/logs/viewLogs", array_merge($_GET, $_POST, array('failure' => True)))); exit; } // Vars seeding $post = $_POST; $from = $post['from']; $path = explode('|', $from); $module = $path[0]; $submod = $path[1]; $page = $path[2]; $params = array(); foreach (array('start_script', 'clean_on_success', 'do_reboot', 'do_wol', 'next_connection_delay', 'max_connection_attempt', 'do_inventory', 'ltitle', 'parameters', 'papi', 'maxbw', 'deployment_intervals', 'max_clients_per_proxy', 'launchAction') as $param) { $params[$param] = $post[$param]; } $halt_to = array(); foreach ($post as $p => $v) { if (preg_match('/^issue_halt_to_/', $p)) { $p = preg_replace('/^issue_halt_to_/', '', $p); if ($v == 'on') { $halt_to[] = $p; } } } $params['issue_halt_to'] = $halt_to; $p_api = new ServerAPI(); $p_api->fromURI($post['papi']); foreach (array('start_date', 'end_date') as $param) { if ($post[$param] == _T("now", "msc")) { $params[$param] = "0000-00-00 00:00:00"; } elseif ($post[$param] == _T("never", "msc")) { $params[$param] = "0000-00-00 00:00:00"; } else { $params[$param] = $post[$param]; } } $pid = $post['pid']; $mode = $post['copy_mode']; if (isset($post['uuid']) && $post['uuid']) { // command on a single target $hostname = $post['hostname']; $uuid = $post['uuid']; $target = array($uuid); $tab = 'tablogs'; /* record new command */ $id = add_command_api($pid, $target, $params, $p_api, $mode, NULL); if (!isXMLRPCError()) { scheduler_start_these_commands('', array($id)); /* then redirect to the logs page */ header("Location: " . urlStrRedirect("msc/logs/viewLogs", array('tab' => $tab, 'uuid' => $uuid, 'hostname' => $hostname, 'cmd_id' => $id))); exit; } else { /* Return to the launch tab, the backtrace will be displayed */ header("Location: " . urlStrRedirect("msc/logs/viewLogs", array('tab' => 'tablaunch', 'uuid' => $uuid, 'hostname' => $hostname))); exit; } } else { # command on a whole group $gid = $post['gid']; $tab = 'grouptablogs'; // record new command // given a proxy list and a proxy style, we now have to build or proxy chain // target structure is an dict using the following stucture: "priority" => array(proxies) $ordered_proxies = array(); if ($_POST['proxy_mode'] == 'multiple') { // first case: split mode; every proxy got the same priority (1 in our case) foreach ($proxy as $p) { array_push($ordered_proxies, array('uuid' => $p, 'priority' => 1, 'max_clients' => $_POST['max_clients_per_proxy'])); } $params['proxy_mode'] = 'split'; } elseif ($_POST['proxy_mode'] == 'single') { // second case: queue mode; one priority level per proxy, starting at 1 $current_priority = 1; foreach ($proxy as $p) { array_push($ordered_proxies, array('uuid' => $p, 'priority' => $current_priority, 'max_clients' => $_POST['max_clients_per_proxy'])); $current_priority += 1; } $params['proxy_mode'] = 'queue'; } if (quick_get('convergence')) { $active = $_POST['active'] == 'on' ? 1 : 0; $cmd_type = 2; // Convergence command type if (quick_get('editConvergence')) { /* Stop command */ $cmd_id = xmlrpc_get_convergence_command_id($gid, $p_api, $pid); stop_command($cmd_id); /* Set end date of this command to now(), don't touch to start date */ $start_date = _get_command_start_date($cmd_id); extend_command($cmd_id, $start_date, date("Y-m-d H:i:s")); /* Create new command */ $deploy_group_id = xmlrpc_get_deploy_group_id($gid, $p_api, $pid); $command_id = add_command_api($pid, NULL, $params, $p_api, $mode, $deploy_group_id, $ordered_proxies, $cmd_type); if (!$active) { // If this convergence is not active, expire this command $start_date = _get_command_start_date($command_id); extend_command($command_id, $start_date, date("Y-m-d H:i:s")); } /* Update convergence DB */ $updated_datas = array('active' => $active, 'commandId' => intval($command_id), 'cmdPhases' => $params); xmlrpc_edit_convergence_datas($gid, $p_api, $pid, $updated_datas); } else { /* Create convergence */ // create sub-groups $group = new Group($gid, True); $package = to_package(getPackageDetails($p_api, $pid)); $convergence_groups = $group->createConvergenceGroups($package); $deploy_group_id = $convergence_groups['deploy_group_id']; $done_group_id = $convergence_groups['done_group_id']; // Add command on sub-group $command_id = add_command_api($pid, NULL, $params, $p_api, $mode, $deploy_group_id, $ordered_proxies, $cmd_type); if (!$active) { // If this convergence is not active, expire this command $start_date = _get_command_start_date($command_id); extend_command($command_id, $start_date, date("Y-m-d H:i:s")); } // feed convergence db xmlrpc_add_convergence_datas($gid, $deploy_group_id, $done_group_id, $pid, $p_api, intval($command_id), $active, $params); } header("Location: " . urlStrRedirect("base/computers/groupmsctabs", array('gid' => $gid))); exit; } else { $id = add_command_api($pid, NULL, $params, $p_api, $mode, $gid, $ordered_proxies); scheduler_start_these_commands('', array($id)); // then redirect to the logs page header("Location: " . urlStrRedirect("msc/logs/viewLogs", array('tab' => $tab, 'gid' => $gid, 'cmd_id' => $id, 'proxy' => $proxy))); exit; } } }