Aleksander Machniak
2016-05-22 0344b168276f80189e2254c75a762aff5b517b6b
program/include/rcmail.php
@@ -60,6 +60,7 @@
    const ERROR_INVALID_REQUEST  = 1;
    const ERROR_INVALID_HOST     = 2;
    const ERROR_COOKIES_DISABLED = 3;
    const ERROR_RATE_LIMIT       = 4;
    /**
@@ -602,12 +603,22 @@
        // user already registered -> overwrite username
        if ($user = rcube_user::query($username, $host)) {
            $username = $user->data['username'];
            // Brute-force prevention
            if ($user->is_locked()) {
                $this->login_error = self::ERROR_RATE_LIMIT;
                return false;
            }
        }
        $storage = $this->get_storage();
        // try to log in
        if (!$storage->connect($host, $username, $password, $port, $ssl)) {
            if ($user) {
                $user->failed_login();
            }
            // Wait a second to slow down brute-force attacks (#1490549)
            sleep(1);
            return false;
@@ -829,6 +840,8 @@
            // this need to be full url to make redirects work
            $absolute = true;
        }
        else if ($secure && ($token = $this->get_request_token()))
            $url .= $delm . '_token=' . urlencode($token);
        if ($absolute || $full) {
            // add base path to this Roundcube installation
@@ -2158,7 +2171,7 @@
    /**
     * Returns supported font-family specifications
     *
     * @param string $font  Font name
     * @param string $font Font name
     *
     * @param string|array Font-family specification array or string (if $font is used)
     */
@@ -2190,8 +2203,8 @@
    /**
     * Create a human readable string for a number of bytes
     *
     * @param int    Number of bytes
     * @param string Size unit
     * @param int    $bytes Number of bytes
     * @param string &$unit Size unit
     *
     * @return string Byte string
     */
@@ -2222,7 +2235,7 @@
    /**
     * Returns real size (calculated) of the message part
     *
     * @param rcube_message_part  Message part
     * @param rcube_message_part $part Message part
     *
     * @return string Part size (and unit)
     */
@@ -2232,12 +2245,12 @@
            $size = $this->show_bytes((int)$part->d_parameters['size']);
        }
        else {
          $size = $part->size;
          if ($part->encoding == 'base64') {
            $size = $size / 1.33;
          }
            $size = $part->size;
            if ($part->encoding == 'base64') {
                $size = $size / 1.33;
            }
          $size = '~' . $this->show_bytes($size);
            $size = '~' . $this->show_bytes($size);
        }
        return $size;
@@ -2306,6 +2319,8 @@
     * Get resource file content (with assets_dir support)
     *
     * @param string $name File name
     *
     * @return string File content
     */
    public function get_resource_content($name)
    {