function parse_server_status_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('server')->item(0); if (is_null($node)) { return false; } if (!$node->hasAttribute('name')) { return false; } if (!$node->hasAttribute('status')) { return false; } return array('name' => $node->getAttribute('name'), 'status' => $node->getAttribute('status')); }
function parse_session_status_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('session')->item(0); if (is_null($node)) { return false; } if (!$node->hasAttribute('id')) { return false; } if (!$node->hasAttribute('status')) { return false; } $ret = array('id' => $node->getAttribute('id'), 'server' => $_SERVER['REMOTE_ADDR'], 'status' => $node->getAttribute('status'), 'reason' => NULL, 'role' => NULL); if ($node->hasAttribute('reason')) { $ret['reason'] = $node->getAttribute('reason'); } if ($node->hasAttribute('role')) { $ret['role'] = $node->getAttribute('role'); } return $ret; }
public function get_login() { $buf = $this->prefs->get('AuthMethod', 'Token'); $token_url = $buf['url']; $user_node_name = $buf['user_node_name']; $login_attribute_name = $buf['login_attribute_name']; if (!isset($token_url) or $token_url == '') { Logger::error('main', 'Token URL is not defined'); return NULL; } if (!isset($_REQUEST['token'])) { Logger::warning('main', 'Missing parameter : token'); return NULL; } $token_url = str_replace('%TOKEN%', $_REQUEST['token'], $token_url); $xml = query_url($token_url); $dom = new DomDocument('1.0', 'utf-8'); $ret = @$dom->loadXML($xml); if (!$ret) { Logger::error('main', 'Token webservice does not send a valid XML'); return NULL; } $user_node = $dom->getElementsByTagname($user_node_name)->item(0); if (!is_object($user_node)) { Logger::error('main', 'Token webservice does not send a valid XML'); return NULL; } if (!$user_node->hasAttribute($login_attribute_name)) { Logger::error('main', 'Token webservice does not send a valid XML'); return NULL; } $this->login = $user_node->getAttribute($login_attribute_name); return $this->login; }
function parse_session_dump_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('session')->item(0); if (is_null($node)) { return false; } if (!$node->hasAttribute('id')) { return false; } $ret = array('id' => $node->getAttribute('id'), 'server' => $_SERVER['REMOTE_ADDR'], 'dump' => array()); foreach ($dom->getElementsByTagname('dump') as $node) { if (!$node->hasAttribute('name')) { return false; } $name = $node->getAttribute('name'); $textNode = null; foreach ($node->childNodes as $child_node) { if ($child_node->nodeType != XML_TEXT_NODE) { continue; } $textNode = $child_node; break; } if ($textNode === null) { return false; } $ret['dump'][$name] = trim($textNode->wholeText); } return $ret; }
function getApplications($user) { $socket = curl_init('https://' . ULTEO_OVD_SM_HOST . '/ovd/client/applications?user='******');*/ curl_setopt($socket, CURLOPT_RETURNTRANSFER, 1); curl_setopt($socket, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($socket, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($socket, CURLOPT_TIMEOUT, 15 + 5); curl_setopt($socket, CURLOPT_SSL_VERIFYHOST, 1); $data = curl_exec($socket); $code = curl_getinfo($socket, CURLINFO_HTTP_CODE); $content_type = curl_getinfo($socket, CURLINFO_CONTENT_TYPE); curl_close($socket); if ($code != 200) { $_SESSION['error'] = 'Unable to talk to sm'; return false; } if (strpos($content_type, 'text/xml') === FALSE) { $_SESSION['error'] = 'invalid returned format'; return false; } $dom = new DomDocument('1.0', 'utf-8'); $ret = @$dom->loadXML($data); if (!$ret) { $_SESSION['error'] = 'invalid returned format'; return false; } if ($dom->documentElement->nodeName != 'user') { $_SESSION['error'] = 'authentication issue'; return false; } $apps = array(); foreach ($dom->getElementsByTagname('application') as $app_node) { $app = array(); $app['id'] = $app_node->getAttribute('id'); $app['name'] = $app_node->getAttribute('name'); $app['mimetypes'] = array(); foreach ($app_node->getElementsByTagname('mime') as $mime_node) { $app['mimetypes'][] = $mime_node->getAttribute('type'); } $apps[$app['id']] = $app; } return $apps; }
function parse_premium_sign_XML($xml_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('message')->item(0); if (is_null($node)) { return false; } return $node->textContent; }
function init_saml2_auth() { global $sessionmanager_url; $sm = new SessionManager($sessionmanager_url); $ret = $sm->query('auth_params'); $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($ret); if (!$buf) { send_error("Unable to retrieve the SAML parameters"); } if (!$dom->hasChildNodes()) { send_error("Unable to retrieve the SAML parameters"); } $saml2 = $dom->getElementsByTagname('SAML2')->item(0); $url = $saml2->getElementsByTagname('idp_url')->item(0)->textContent; $fingerprint = $saml2->getElementsByTagname('idp_fingerprint')->item(0)->textContent; $cert = $saml2->getElementsByTagname('idp_cert')->item(0)->textContent; $settings = build_saml_settings($url, $fingerprint, $cert); return new OneLogin_Saml2_Auth($settings); }
function parse_logout_XML($xml_, &$mode_) { if (!$xml_ || strlen($xml_) == 0) { return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('logout')->item(0); if (is_null($node)) { return false; } if ($node->hasAttribute('mode')) { $mode_ = $node->getAttribute('mode'); } return true; }
function validateAccess($action_required, $rol_required) { // Abrir el archivo XML de permisos $dom = new DomDocument(); $dom->load(realpath(".") . '/' . PERMISSION_FILE); // Levantar los tags de permisos y buscar la accion $permisos = $dom->getElementsByTagname("permiso"); foreach ($permisos as $permiso) { // Busco el nombre de la accion $accion = $permiso->getElementsByTagname("accion")->item(0)->firstChild->data; if ($accion == $action_required) { // Busco los roles $roles = $permiso->getElementsByTagname("rol"); // Para recorrer los roles que tienen permiso para la accion foreach ($roles as $rol) { if ($rol->firstChild->data == $rol_required) { return true; } } } } // No se encontro el rol para la accion return false; }
/** * Carga en $this->_actions el archivo de configuraci�n. La configuraci�n se obtiene del archivo indicado en _config_file * * @access private * @return void */ function loadConfigurationFromXml() { // Abrir el archivo XML y obtener el root $dom = new DomDocument(); $dom->load(realpath(".") . '/' . $this->_config_file); // Procesar el default (es un solo elemento) $defaults = $dom->getElementsByTagname("default"); foreach ($defaults as $default) { // Nombre de la acci�n $nombre = $default->getElementsByTagname('nombre')->item(0)->firstChild->data; // Front de la aplicacion $front = $default->getElementsByTagname('front')->item(0)->firstChild->data; } // Guardar los defaults $this->_defaults['nombre'] = $nombre; $this->_defaults['front'] = $front; // Procesar las acciones $acciones = $dom->getElementsByTagname("accion"); foreach ($acciones as $accion) { // Nombre de la acci�n $nombre = $accion->getElementsByTagname('nombre')->item(0)->firstChild->data; // Link de la acci�n $link = $accion->getElementsByTagname('link')->item(0)->firstChild->data; // Nombre del m�dulo $modulo = $accion->getElementsByTagname('modulo')->item(0)->firstChild->data; // Nombre de la clase $clase = $accion->getElementsByTagname('clase')->item(0)->firstChild->data; // Indexar las acciones por el link $this->_actions_link[$link] = array('nombre' => $nombre, 'link' => $link, 'modulo' => $modulo, 'clase' => $clase); // Indexar las acciones por el nombre $this->_actions_name[$nombre] = array('nombre' => $nombre, 'link' => $link, 'modulo' => $modulo, 'clase' => $clase); } }
$applications_node->appendChild($application_node); } $session_node->appendChild($applications_node); $dom->appendChild($session_node); $sessionManagement->appendToSessionCreateXML($dom); $xml = $dom->saveXML(); $ret_xml = query_url_post_xml($server->getBaseURL() . '/webapps/session/create', $xml); $ret = $sessionManagement->parseSessionCreate($ret_xml); if (!$ret) { Logger::critical('main', '(client/start) Unable to create Session \'' . $session->id . '\' for User \'' . $session->user_login . '\' on Server \'' . $server->fqdn . '\', aborting'); $session->orderDeletion(true, Session::SESSION_END_STATUS_ERROR); throw_response(INTERNAL_ERROR); } $ret_dom = new DomDocument('1.0', 'utf-8'); $ret_buf = @$ret_dom->loadXML($ret_xml); $node = $ret_dom->getElementsByTagname('session')->item(0); $webapps_url = $node->getAttribute('webapps-scheme') . '://' . $server->getExternalName() . ':' . $node->getAttribute('webapps-port'); $session->settings['webapps-url'] = $webapps_url; } // $session->setStatus(Session::SESSION_STATUS_READY); Logger::info('main', '(client/start) Resuming session for ' . $user->getAttribute('login') . ' (' . $old_session_id . ' => ' . $session->server . ')'); } else { if (!$sessionManagement->generateCredentials()) { Logger::error('main', '(client/start) Unable to generate access credentials for User "' . $user->getAttribute('login') . '", aborting'); throw_response(SERVICE_NOT_AVAILABLE); } if (array_key_exists(Server::SERVER_ROLE_APS, $sessionManagement->credentials)) { $user_login_aps = $sessionManagement->credentials[Server::SERVER_ROLE_APS]['login']; $user_password_aps = $sessionManagement->credentials[Server::SERVER_ROLE_APS]['password']; }
function print_error($errno) { $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('ajaxplorer'); $node->setAttribute('status', 'error'); $node->setAttribute('error', $errno); $dom->appendChild($node); return $dom->saveXML(); } $input = file_get_contents('php://input'); $xml = new DomDocument('1.0', 'utf-8'); if (!$xml->loadXML($input)) { echo print_error(0); die; } $session_node = $xml->getElementsByTagname('session')->item(0); if (!$session_node) { echo print_error(1); die; } $aj = new Ajaxplorer($session_node); $use_explorer = $aj->can_run() && $aj->is_required(); if ($use_explorer === true) { $_SESSION['ovd-client']['ajxp'] = $aj->build_data(); } else { echo print_error(2); die; } $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('ajaxplorer'); $node->setAttribute('status', 'ok');
/** * Carga todas las conexiones registradas en el archivo de configurci�n XML * @access private * @static * @return void */ static function getDatasourcesFromXml() { $_datasources = array(); // Abrir el archivo XML y obtener el root $dom = new DomDocument(); $dom->load(CONFIG . DATASOURCES_FILE); // Procesar cada uno de los datasources $datasources = $dom->getElementsByTagname("datasource"); foreach ($datasources as $datasource) { // Name $name = $datasource->getElementsByTagname('name')->item(0)->firstChild->data; // Base $base = $datasource->getElementsByTagname('base')->item(0)->firstChild->data; // Hostname $hostname = $datasource->getElementsByTagname('hostname')->item(0)->firstChild; if ($hostname != null) { $hostname = $hostname->data; } // Driver $driver = $datasource->getElementsByTagname('driver')->item(0)->firstChild->data; // Username $username = $datasource->getElementsByTagname('username')->item(0)->firstChild; if ($username != null) { $username = $username->data; } // Password $password = $datasource->getElementsByTagname('password')->item(0)->firstChild; if ($password != null) { $password = $password->data; } // Port $port = $datasource->getElementsByTagname('port')->item(0)->firstChild; if ($port != null) { $port = $port->data; } // Indexar los datasources $_datasources[$name] = array('name' => $name, 'base' => $base, 'hostname' => $hostname, 'driver' => $driver, 'username' => $username, 'password' => $password, 'port' => $port); } return $_datasources; }
function get_users_list() { if (!defined('SESSIONMANAGER_HOST')) { return false; } global $sessionmanager_url; $sm = new SessionManager($sessionmanager_url); $ret = $sm->query('userlist'); $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($ret); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $users_node = $dom->getElementsByTagname('users')->item(0); if (is_null($users_node)) { return false; } $users = array(); foreach ($users_node->childNodes as $user_node) { if ($user_node->hasAttribute('login')) { $users[$user_node->getAttribute('login')] = strlen($user_node->getAttribute('displayname')) > 32 ? substr($user_node->getAttribute('displayname'), 0, 32) . '...' : $user_node->getAttribute('displayname'); } } natcasesort($users); if (count($users) == 0) { return false; } return $users; }
public function refresh() { $server = Abstract_Server::load($this->server); if (!is_object($server)) { Logger::error('apt-get', 'TASK::refresh for task ' . $this->id . ' returned an error (unknown server ' . $this->server . ')'); return false; } $xml = query_url($server->getBaseURL() . '/aps/debian/' . $this->job_id . '/status'); if (!$xml) { Logger::error('apt-get', 'TASK::refresh for task ' . $this->id . ' on server ' . $this->server . ' returned an error'); $this->status = 'error'; return true; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('debian_request')->item(0); if (is_null($node)) { return false; } $this->status = $node->getAttribute('status'); $ret = true; switch ($this->status) { case 'created': Logger::warning('apt-get', 'TASK::refresh for task ' . $this->id . ' on server ' . $this->server . ' is created'); $ret = false; break; case 'in progress': Logger::warning('apt-get', 'TASK::refresh for task ' . $this->id . ' on server ' . $this->server . ' is in progress'); $ret = false; break; case 'success': Logger::info('apt-get', 'TASK::refresh for task ' . $this->id . ' on server ' . $this->server . ' is now finished'); $this->t_end = time(); $server->updateApplications(); $ret = true; break; case 'error': Logger::error('apt-get', 'TASK::refresh for task ' . $this->id . ' on server ' . $this->server . ' returned an error'); $ret = true; break; } return $ret; }
public function parseSessionCreate($xml_) { if (!$xml_ || strlen($xml_) == 0) { Logger::error('main', 'SessionManagement::parseSessionCreate - Empty content'); return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml_); if (!$buf) { Logger::error('main', 'SessionManagement::parseSessionCreate - Not an XML'); return false; } if (!$dom->hasChildNodes()) { Logger::error('main', 'SessionManagement::parseSessionCreate - Empty XML'); return false; } $node = $dom->getElementsByTagname('session')->item(0); if (is_null($node)) { Logger::error('main', 'SessionManagement::parseSessionCreate - No "session" node'); return false; } if (!$node->hasAttribute('id')) { Logger::error('main', 'SessionManagement::parseSessionCreate - No "id" attribute in "session" node'); return false; } return true; }
public function orderAction($action_) { $server = Abstract_Server::load($this->server); if (!$server) { Logger::error('main', 'VDI_VM::orderAction unable to load Server \'' . $this->server . '\''); return false; } $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('vm'); $node->setAttribute('id', $this->id); $node->setAttribute('action', $action_); $dom->appendChild($node); $xml = $dom->saveXML(); $xml = query_url_post_xml($server->getBaseURL() . '/hypervisor/vm/manage', $xml); if (!$xml) { $server->isUnreachable(); Logger::error('main', 'VDI_VM::orderAction server \'' . $server->fqdn . '\' is unreachable'); return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('vm')->item(0); if (is_null($node)) { return false; } $status = $node->getAttribute('status'); if ($status != 'OK') { Logger::error('main', 'VDI_VM::orderAction failed'); return false; } return true; }
public function deleteNetworkFolder($name_, $force_ = false) { if (!is_array($this->roles) || !array_key_exists(Server::SERVER_ROLE_FS, $this->roles)) { Logger::critical('main', 'SERVER::deleteNetworkFolder - Not an FS'); return false; } if (!$this->isOnline()) { Logger::debug('main', 'Server::deleteNetworkFolder("' . $name_ . '") server "' . $this->fqdn . ':' . $this->web_port . '" is not online'); return false; } $dom = new DomDocument('1.0', 'utf-8'); $node = $dom->createElement('share'); $node->setAttribute('id', $name_); $node->setAttribute('force', $force_); $dom->appendChild($node); $xml = $dom->saveXML(); $xml = query_url_post_xml($this->getBaseURL() . '/fs/share/delete', $xml); if (!$xml) { $this->isUnreachable(); Logger::error('main', 'Server::deleteNetworkFolder server \'' . $this->fqdn . '\' is unreachable'); return false; } $dom = new DomDocument('1.0', 'utf-8'); $buf = @$dom->loadXML($xml); if (!$buf) { return false; } if (!$dom->hasChildNodes()) { return false; } $node = $dom->getElementsByTagname('share')->item(0); if (is_null($node)) { return false; } if (!$node->hasAttribute('id')) { return false; } return true; }
public function prepareWebappsAccess($session_) { if (!array_key_exists(Server::SERVER_ROLE_WEBAPPS, $session_->servers)) { return true; } $prepare_servers = array(); foreach ($session_->servers[Server::SERVER_ROLE_WEBAPPS] as $server_id => $data) { $prepare_servers[] = $server_id; } $user_login_webapps = $session_->settings['webapps_access_login']; $user_password_webapps = $session_->settings['webapps_access_password']; $count_prepare_servers = 0; foreach ($prepare_servers as $prepare_server) { $count_prepare_servers++; $server = Abstract_Server::load($prepare_server); if (!$server) { continue; } if (!array_key_exists(Server::SERVER_ROLE_WEBAPPS, $server->getRoles())) { continue; } $dom = new DomDocument('1.0', 'utf-8'); $session_node = $dom->createElement('session'); $session_node->setAttribute('id', $session_->id); $session_node->setAttribute('mode', Session::MODE_APPLICATIONS); $user_node = $dom->createElement('user'); $user_node->setAttribute('login', $user_login_webapps); $user_node->setAttribute('password', $user_password_webapps); $user_node->setAttribute('USER_LOGIN', $_POST['login']); $user_node->setAttribute('USER_PASSWD', $_POST['password']); $user_node->setAttribute('displayName', $this->user->getAttribute('displayname')); $session_node->appendChild($user_node); $applications_node = $dom->createElement('applications'); foreach ($session_->getPublishedApplications() as $application) { if ($application->getAttribute('type') != 'webapp') { continue; } $application_node = $dom->createElement('application'); $application_node->setAttribute('id', $application->getAttribute('id')); $application_node->setAttribute('type', 'webapp'); $application_node->setAttribute('name', $application->getAttribute('name')); $applications_node->appendChild($application_node); } $session_node->appendChild($applications_node); $dom->appendChild($session_node); $this->appendToSessionCreateXML($dom); $xml = $dom->saveXML(); $ret_xml = query_url_post_xml($server->getBaseURL() . '/webapps/session/create', $xml); $ret = $this->parseSessionCreate($ret_xml); if (!$ret) { Logger::critical('main', 'SessionManagement::prepareWebappsAccess - Unable to create Session \'' . $session_->id . '\' for User \'' . $session_->user_login . '\' on Server \'' . $server->fqdn . '\', aborting'); $session_->orderDeletion(true, Session::SESSION_END_STATUS_ERROR); return false; } $ret_dom = new DomDocument('1.0', 'utf-8'); $ret_buf = @$ret_dom->loadXML($ret_xml); $node = $ret_dom->getElementsByTagname('session')->item(0); $webapps_url = $node->getAttribute('webapps-scheme') . '://' . $server->getExternalName() . ':' . $node->getAttribute('webapps-port'); $session_->settings['webapps-url'] = $webapps_url; // Make sure that session object is uptodate $buf = Abstract_Session::load($session_->id); $buf->setServerStatus($server->id, Session::SESSION_STATUS_READY, NULL, Server::SERVER_ROLE_WEBAPPS); $buf->settings['webapps-url'] = $webapps_url; Abstract_Session::save($buf); } return true; }