add jabber library and use it
darcs-hash:20080624001523-34904-8d0c052f12301d86aeb9107149b34f22c94da1c4.gz
This commit is contained in:
parent
ae40dfe842
commit
63dcbe1e6e
|
@ -61,11 +61,11 @@ class ImsettingsAction extends SettingsAction {
|
|||
|
||||
function handle_post() {
|
||||
|
||||
$jabber = $this->trimmed('jabber');
|
||||
$jabber = jabber_normalize_jid($this->trimmed('jabber'));
|
||||
$jabbernotify = $this->boolean('jabbernotify');
|
||||
$updatefrompresence = $this->boolean('updatefrompresence');
|
||||
|
||||
if (!jabber_validate_jid($jabber)) {
|
||||
if (!jabber_valid_base_jid($jabber)) {
|
||||
$this->show_form(_('Not a valid Jabber ID'));
|
||||
return;
|
||||
} else if ($this->jabber_exists($jabber)) {
|
||||
|
|
33
lib/jabber.php
Normal file
33
lib/jabber.php
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/*
|
||||
* Laconica - a distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, Controlez-Vous, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) { exit(1); }
|
||||
|
||||
function jabber_valid_base_jid($jid) {
|
||||
# Cheap but effective
|
||||
return Validate::email($jid);
|
||||
}
|
||||
|
||||
function jabber_normalize_jid($jid) {
|
||||
preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches);
|
||||
$node = $matches[1];
|
||||
$server = $matches[2];
|
||||
$resource = $matches[3];
|
||||
return strtolower($node.'@'.$server);
|
||||
}
|
19
lib/util.php
19
lib/util.php
|
@ -319,6 +319,25 @@ function common_input($id, $label, $value=NULL,$instructions=NULL) {
|
|||
common_element_end('p');
|
||||
}
|
||||
|
||||
function common_checkbox($id, $label, $value='true',
|
||||
$instructions=NULL)
|
||||
{
|
||||
common_element_start('p');
|
||||
$attrs = array('name' => $id,
|
||||
'type' => 'checkbox',
|
||||
'id' => $id,
|
||||
'value' => $value);
|
||||
if ($value) {
|
||||
$attrs['value'] = htmlspecialchars($value);
|
||||
}
|
||||
common_element('input', $attrs);
|
||||
common_element('label', array('for' => $id), $label);
|
||||
if ($instructions) {
|
||||
common_element('span', 'input_instructions', $instructions);
|
||||
}
|
||||
common_element_end('p');
|
||||
}
|
||||
|
||||
function common_hidden($id, $value) {
|
||||
common_element('input', array('name' => $id,
|
||||
'type' => 'hidden',
|
||||
|
|
|
@ -51,14 +51,6 @@ class XMPPDaemon {
|
|||
return !$this->conn->disconnected;
|
||||
}
|
||||
|
||||
function normalize_jid($jid) {
|
||||
preg_match("/(?:([^\@]+)\@)?([^\/]+)(?:\/(.*))?$/", $jid, $matches);
|
||||
$node = $matches[1];
|
||||
$server = $matches[2];
|
||||
$resource = $matches[3];
|
||||
return strtolower($node.'@'.$server);
|
||||
}
|
||||
|
||||
function handle() {
|
||||
while(!$this->conn->disconnected) {
|
||||
$payloads = $this->conn->processUntil(array('message', 'presence',
|
||||
|
@ -87,7 +79,7 @@ class XMPPDaemon {
|
|||
if (strlen($pl['body']) == 0) {
|
||||
return;
|
||||
}
|
||||
$from = $this->normalize_jid($pl['from']);
|
||||
$from = jabber_normalize_jid($pl['from']);
|
||||
$user = User::staticGet('jabber', $from);
|
||||
if (!$user) {
|
||||
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
||||
|
@ -162,7 +154,7 @@ class XMPPDaemon {
|
|||
}
|
||||
|
||||
function handle_presence(&$pl) {
|
||||
$from = $this->normalize_jid($pl['from']);
|
||||
$from = jabber_normalize_jid($pl['from']);
|
||||
$user = User::staticGet('jabber', $from);
|
||||
if (!$user) {
|
||||
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
||||
|
|
Loading…
Reference in New Issue
Block a user