| | |
| | | /* |
| | | +-------------------------------------------------------------------------+ |
| | | | Roundcube Webmail IMAP Client | |
| | | | Version 0.6-svn | |
| | | | Version 0.7-svn | |
| | | | | |
| | | | Copyright (C) 2005-2011, The Roundcube Dev Team | |
| | | | | |
| | |
| | | |
| | | // init application, start session, init output class, etc. |
| | | $RCMAIL = rcmail::get_instance(); |
| | | |
| | | // Make the whole PHP output non-cacheable (#1487797) |
| | | send_nocacheing_headers(); |
| | | |
| | | // turn on output buffering |
| | | ob_start(); |
| | |
| | | // not logged in -> show login page |
| | | if (empty($RCMAIL->user->ID)) { |
| | | // log session failures |
| | | if (!in_array(get_input_value('_task', RCUBE_INPUT_GPC), array('login','logout')) && !$session_error && ($sess_id = $_COOKIE[ini_get('session.name')])) { |
| | | if (($task = get_input_value('_task', RCUBE_INPUT_GPC)) && !in_array($task, array('login','logout')) && !$session_error && ($sess_id = $_COOKIE[ini_get('session.name')])) { |
| | | $RCMAIL->session->log("Aborted session " . $sess_id . "; no valid session data found"); |
| | | $session_error = true; |
| | | } |
| | |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | |
| | | if ($session_error || $_REQUEST['_err'] == 'session') |
| | | $OUTPUT->show_message('sessionerror', 'error', null, true, -1); |
| | | |
| | |
| | | // check client X-header to verify request origin |
| | | if ($OUTPUT->ajax_call) { |
| | | if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token() && !$RCMAIL->config->get('devel_mode')) { |
| | | header('HTTP/1.1 404 Not Found'); |
| | | header('HTTP/1.1 403 Forbidden'); |
| | | die("Invalid Request"); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // we're ready, user is authenticated and the request is safe |
| | | $plugin = $RCMAIL->plugins->exec_hook('ready', array('task' => $RCMAIL->task, 'action' => $RCMAIL->action)); |
| | | $RCMAIL->set_task($plugin['task']); |
| | | $RCMAIL->action = $plugin['action']; |
| | | |
| | | |
| | | // handle special actions |
| | | if ($RCMAIL->action == 'keep-alive') { |
| | | $OUTPUT->reset(); |