Changeset 719a257 in github
- Timestamp:
- Aug 10, 2007 4:27:40 AM (6 years ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
- Children:
- 31d9efd
- Parents:
- 4b9efbb
- Files:
-
- 10 edited
-
CHANGELOG (modified) (2 diffs)
-
index.php (modified) (3 diffs)
-
program/include/main.inc (modified) (1 diff)
-
program/include/rcmail_template.inc (modified) (1 diff)
-
program/include/rcube_imap.inc (modified) (4 diffs)
-
program/js/app.js (modified) (4 diffs)
-
program/steps/mail/func.inc (modified) (5 diffs)
-
program/steps/mail/get.inc (modified) (2 diffs)
-
program/steps/mail/show.inc (modified) (1 diff)
-
program/steps/settings/manage_folders.inc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
CHANGELOG
r4b9efbb r719a257 1 1 CHANGELOG RoundCube Webmail 2 2 --------------------------- 3 4 2007/08/09 (thomasb) 5 ---------- 6 - Identify mailboxes case-sensitive 7 - Sort mailbox list case-insensitive (closes #1484338) 8 - Fix display of multipart messages from Apple Mail (closes #1484027) 9 - Protect AJAX request from being fetched by a foreign site (XSS) 10 - Make autocomplete for loginform configurable by the skin template 11 3 12 4 13 2007/07/09 (richs) … … 13 22 - Increased "mailboxcontrols" mail.css width from 160 to 170px to fix non-english languages 14 23 - Fixed empty-message sending with TinyMCE plain-text mode, or if it's not installed 24 15 25 16 26 2007/07/03 (thomasb) -
index.php
r6d969b4 r719a257 3 3 +-----------------------------------------------------------------------+ 4 4 | RoundCube Webmail IMAP Client | 5 | Version 0.1-20070 518|5 | Version 0.1-20070809 | 6 6 | | 7 7 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | … … 42 42 43 43 // application constants 44 define('RCMAIL_VERSION', '0.1-20070 517');44 define('RCMAIL_VERSION', '0.1-20070809'); 45 45 define('RCMAIL_CHARSET', 'UTF-8'); 46 46 define('JS_OBJECT_NAME', 'rcmail'); … … 218 218 } 219 219 220 221 // check client X-header to verify request origin 222 if ($OUTPUT->ajax_call) 223 { 224 $hdrs = getallheaders(); 225 if (empty($hdrs['X-RoundCube-Referer']) && empty($CONFIG['devel_mode'])) 226 { 227 header('HTTP/1.1 404 Not Found'); 228 die("Invalid Request"); 229 } 230 } 220 231 221 232 -
program/include/main.inc
r6d969b4 r719a257 235 235 if (!empty($CONFIG['session_lifetime']) && isset($SESS_CHANGED) && $SESS_CHANGED + $CONFIG['session_lifetime']*60 < time()) 236 236 $valid = false; 237 238 if (!$valid) 239 write_log('timeouts', $_SESSION + array('SESS_CLIENT_IP' => $SESS_CLIENT_IP, 'SESS_CHANGED' => $SESS_CHANGED, 'COOKIE' => $_COOKIE)); 237 240 238 241 return $valid; -
program/include/rcmail_template.inc
r6d969b4 r719a257 746 746 $labels['host'] = rcube_label('server'); 747 747 748 $input_user = new textfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30 , 'autocomplete' => 'off'));749 $input_pass = new passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd', 'size' => 30) );748 $input_user = new textfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30) + $attrib); 749 $input_pass = new passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd', 'size' => 30) + $attrib); 750 750 $input_action = new hiddenfield(array('name' => '_action', 'value' => 'login')); 751 751 -
program/include/rcube_imap.inc
r6d969b4 r719a257 1375 1375 if (!in_array($to_mbox, $this->_list_mailboxes())) 1376 1376 { 1377 if (in_array( strtolower($to_mbox), $this->default_folders))1377 if (in_array($to_mbox, $this->default_folders)) 1378 1378 $this->create_mailbox($to_mbox, TRUE); 1379 1379 else … … 1659 1659 $a_mailbox_cache = $this->get_cache('mailboxes'); 1660 1660 1661 if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array _nocase($abs_name, $a_mailbox_cache)))1661 if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) 1662 1662 $result = iil_C_CreateFolder($this->conn, $abs_name); 1663 1663 1664 1664 // try to subscribe it 1665 if ($ subscribe)1665 if ($result && $subscribe) 1666 1666 $this->subscribe($name); 1667 1667 … … 1769 1769 { 1770 1770 $abs_name = $this->_mod_mailbox($folder); 1771 if (!in_array_nocase($abs_name, $a_subscribed)) 1772 { 1773 if (!in_array_nocase($abs_name, $a_folders)) 1774 $this->create_mailbox($folder, TRUE); 1775 else 1776 $this->subscribe($folder); 1777 } 1778 else if (!in_array_nocase($abs_name, $a_folders)) 1779 { 1780 $this->create_mailbox($folder, FALSE); 1781 } 1771 if (!in_array_nocase($abs_name, $a_folders)) 1772 $this->create_mailbox($folder, TRUE); 1773 else if (!in_array_nocase($abs_name, $a_subscribed)) 1774 $this->subscribe($folder); 1782 1775 } 1783 1776 } … … 2434 2427 } 2435 2428 2436 sort($a_out);2429 natcasesort($a_out); 2437 2430 ksort($a_defaults); 2438 2431 -
program/js/app.js
r4b9efbb r719a257 464 464 465 465 case 'logout': 466 this.goto_url('logout' );466 this.goto_url('logout', true); 467 467 break; 468 468 … … 3196 3196 this.redirect = function(url, lock) 3197 3197 { 3198 if (lock || lock == NULL)3198 if (lock || lock === null) 3199 3199 this.set_busy(true); 3200 3200 … … 3499 3499 } 3500 3500 3501 var ref = this;3501 var _ref = this; 3502 3502 this.url = url; 3503 3503 this.busy = true; 3504 3504 3505 this.xmlhttp.onreadystatechange = function(){ ref.xmlhttp_onreadystatechange(); };3505 this.xmlhttp.onreadystatechange = function(){ _ref.xmlhttp_onreadystatechange(); }; 3506 3506 this.xmlhttp.open('GET', url); 3507 this.xmlhttp.setRequestHeader('X-RoundCube-Referer', bw.get_cookie('sessid')); 3507 3508 this.xmlhttp.send(null); 3508 3509 }; … … 3538 3539 this.xmlhttp.open('POST', url, true); 3539 3540 this.xmlhttp.setRequestHeader('Content-Type', contentType); 3541 this.xmlhttp.setRequestHeader('X-RoundCube-Referer', bw.get_cookie('sessid')); 3540 3542 this.xmlhttp.send(req_body); 3541 3543 }; -
program/steps/mail/func.inc
r93be5b7 r719a257 647 647 foreach ($structure->parts as $p => $sub_part) 648 648 { 649 $rel_parts = $attachmnts = null; 649 650 $sub_ctype_primary = strtolower($sub_part->ctype_primary); 650 651 $sub_ctype_secondary = strtolower($sub_part->ctype_secondary); … … 657 658 else if ($sub_ctype_primary=='text' && $sub_ctype_secondary=='enriched') 658 659 $enriched_part = $p; 659 else if ($sub_ctype_primary=='multipart' && $sub_ctype_secondary=='related')660 else if ($sub_ctype_primary=='multipart' && ($sub_ctype_secondary=='related' || $sub_ctype_secondary=='mixed')) 660 661 $related_part = $p; 661 662 } 662 663 663 664 // parse related part (alternative part could be in here) 664 if ($related_part!==NULL && $prefer_html) 665 { 666 list($parts, $attachmnts) = rcmail_parse_message($structure->parts[$related_part], $arg, TRUE); 667 $a_return_parts = array_merge($a_return_parts, $parts); 665 if ($related_part!==NULL) 666 { 667 list($rel_parts, $attachmnts) = rcmail_parse_message($structure->parts[$related_part], $arg, TRUE); 668 668 $a_attachments = array_merge($a_attachments, $attachmnts); 669 } 670 671 // print html/plain part 669 } 670 671 // merge related parts if any 672 if ($rel_parts && $prefer_html && !$html_part) 673 $a_return_parts = array_merge($a_return_parts, $rel_parts); 674 675 // choose html/plain part to print 672 676 else if ($html_part!==NULL && $prefer_html) 673 677 $print_part = &$structure->parts[$html_part]; … … 684 688 } 685 689 // show plaintext warning 686 else if ($html_part!==NULL )690 else if ($html_part!==NULL && empty($a_return_parts)) 687 691 { 688 692 $c = new stdClass; … … 914 918 915 919 // list images after mail body 916 if (get_boolean($attrib['showimages']) && $ctype_primary=='multipart' && $ctype_secondary=='mixed' &&917 sizeof($MESSAGE['attachments']) && !strstr($message_body, '<html') && strlen($GET_URL))920 if (get_boolean($attrib['showimages']) && $ctype_primary=='multipart' && 921 !empty($MESSAGE['attachments']) && !strstr($message_body, '<html') && strlen($GET_URL)) 918 922 { 919 923 foreach ($MESSAGE['attachments'] as $attach_prop) … … 1240 1244 $ctype_primary = strtolower($part->ctype_primary); 1241 1245 1242 $attrib['src'] = './?'.str_replace('_frame=', ($ctype_primary=='text' ? '_show=' : '_preload='), $_SERVER['QUERY_STRING']);1246 $attrib['src'] = Q('./?'.str_replace('_frame=', ($ctype_primary=='text' ? '_show=' : '_preload='), $_SERVER['QUERY_STRING'])); 1243 1247 1244 1248 $attrib_str = create_attrib_string($attrib, array('id', 'class', 'style', 'src', 'width', 'height')); -
program/steps/mail/get.inc
r5cc4b13 r719a257 30 30 31 31 print "<html>\n<head>\n" . 32 '<meta http-equiv="refresh" content="0; url='. htmlspecialchars($url).'">' .32 '<meta http-equiv="refresh" content="0; url='.Q($url).'">' . 33 33 "\n</head>\n<body>" . 34 34 $message . … … 108 108 { 109 109 header(sprintf('Content-Disposition: %s; filename="%s";', 110 $ part->disposition ? $part->disposition : 'attachment',110 $_GET['_download'] ? 'attachment' : 'inline', 111 111 $part->filename ? $part->filename : "roundcube.$ctype_secondary")); 112 112 -
program/steps/mail/show.inc
rf115416 r719a257 49 49 if ((bool)get_input_value('_safe', RCUBE_INPUT_GET)) 50 50 send_nocacheing_headers(); 51 else 51 else if (empty($CONFIG['devel_mode'])) 52 52 send_modified_header($_SESSION['login_time'], $etag); 53 53 -
program/steps/settings/manage_folders.inc
r8d07583 r719a257 28 28 { 29 29 if ($mboxes = get_input_value('_mboxes', RCUBE_INPUT_POST)) 30 $IMAP->subscribe( array($mboxes));30 $IMAP->subscribe($mboxes); 31 31 32 32 if ($OUTPUT->ajax_call) … … 38 38 { 39 39 if ($mboxes = get_input_value('_mboxes', RCUBE_INPUT_POST)) 40 $IMAP->unsubscribe( array($mboxes));40 $IMAP->unsubscribe($mboxes); 41 41 42 42 if ($OUTPUT->ajax_call)
Note: See TracChangeset
for help on using the changeset viewer.
