From 03fcc16896fdd31973ad21c67b33da6fe0b6b579 Mon Sep 17 00:00:00 2001 From: till <till@php.net> Date: Sat, 22 Mar 2008 09:02:00 -0400 Subject: [PATCH] * fixing warning reported in #1484851 --- index.php | 60 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 44 insertions(+), 16 deletions(-) diff --git a/index.php b/index.php index f62e9eb..642c07a 100644 --- a/index.php +++ b/index.php @@ -2,9 +2,9 @@ /* +-----------------------------------------------------------------------+ | RoundCube Webmail IMAP Client | - | Version 0.1-20070428 | + | Version 0.1-20080314 | | | - | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | + | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | Redistribution and use in source and binary forms, with or without | @@ -41,7 +41,7 @@ */ // application constants -define('RCMAIL_VERSION', '0.1-20070428'); +define('RCMAIL_VERSION', '0.1-trunk'); define('RCMAIL_CHARSET', 'UTF-8'); define('JS_OBJECT_NAME', 'rcmail'); @@ -66,11 +66,12 @@ // instead the ones provided by RC ini_set('include_path', $INSTALL_PATH.PATH_SEPARATOR.$INSTALL_PATH.'program'.PATH_SEPARATOR.$INSTALL_PATH.'program/lib'.PATH_SEPARATOR.ini_get('include_path')); -ini_set('session.name', 'sessid'); +ini_set('session.name', 'roundcube_sessid'); ini_set('session.use_cookies', 1); ini_set('session.gc_maxlifetime', 21600); ini_set('session.gc_divisor', 500); ini_set('error_reporting', E_ALL&~E_NOTICE); +set_magic_quotes_runtime(0); // increase maximum execution time for php scripts // (does not work in safe mode) @@ -81,7 +82,6 @@ require_once('include/rcube_imap.inc'); require_once('include/bugs.inc'); require_once('include/main.inc'); -require_once('include/cache.inc'); require_once('PEAR.php'); @@ -103,8 +103,12 @@ if ($_action != 'get' && $_action != 'viewsource') { // use gzip compression if supported - if (function_exists('ob_gzhandler') && ini_get('zlib.output_compression')) + if (function_exists('ob_gzhandler') + && !ini_get('zlib.output_compression') + && ini_get('output_handler') != 'ob_gzhandler') + { ob_start('ob_gzhandler'); + } else ob_start(); } @@ -172,8 +176,8 @@ } else { - $OUTPUT->show_message("loginfailed", 'warning'); - $_SESSION['user_id'] = ''; + $OUTPUT->show_message($IMAP->error_code == -1 ? 'imaperror' : 'loginfailed', 'warning'); + rcmail_kill_session(); } } @@ -196,13 +200,13 @@ // log in to imap server -if (!empty($_SESSION['user_id']) && $_task=='mail') +if (!empty($USER->ID) && $_task=='mail') { $conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']); if (!$conn) { - $OUTPUT->show_message('imaperror', 'error'); - $_SESSION['user_id'] = ''; + $OUTPUT->show_message($IMAP->error_code == -1 ? 'imaperror' : 'sessionerror', 'error'); + rcmail_kill_session(); } else rcmail_set_imap_prop(); @@ -210,7 +214,7 @@ // not logged in -> set task to 'login -if (empty($_SESSION['user_id'])) +if (empty($USER->ID)) { if ($OUTPUT->ajax_call) $OUTPUT->remote_response("setTimeout(\"location.href='\"+this.env.comm_path+\"'\", 2000);"); @@ -218,6 +222,16 @@ $_task = 'login'; } + +// check client X-header to verify request origin +if ($OUTPUT->ajax_call) +{ + if (empty($CONFIG['devel_mode']) && !rc_request_header('X-RoundCube-Referer')) + { + header('HTTP/1.1 404 Not Found'); + die("Invalid Request"); + } +} // set task and action to client @@ -228,8 +242,19 @@ // not logged in -> show login page -if (!$_SESSION['user_id']) +if (empty($USER->ID)) { + // check if installer is still active + if (!$CONFIG['installer_disable_warning'] && is_readable('./installer/index.php')) + $OUTPUT->add_footer(' + <div style="background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em"> + <h2 style="margin-top:0.2em">Installer script is still accessible</h2> + <p>The install script of your RoundCube installation is still stored in its default location!</p> + <p>Please <b>remove</b> the whole <tt>installer</tt> folder from the RoundCube directory because + these files may expose sensitive configuration data like server passwords and encryption keys + to the public. Make sure you cannot access the <a href="./installer/">installer script</a> from your browser.</p> + </div>'); + $OUTPUT->task = 'login'; $OUTPUT->send('login'); exit; @@ -264,13 +289,16 @@ if ($_action=='viewsource') include('program/steps/mail/viewsource.inc'); + if ($_action=='sendmdn') + include('program/steps/mail/sendmdn.inc'); + if ($_action=='send') include('program/steps/mail/sendmail.inc'); if ($_action=='upload') include('program/steps/mail/upload.inc'); - if ($_action=='compose' || $_action=='remove-attachment') + if ($_action=='compose' || $_action=='remove-attachment' || $_action=='display-attachment') include('program/steps/mail/compose.inc'); if ($_action=='addcontact') @@ -285,7 +313,7 @@ if ($_action=='getunread') include('program/steps/mail/getunread.inc'); - if ($_action=='list' && isset($_GET['_remote'])) + if ($_action=='list' && isset($_REQUEST['_remote'])) include('program/steps/mail/list.inc'); if ($_action=='search') @@ -323,7 +351,7 @@ if ($_action=='show') include('program/steps/addressbook/show.inc'); - if ($_action=='list' && $_GET['_remote']) + if ($_action=='list' && $_REQUEST['_remote']) include('program/steps/addressbook/list.inc'); if ($_action=='search') -- Gitblit v1.9.1