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() {
|
function handle_post() {
|
||||||
|
|
||||||
$jabber = $this->trimmed('jabber');
|
$jabber = jabber_normalize_jid($this->trimmed('jabber'));
|
||||||
$jabbernotify = $this->boolean('jabbernotify');
|
$jabbernotify = $this->boolean('jabbernotify');
|
||||||
$updatefrompresence = $this->boolean('updatefrompresence');
|
$updatefrompresence = $this->boolean('updatefrompresence');
|
||||||
|
|
||||||
if (!jabber_validate_jid($jabber)) {
|
if (!jabber_valid_base_jid($jabber)) {
|
||||||
$this->show_form(_('Not a valid Jabber ID'));
|
$this->show_form(_('Not a valid Jabber ID'));
|
||||||
return;
|
return;
|
||||||
} else if ($this->jabber_exists($jabber)) {
|
} 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');
|
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) {
|
function common_hidden($id, $value) {
|
||||||
common_element('input', array('name' => $id,
|
common_element('input', array('name' => $id,
|
||||||
'type' => 'hidden',
|
'type' => 'hidden',
|
||||||
|
|
|
@ -51,14 +51,6 @@ class XMPPDaemon {
|
||||||
return !$this->conn->disconnected;
|
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() {
|
function handle() {
|
||||||
while(!$this->conn->disconnected) {
|
while(!$this->conn->disconnected) {
|
||||||
$payloads = $this->conn->processUntil(array('message', 'presence',
|
$payloads = $this->conn->processUntil(array('message', 'presence',
|
||||||
|
@ -87,7 +79,7 @@ class XMPPDaemon {
|
||||||
if (strlen($pl['body']) == 0) {
|
if (strlen($pl['body']) == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$from = $this->normalize_jid($pl['from']);
|
$from = jabber_normalize_jid($pl['from']);
|
||||||
$user = User::staticGet('jabber', $from);
|
$user = User::staticGet('jabber', $from);
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
||||||
|
@ -162,7 +154,7 @@ class XMPPDaemon {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_presence(&$pl) {
|
function handle_presence(&$pl) {
|
||||||
$from = $this->normalize_jid($pl['from']);
|
$from = jabber_normalize_jid($pl['from']);
|
||||||
$user = User::staticGet('jabber', $from);
|
$user = User::staticGet('jabber', $from);
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
$this->log(LOG_WARNING, 'Message from unknown user ' . $from);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user