|  |  | 
 |  |  |          $port = 0; | 
 |  |  |          if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { | 
 |  |  |             $url = 'https://'; | 
 |  |  |             if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '443') { | 
 |  |  |             if(isset($_SERVER['SERVER_PORT']) | 
 |  |  |                   && $_SERVER['SERVER_PORT'] != '443') { | 
 |  |  |                $port = $_SERVER['SERVER_PORT']; | 
 |  |  |             } | 
 |  |  |          } elseif(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '80') { | 
 |  |  |          } elseif(isset($_SERVER['SERVER_PORT']) | 
 |  |  |                && $_SERVER['SERVER_PORT'] != '80') { | 
 |  |  |             $port = $_SERVER['SERVER_PORT']; | 
 |  |  |          } | 
 |  |  |           | 
 |  |  | 
 |  |  |          ), | 
 |  |  |          'ssl' => array( | 
 |  |  |             'verify_peer' => TRUE, | 
 |  |  |             'allow_self_signed' => FALSE, | 
 |  |  |             'verify_peer_name' => TRUE, | 
 |  |  |             'verify_depth' => 5, | 
 |  |  |             'ciphers' => 'HIGH:-MD5:-aNULL:-DES', | 
 |  |  |             'allow_self_signed' => FALSE, | 
 |  |  |             'disable_compression' => TRUE, | 
 |  |  |          ), | 
 |  |  |       ); | 
 |  |  |        | 
 |  |  |       $data = file_get_contents($this->serverUrl.'/serviceValidate?service='.urlencode($this->serviceUrl).'&ticket='.urlencode($ticket), | 
 |  |  |       $data = file_get_contents($this->serverUrl | 
 |  |  |                .'/serviceValidate?service='.urlencode($this->serviceUrl) | 
 |  |  |                .'&ticket='.urlencode($ticket), | 
 |  |  |             FALSE, stream_context_create($context)); | 
 |  |  |       if($data === FALSE) { | 
 |  |  |          throw new JasigException('Authentication error: CAS server is unavailable'); | 
 |  |  | 
 |  |  |          $xml->loadXML($data); | 
 |  |  |           | 
 |  |  |          foreach(libxml_get_errors() as $error) { | 
 |  |  |             $e = new ErrorException($error->message, $error->code, 1, $error->file, $error->line); | 
 |  |  |             $e = new ErrorException($error->message, $error->code, 1, | 
 |  |  |                   $error->file, $error->line); | 
 |  |  |             switch ($error->level) { | 
 |  |  |                case LIBXML_ERR_ERROR: | 
 |  |  |                   throw new Exception('Fatal error during XML parsing', 0, $e); | 
 |  |  |                   break; | 
 |  |  |                case LIBXML_ERR_FATAL: | 
 |  |  |                   throw new Exception('Fatal error during XML parsing', 0, $e); | 
 |  |  |                   throw new Exception('Fatal error during XML parsing', | 
 |  |  |                         0, $e); | 
 |  |  |                   break; | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       catch(Exception $e) { | 
 |  |  |          throw new JasigException('Authentication error: CAS server response invalid - parse error', 0, $e); | 
 |  |  |          throw new JasigException('Authentication error: CAS server' | 
 |  |  |                .' response invalid - parse error', 0, $e); | 
 |  |  |       } finally { | 
 |  |  |          libxml_clear_errors(); | 
 |  |  |          libxml_disable_entity_loader($xmlEntityLoader); | 
 |  |  | 
 |  |  |       if($failure->length > 0) { | 
 |  |  |          $failure = $failure->item(0); | 
 |  |  |          if(!($failure instanceof DOMElement)) { | 
 |  |  |             throw new JasigException('Authentication error: CAS server response invalid - authenticationFailure'); | 
 |  |  |             throw new JasigException('Authentication error: CAS server' | 
 |  |  |                   .' response invalid - authenticationFailure'); | 
 |  |  |          } | 
 |  |  |          throw new JasigAuthException('Authentication error: '.$failure->textContent); | 
 |  |  |          throw new JasigAuthException('Authentication error: ' | 
 |  |  |                .$failure->textContent); | 
 |  |  |       } elseif($success->length > 0) { | 
 |  |  |          $success = $success->item(0); | 
 |  |  |          if(!($success instanceof DOMElement)) { | 
 |  |  |             throw new JasigException('Authentication error: CAS server response invalid - authenticationSuccess'); | 
 |  |  |             throw new JasigException('Authentication error: CAS server' | 
 |  |  |                   .' response invalid - authenticationSuccess'); | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $user = $success->getElementsByTagName('user'); | 
 |  |  |          if($user->length == 0) { | 
 |  |  |             throw new JasigException('Authentication error: CAS server response invalid - user'); | 
 |  |  |             throw new JasigException('Authentication error: CAS server' | 
 |  |  |                   .' response invalid - user'); | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $user = trim($user->item(0)->textContent); | 
 |  |  |          if(strlen($user)<1) { | 
 |  |  |             throw new JasigException('Authentication error: CAS server response invalid - user value'); | 
 |  |  |             throw new JasigException('Authentication error: CAS server' | 
 |  |  |                   .' response invalid - user value'); | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $jusr = new JasigUser(); | 
 |  |  | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          throw new JasigException('Authentication error: CAS server response invalid - required tag not found'); | 
 |  |  |          throw new JasigException('Authentication error: CAS server' | 
 |  |  |                .' response invalid - required tag not found'); | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | } |