Esempio n. 1
1
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'));
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
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;
}
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
 /**
  * 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);
     }
 }
Esempio n. 11
0
            $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'];
    }
Esempio n. 12
0
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');
Esempio n. 13
0
 /**
  * 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;
 }
Esempio n. 14
0
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;
}
Esempio n. 15
0
 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;
 }
Esempio n. 16
0
 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;
 }
Esempio n. 17
0
 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;
 }
Esempio n. 18
0
 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;
 }
Esempio n. 19
0
 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;
 }