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)) {
--- /dev/null
+<?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);
+}
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',
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',
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);
}
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);