$_SESSION['ovd-client']['gateway_first'] = false; $headers = apache_request_headers(); if (is_array($headers) && array_key_exists('OVD-Gateway', $headers)) { $_SESSION['ovd-client']['gateway'] = true; $_SESSION['ovd-client']['gateway_first'] = true; if (defined('GATEWAY_FORCE_PORT')) { $port = GATEWAY_FORCE_PORT; } else { $port = $_POST['requested_port']; } $_SESSION['ovd-client']['server'] = $_SERVER['REMOTE_ADDR'] . ':' . $port; $_SESSION['ovd-client']['sessionmanager_host'] = $_POST['requested_host'] . ':' . $_POST['requested_port']; } $_SESSION['ovd-client']['sessionmanager_url'] = 'https://' . $_SESSION['ovd-client']['server'] . '/ovd/client'; $sessionmanager_url = $_SESSION['ovd-client']['sessionmanager_url']; $xml = query_sm_post_xml($sessionmanager_url . '/start.php', $dom->saveXML()); if (!$xml) { echo return_error(0, 'unable_to_reach_sm', $sessionmanager_url . '/start.php'); die; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml); if (!$buf) { echo return_error(0, 'internal_error'); die; } if (!$dom->hasChildNodes()) { echo return_error(0, 'internal_error'); die; } $response_node = $dom->getElementsByTagName('response')->item(0);
$node->setAttribute('id', $errno_); $node->setAttribute('message', $errstr_); $dom->appendChild($node); return $dom->saveXML(); } if (!array_key_exists('mode', $_POST)) { $_POST['mode'] = 'logout'; } header('Content-Type: text/xml; charset=utf-8'); $dom = new DomDocument('1.0', 'utf-8'); $logout_node = $dom->createElement('logout'); $logout_node->setAttribute('mode', $_POST['mode']); $dom->appendChild($logout_node); $xml = $dom->saveXML(); $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML(query_sm_post_xml($sessionmanager_url . '/logout.php', $xml)); if (!$buf) { echo return_error(0, 'Invalid XML'); die; } if (!$dom->hasChildNodes()) { echo return_error(0, 'Invalid XML'); die; } $logout_nodes = $dom->getElementsByTagName('logout'); if (count($logout_nodes) != 1) { echo return_error(1, 'Invalid XML: No session node'); die; } $logout_node = $logout_nodes->item(0); if (!is_object($logout_node)) {
if (array_key_exists('login', $_REQUEST)) { $user_node->setAttribute('login', $_REQUEST['login']); } if (array_key_exists('password', $_REQUEST)) { $user_node->setAttribute('password', $_REQUEST['password']); } if (array_key_exists('token', $_REQUEST)) { $user_node->setAttribute('token', $_REQUEST['token']); } $session_node->appendChild($user_node); $dom->appendChild($session_node); $_SESSION['ovd-client']['server'] = @SESSIONMANAGER_HOST; // If the WebClient is not linked to a SessionManager, JavaScript object will return an 'Usage: missing "sessionmanager_host" parameter' error $_SESSION['ovd-client']['sessionmanager_url'] = 'https://' . $_SESSION['ovd-client']['server'] . '/ovd/client'; $sessionmanager_url = $_SESSION['ovd-client']['sessionmanager_url']; query_sm_post_xml($sessionmanager_url . '/auth.php', $dom->saveXML()); $_SESSION['ovd-client']['start_app'] = array(); } if (array_key_exists('mode', $_REQUEST) && $_REQUEST['mode'] == 'applications') { $order = array('id' => $_REQUEST['app']); if (array_key_exists('file', $_REQUEST)) { $args = array(); $args['path'] = $_REQUEST['file']; $args['share'] = base64_decode($_REQUEST['file_share']); $args['type'] = $_REQUEST['file_type']; $order['file'] = $args; } $_SESSION['ovd-client']['start_app'][] = $order; } $rdp_input_unicode = null; if (defined('RDP_INPUT_METHOD')) {