コード例 #1
0
ファイル: Authentication.php プロジェクト: flecointre/xmpp
 /**
  * Collect authentication machanisms.
  *
  * @param XMLEvent $event
  * @return void
  */
 public function collectMechanisms(XMLEvent $event)
 {
     if ($this->getConnection()->isReady() && false === $this->isAuthenticated()) {
         /* @var $element \DOMElement */
         list($element) = $event->getParameters();
         $this->blocking = true;
         if (false === $event->isStartTag()) {
             $this->mechanisms[] = strtolower($element->nodeValue);
         }
     }
 }
コード例 #2
0
 /**
  * Create exception from XMLEvent object.
  *
  * @param \Fabiang\Xmpp\Event\XMLEvent $event XMLEvent object
  * @return static
  */
 public static function createFromEvent(XMLEvent $event)
 {
     /* @var $element \DOMElement */
     list($element) = $event->getParameters();
     /* @var $first \DOMElement */
     $first = $element->firstChild;
     if (null !== $first && XML_ELEMENT_NODE === $first->nodeType) {
         $message = 'Stream Error: "' . $first->localName . '"';
     } else {
         $message = 'Generic stream error';
     }
     $exception = new static($message);
     $exception->setContent($element->ownerDocument->saveXML($element));
     return $exception;
 }
コード例 #3
0
ファイル: DigestMd5.php プロジェクト: Natolumin/observium
 /**
  * Challenge string received.
  *
  * @param XMLEvent $event XML event
  * @return void
  */
 public function challenge(XMLEvent $event)
 {
     if ($event->isEndTag()) {
         list($element) = $event->getParameters();
         $challenge = XML::base64Decode($element->nodeValue);
         $values = $this->parseCallenge($challenge);
         if (isset($values['nonce'])) {
             $send = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' . $this->response($values) . '</response>';
         } elseif (isset($values['rspauth'])) {
             $send = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>';
         } else {
             throw new AuthenticationErrorException("Error when receiving challenge: \"{$challenge}\"");
         }
         $this->getConnection()->send($send);
     }
 }