/[drupal]/contributions/modules/xmpp_server/xmpp_handler/xmpp_handler.module
ViewVC logotype

Diff of /contributions/modules/xmpp_server/xmpp_handler/xmpp_handler.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.4, Fri Sep 26 00:45:43 2008 UTC revision 1.5, Fri Sep 26 05:44:10 2008 UTC
# Line 44  function xmpp_handler_xmpp_server_protoc Line 44  function xmpp_handler_xmpp_server_protoc
44      $reqd->tag = 'required';      $reqd->tag = 'required';
45      $tls->children[] = $reqd;      $tls->children[] = $reqd;
46    
47      if (!$client->ssl && variable_get('xmpp_server_ssl_enabled', true)) {      if (!$client->ssl && variable_get('xmpp_server_ssl_enabled', false)) {
48        $features->children[] = $tls;        $features->children[] = $tls;
49      }      }
50    
51        $sess = xmpp_server_get_session($client);
52        if (!$sess['authed']) {
53          $mechanisms = new XmlNode();
54          $mechanisms->tag = 'mechanisms';
55          $mechanisms->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-sasl';
56    
57          $plain = new XmlNode();
58          $plain->tag = 'mechanism';
59          $plain->data = 'PLAIN';
60    
61          $mechanisms->children[] = $plain;
62          $features->children[] = $mechanisms;
63        }
64        else {
65          $bind = new XmlNode();
66          $bind->tag = 'bind';
67          $bind->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-bind';
68    
69          $session = new XmlNode();
70          $session->tag = 'session';
71          $session->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-session';
72    
73          $features->children[] = $bind;
74          $features->children[] = $session;
75        }
76    
77      //Return them as an array to send both.      //Return them as an array to send both.
78      return array($reply, $features);      return array($reply, $features);
79    }    }
# Line 73  function xmpp_handler_xmpp_server_xml() Line 99  function xmpp_handler_xmpp_server_xml()
99      'bound' => TRUE,      'bound' => TRUE,
100      'tag' => 'message',      'tag' => 'message',
101      'options' => array(      'options' => array(
102        'to' => '+',        'to' => '*@*',
103      ),      ),
104    );    );
105    
# Line 81  function xmpp_handler_xmpp_server_xml() Line 107  function xmpp_handler_xmpp_server_xml()
107      'authed' => TRUE,      'authed' => TRUE,
108      'bound' => TRUE,      'bound' => TRUE,
109      'permissions' => array(      'permissions' => array(
110        'administer xmpp server',        'send xmpp broadcasts',
111      ),      ),
112    
113      'tag' => 'message',      'tag' => 'message',
# Line 89  function xmpp_handler_xmpp_server_xml() Line 115  function xmpp_handler_xmpp_server_xml()
115        'to' => variable_get('xmpp_server_host', $_SERVER['HTTP_HOST']) . '/broadcast',        'to' => variable_get('xmpp_server_host', $_SERVER['HTTP_HOST']) . '/broadcast',
116        'type' => 'chat',        'type' => 'chat',
117      ),      ),
118      /*'children' => array(      'children' => array(
119        'body' => array(        'body' => array(
120          'data' => '+',          'data' => '+',
121        ),        ),
122      ),*/      ),
123    );    );
124      echo variable_get('xmpp_server_host', $_SERVER['HTTP_HOST']) . '/broadcast';
125    
126    $funcs['xmpp_handler_router_iq'] = array(    $funcs['xmpp_handler_router_iq'] = array(
127      'authed' => TRUE,      'authed' => TRUE,
# Line 121  function xmpp_handler_xmpp_server_xml() Line 148  function xmpp_handler_xmpp_server_xml()
148      'tag' => 'presence',      'tag' => 'presence',
149      'options' => array(      'options' => array(
150        'type' => '?unavailable',        'type' => '?unavailable',
151        'to' => '!',        'to' => '!*',
     ),  
   );  
   
   $funcs['xmpp_handler_router_directed_presence'] = array(  
     'authed' => TRUE,  
     'bound' => TRUE,  
     'tag' => 'presence',  
     'options' => array(  
       'type' => '?unavailable',  
       'to' => '+',  
152      ),      ),
153    );    );
154    
# Line 140  function xmpp_handler_xmpp_server_xml() Line 157  function xmpp_handler_xmpp_server_xml()
157      'bound' => TRUE,      'bound' => TRUE,
158      'tag' => 'iq',      'tag' => 'iq',
159      'options' => array(      'options' => array(
160        'to' => '+',        'to' => '*@*',
161      ),      ),
162    );    );
163    
# Line 204  function xmpp_handler_xmpp_server_xml() Line 221  function xmpp_handler_xmpp_server_xml()
221        'xmlns' => 'urn:ietf:params:xml:ns:xmpp-tls',        'xmlns' => 'urn:ietf:params:xml:ns:xmpp-tls',
222      ),      ),
223    );    );
224    
225      $funcs['xmpp_handler_sasl_auth'] = array(
226        'bound' => FALSE,
227        'authed' => FALSE,
228        'protocol' => 'jabber:client',
229        'tag' => 'auth',
230        'options' => array(
231          'xmlns' => 'urn:ietf:params:xml:ns:xmpp-sasl',
232        ),
233      );
234    
235      $funcs['xmpp_handler_bind'] = array(
236        'bound' => FALSE,
237        'authed' => TRUE,
238        'tag' => 'iq',
239        'options' => array(
240          'type' => 'set',
241        ),
242        'children' => array(
243          'bind' => array(
244            'options' => array(
245              'xmlns' => 'urn:ietf:params:xml:ns:xmpp-bind',
246            ),
247          ),
248        ),
249      );
250    
251      $funcs['xmpp_handler_session'] = array(
252        'authed' => TRUE,
253        'bound' => TRUE,
254        'tag' => 'iq',
255        'options' => array(
256          'type' => 'set',
257        ),
258        'children' => array(
259          'session' => array(
260            'options' => array(
261              'xmlns' => 'urn:ietf:params:xml:ns:xmpp-session',
262            ),
263          ),
264        ),
265      );
266    
267    return $funcs;    return $funcs;
268  }  }
# Line 227  function xmpp_handler_stream_start($clie Line 286  function xmpp_handler_stream_start($clie
286  function xmpp_handler_router_message($client, $node) {  function xmpp_handler_router_message($client, $node) {
287    $session = xmpp_server_get_session($client);    $session = xmpp_server_get_session($client);
288    $node->options['from'] = xmpp_serialize_jid($session['jid']);    $node->options['from'] = xmpp_serialize_jid($session['jid']);
289      $node->options['type'] = 'headline';
290    
291    module_invoke_all('xmpp_router_message', $client, $node);    module_invoke_all('xmpp_router_message', $client, $node);
292    
# Line 355  function xmpp_handler_tls($client, $node Line 415  function xmpp_handler_tls($client, $node
415    }    }
416  }  }
417    
418    function xmpp_handler_sasl_auth($client, $node) {
419      $data = base64_decode($node->data);
420      $data = explode("\000", $data);
421      if (!$data[0]) {
422        $data[0] = $data[1];
423      }
424    
425      $name = $data[0];
426      $pass = $data[2];
427    
428      $resp = new XmlNode();
429    
430      $user = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1));
431      if ($user) {
432        $session = xmpp_server_get_session($client);
433        $session['authed'] = TRUE;
434    
435        $session['jid']['name'] = $user->name;
436        $session['jid']['domain'] = variable_get('xmpp_server_host', $_SERVER['HTTP_HOST']);
437    
438        $resp->tag = 'success';
439        $resp->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-sasl';
440    
441        xmpp_server_save_session($session);
442      }
443      else {
444        $resp->tag = 'failure';
445        $resp->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-sasl';
446    
447        $reason->tag = 'not-authorized';
448        $resp->children[] = $reason;
449      }
450      return $resp;
451    }
452    
453    function xmpp_handler_bind($client, $node) {
454      $bind = get_object_list($node->children, 'tag', 'bind');
455      $resource = get_object_list($node->children, 'tag', 'resource');
456    
457      if (empty($resource->data)) {
458        $resource = 'Home';
459      }
460      else {
461        $resource = $resource->data;
462      }
463    
464      $session = xmpp_server_get_session($client);
465      $session['jid']['resource'] = $resource;
466      $session['bound'] = TRUE;
467      xmpp_server_save_session($session);
468    
469      $iq = new XmlNode();
470      $iq->tag = 'iq';
471      $iq->options = array(
472        'to' => xmpp_serialize_jid($session['jid']),
473        'type' => 'result',
474        'id' => $node->options['id'],
475      );
476    
477      $bind = new XmlNode();
478      $bind->tag = 'bind';
479      $bind->options['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-bind';
480    
481      $jid = new XmlNode();
482      $jid->tag = 'jid';
483      $jid->data = xmpp_serialize_jid($session['jid']);
484    
485      $bind->children[] = $jid;
486      $iq->children[] = $bind;
487    
488      module_invoke_all('xmpp_server_client_bind', $client);
489      return $iq;
490    }
491    
492    function xmpp_handler_session($client, $node) {
493        $iq = new XmlNode();
494        $iq->tag = 'iq';
495        $iq->options['type'] = 'result';
496        $iq->options['id'] = $node->options['id'];
497    
498        return $iq;
499    }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.2