コード例 #1
0
ファイル: class.jabber2.php プロジェクト: canneverbe/flyspray
 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());
 }
コード例 #2
0
ファイル: modify.inc.php プロジェクト: kandran/flyspray
     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));
コード例 #3
0
ファイル: register.php プロジェクト: negram/flyspray
 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'));
     }
 }