diff options
27 files changed, 13 insertions, 12 deletions
@@ -1,6 +1,7 @@  CHANGELOG Roundcube Webmail  =========================== +- Stateless request tokens. No keep-alive necessary on login page (#1487829)  - PEAR::Net_SMTP 1.5.1  - Force names of unique constraints in PostgreSQL DDL  - Add code for prevention from IMAP connection hangs when server closes socket unexpectedly @@ -182,7 +182,7 @@ else {    // check client X-header to verify request origin    if ($OUTPUT->ajax_call) { -    if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token()) { +    if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token() && !$RCMAIL->config->get('devel_mode')) {        header('HTTP/1.1 404 Not Found');        die("Invalid Request");      } diff --git a/program/include/rcmail.php b/program/include/rcmail.php index e1dc22d07..8b4383e10 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1105,12 +1105,9 @@ class rcmail     */    public function get_request_token()    { -    $key = $this->task; - -    if (!$_SESSION['request_tokens'][$key]) -      $_SESSION['request_tokens'][$key] = md5(uniqid($key . mt_rand(), true)); - -    return $_SESSION['request_tokens'][$key]; +    $sess_id = $_COOKIE[ini_get('session.name')]; +    if (!$sess_id) $sess_id = session_id(); +    return md5('RT' . $this->task . $this->config->get('des_key') . $sess_id);    } @@ -1123,7 +1120,8 @@ class rcmail    public function check_request($mode = RCUBE_INPUT_POST)    {      $token = get_input_value('_token', $mode); -    return !empty($token) && $_SESSION['request_tokens'][$this->task] == $token; +    $sess_id = $_COOKIE[ini_get('session.name')]; +    return !empty($sess_id) && $token == $this->get_request_token();    } diff --git a/program/include/rcube_browser.php b/program/include/rcube_browser.php index d080c605d..d74ec708a 100644 --- a/program/include/rcube_browser.php +++ b/program/include/rcube_browser.php @@ -42,7 +42,7 @@ class rcube_browser          $this->ns4 = strstr($HTTP_USER_AGENT, 'mozilla/4') && !strstr($HTTP_USER_AGENT, 'msie');          $this->ns  = ($this->ns4 || strstr($HTTP_USER_AGENT, 'netscape'));          $this->ie  = !$this->opera && strstr($HTTP_USER_AGENT, 'compatible; msie'); -        $this->mz  = strstr($HTTP_USER_AGENT, 'mozilla/5'); +        $this->mz  = !$this->ie && strstr($HTTP_USER_AGENT, 'mozilla/5');          $this->chrome = strstr($HTTP_USER_AGENT, 'chrome');          $this->khtml = strstr($HTTP_USER_AGENT, 'khtml');          $this->safari = !$this->chrome && ($this->khtml || strstr($HTTP_USER_AGENT, 'safari')); diff --git a/program/localization/index.inc b/program/localization/index.inc index 5f33792ca..9925a87a5 100644 --- a/program/localization/index.inc +++ b/program/localization/index.inc @@ -42,8 +42,8 @@ $rcube_languages = array(    'cs_CZ' => 'Czech (Česky)',    'da_DK' => 'Danish (Dansk)',    'fa_AF' => 'Dari (ﻯﺭﺩ)', -  'de_DE' => 'Deutsch (Deutsch)', -  'de_CH' => 'Deutsch (Schweiz)', +  'de_DE' => 'German (Deutsch)', +  'de_CH' => 'German (Schweiz)',    'nl_NL' => 'Dutch (Nederlands)',    'en_GB' => 'English (GB)',    'en_US' => 'English (US)', diff --git a/program/steps/utils/spell_googie.inc b/program/steps/utils/spell_googie.inc index 4c98dd697..269d792dd 100644 --- a/program/steps/utils/spell_googie.inc +++ b/program/steps/utils/spell_googie.inc @@ -41,6 +41,8 @@ if (!empty($CONFIG['spellcheck_uri']))    }  $data = file_get_contents('php://input'); +// Google has some problem with spaces, use \n instead +$data = str_replace(' ', "\n", $data);  $store = "";  if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) diff --git a/program/steps/utils/spell_html_googie.inc b/program/steps/utils/spell_html_googie.inc index 1a4fbd48d..df18c036b 100644 --- a/program/steps/utils/spell_html_googie.inc +++ b/program/steps/utils/spell_html_googie.inc @@ -80,7 +80,7 @@ if (!empty($CONFIG['spellcheck_uri']))    $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $lang;    } -$wordstr = implode(' ', (array) $data); +$wordstr = implode("\n", (array) $data);  $data = '<?xml version="1.0" encoding="utf-8" ?>'      .'<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">'      .'<text>' . $wordstr . '</text>' diff --git a/skins/default/images/abook_toolbar.png b/skins/default/images/abook_toolbar.png Binary files differindex cb7ae051f..c761fbc9d 100644 --- a/skins/default/images/abook_toolbar.png +++ b/skins/default/images/abook_toolbar.png diff --git a/skins/default/images/buttons/bg.gif b/skins/default/images/buttons/bg.gif Binary files differindex e2191c910..be39f4a35 100644 --- a/skins/default/images/buttons/bg.gif +++ b/skins/default/images/buttons/bg.gif diff --git a/skins/default/images/dbutton.png b/skins/default/images/dbutton.png Binary files differindex 58a124594..7a85e3c5d 100644 --- a/skins/default/images/dbutton.png +++ b/skins/default/images/dbutton.png diff --git a/skins/default/images/dimple.png b/skins/default/images/dimple.png Binary files differindex d96a5aded..4de496c87 100644 --- a/skins/default/images/dimple.png +++ b/skins/default/images/dimple.png diff --git a/skins/default/images/display/icons.png b/skins/default/images/display/icons.png Binary files differindex 2ab7d43af..7bf4278bf 100644 --- a/skins/default/images/display/icons.png +++ b/skins/default/images/display/icons.png diff --git a/skins/default/images/icons/expanded.png b/skins/default/images/icons/expanded.png Binary files differindex 1db079b79..87e77a477 100644 --- a/skins/default/images/icons/expanded.png +++ b/skins/default/images/icons/expanded.png diff --git a/skins/default/images/icons/glass.png b/skins/default/images/icons/glass.png Binary files differindex 41dbb3a37..eb1b1dc74 100644 --- a/skins/default/images/icons/glass.png +++ b/skins/default/images/icons/glass.png diff --git a/skins/default/images/icons/glass_roll.png b/skins/default/images/icons/glass_roll.png Binary files differindex a6d975a5a..b11b59854 100644 --- a/skins/default/images/icons/glass_roll.png +++ b/skins/default/images/icons/glass_roll.png diff --git a/skins/default/images/icons/groupactions.png b/skins/default/images/icons/groupactions.png Binary files differindex 2e9c5f101..9e39bca2e 100644 --- a/skins/default/images/icons/groupactions.png +++ b/skins/default/images/icons/groupactions.png diff --git a/skins/default/images/listheader.gif b/skins/default/images/listheader.gif Binary files differindex 2f5c7f862..ff28d95ef 100644 --- a/skins/default/images/listheader.gif +++ b/skins/default/images/listheader.gif diff --git a/skins/default/images/mail_footer.png b/skins/default/images/mail_footer.png Binary files differindex e0f82b578..e2f24b28c 100644 --- a/skins/default/images/mail_footer.png +++ b/skins/default/images/mail_footer.png diff --git a/skins/default/images/mail_toolbar.png b/skins/default/images/mail_toolbar.png Binary files differindex 3ee0ce6d8..6ccc9bd9e 100644 --- a/skins/default/images/mail_toolbar.png +++ b/skins/default/images/mail_toolbar.png diff --git a/skins/default/images/messageicons.png b/skins/default/images/messageicons.png Binary files differindex 5afb4cbf8..3dd37606e 100644 --- a/skins/default/images/messageicons.png +++ b/skins/default/images/messageicons.png diff --git a/skins/default/images/pagenav.gif b/skins/default/images/pagenav.gif Binary files differindex 92a73a440..a4644a4e4 100644 --- a/skins/default/images/pagenav.gif +++ b/skins/default/images/pagenav.gif diff --git a/skins/default/images/searchfield.gif b/skins/default/images/searchfield.gif Binary files differindex 756a17e47..969f277b3 100644 --- a/skins/default/images/searchfield.gif +++ b/skins/default/images/searchfield.gif diff --git a/skins/default/images/tabs-left.gif b/skins/default/images/tabs-left.gif Binary files differindex 3465d1fd1..c1bf45aa8 100644 --- a/skins/default/images/tabs-left.gif +++ b/skins/default/images/tabs-left.gif diff --git a/skins/default/images/tabs-right.gif b/skins/default/images/tabs-right.gif Binary files differindex 252463c9a..9eba9a342 100644 --- a/skins/default/images/tabs-right.gif +++ b/skins/default/images/tabs-right.gif diff --git a/skins/default/images/taskicons.gif b/skins/default/images/taskicons.gif Binary files differindex 53376c3d2..feaa9a14e 100644 --- a/skins/default/images/taskicons.gif +++ b/skins/default/images/taskicons.gif diff --git a/skins/default/images/taskicons.png b/skins/default/images/taskicons.png Binary files differindex a6ee706c8..feaa9a14e 100644 --- a/skins/default/images/taskicons.png +++ b/skins/default/images/taskicons.png diff --git a/skins/default/images/watermark.gif b/skins/default/images/watermark.gif Binary files differindex 7581802ae..d235d0306 100644 --- a/skins/default/images/watermark.gif +++ b/skins/default/images/watermark.gif  | 
