public function __construct($login, $password, $security = SECURITY_NONE, $port = 5222, $host = '') { // Can we use Jabber at all? // Note: Maybe replace with SimpleXML in the future if (!extension_loaded('xml')) { $this->log('Error: No XML functions available, Jabber functions can not operate.'); return false; } //bug in php 5.2.1 renders this stuff more or less useless. if (version_compare(phpversion(), '5.2.1', '>=') && version_compare(phpversion(), '5.2.3RC2', '<') && $security != SECURITY_NONE) { $this->log('Error: PHP ' . phpversion() . ' + SSL is incompatible with jabber, see http://bugs.php.net/41236'); return false; } if (!Jabber::check_jid($login)) { $this->log('Error: Jabber ID is not valid: ' . $login); return false; } // Extract data from user@server.org list($username, $server) = explode('@', $login); // Decide whether or not to use encryption if ($security == SECURITY_SSL && !Jabber::can_use_ssl()) { $this->log('Warning: SSL encryption is not supported (openssl required). Falling back to no encryption.'); $security = SECURITY_NONE; } if ($security == SECURITY_TLS && !Jabber::can_use_tls()) { $this->log('Warning: TLS encryption is not supported (openssl and stream_socket_enable_crypto() required). Falling back to no encryption.'); $security = SECURITY_NONE; } $this->session['security'] = $security; $this->server = $server; $this->user = $username; $this->password = $password; if ($this->open_socket($host != '' ? $host : $server, $port, $security == SECURITY_SSL)) { $this->send("<?xml version='1.0' encoding='UTF-8' ?" . ">\n"); $this->send("<stream:stream to='{$server}' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\n"); } else { return false; } // Now we listen what the server has to say...and give appropriate responses $this->response($this->listen()); }
Flyspray::show_error(L('registererror')); break; } if (Post::val('email_address') != Post::val('verify_email_address')) { Flyspray::show_error(L('emailverificationwrong')); break; } $email = strtolower(Post::val('email_address')); $jabber_id = strtolower(Post::val('jabber_id')); //email is mandatory if (!$email || !Flyspray::check_email($email)) { Flyspray::show_error(L('novalidemail')); break; } //jabber_id is optional if ($jabber_id && !Jabber::check_jid($jabber_id)) { Flyspray::show_error(L('novalidjabber')); break; } $user_name = Backend::clean_username(Post::val('user_name')); // Limit length $real_name = substr(trim(Post::val('real_name')), 0, 100); // Remove doubled up spaces and control chars $real_name = preg_replace('![\\x00-\\x1f\\s]+!u', ' ', $real_name); if (!$user_name || empty($user_name) || !$real_name) { Flyspray::show_error(L('entervalidusername')); break; } // Delete registration codes older than 24 hours $yesterday = time() - 86400; $db->Query('DELETE FROM {registrations} WHERE reg_time < ?', array($yesterday));
function action_sendcode() { global $user, $db, $fs, $conf, $baseurl; if (!Post::val('user_name') || !Post::val('real_name') || !Post::val('email_address')) { // If the form wasn't filled out correctly, show an error return array(ERROR_RECOVER, L('registererror')); } $email = Post::val('email_address'); $jabber_id = Post::val('jabber_id'); //email is mandatory if (!$email || !Flyspray::check_email($email)) { return array(ERROR_RECOVER, L('novalidemail')); } //jabber_id is optional if ($jabber_id && !Jabber::check_jid($jabber_id)) { return array(ERROR_RECOVER, L('novalidjabber')); } $user_name = Backend::clean_username(Post::val('user_name')); // Limit lengths $real_name = substr(trim(Post::val('real_name')), 0, 100); // Remove doubled up spaces and control chars $real_name = preg_replace('![\\x00-\\x1f\\s]+!u', ' ', $real_name); if (!$user_name || !$real_name) { return array(ERROR_RECOVER, L('entervalidusername')); } // Delete registration codes older than 24 hours $yesterday = time() - 86400; $db->x->execParam('DELETE FROM {registrations} WHERE reg_time < ?', $yesterday); $taken = $db->x->getRow('SELECT u.user_id FROM {users} u, {registrations} r WHERE u.user_name = ? OR r.user_name = ?', null, array($user_name, $user_name)); if ($taken) { return array(ERROR_RECOVER, L('usernametaken')); } $taken = $db->x->getRow("SELECT user_id\n FROM {users}\n WHERE jabber_id = ? AND jabber_id != NULL\n OR email_address = ? AND email_address != NULL", null, array($jabber_id, $email)); if ($taken) { return array(ERROR_RECOVER, L('emailtaken')); } if ($fs->prefs['use_recaptcha']) { $solution = new reCAPTCHA_Solution(); $solution->privatekey = $fs->prefs['recaptcha_priv_key']; $solution->challenge = Post::val('recaptcha_challenge_field'); $solution->response = Post::val('recaptcha_response_field'); $solution->remoteip = $_SERVER['REMOTE_ADDR']; if (!$solution->isValid()) { return array(ERROR_RECOVER, $solution->error_code); } } $magic_url = substr(md5(uniqid(rand(), true)), 0, 20); //send the email first. if (Notifications::send(Post::val('email_address'), ADDRESS_EMAIL, NOTIFY_CONFIRMATION, array($baseurl, $magic_url, $user_name))) { //email sent succefully, now update the database. $reg_values = array('reg_time' => time(), 'user_name' => $user_name, 'real_name' => $real_name, 'email_address' => Post::val('email_address'), 'jabber_id' => Post::val('jabber_id'), 'notify_type' => Post::num('notify_type'), 'magic_url' => $magic_url, 'time_zone' => Post::num('time_zone')); // Insert everything into the database $query = $db->x->autoExecute('{registrations}', $reg_values); if (!PEAR::isError($query)) { return array(SUBMIT_OK, L('codesent'), $baseurl); } } else { return array(ERROR_INPUT, L('codenotsent')); } }