Skip to content
Newer
Older
100644 290 lines (246 sloc) 10.9 KB
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
1 <?php
2 /*
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
3 +-------------------------------------------------------------------------+
e019f2d @alecpl - s/RoundCube/Roundcube/
alecpl authored Sep 25, 2010
4 | Roundcube Webmail IMAP Client |
80216d0 @alecpl - Change version number to 0.8-svn
alecpl authored Nov 24, 2011
5 | Version 0.8-svn |
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
6 | |
7fe3811 @thomascube Changed license to GNU GPLv3+ with exceptions for skins and plugins
thomascube authored Jan 18, 2012
7 | Copyright (C) 2005-2012, The Roundcube Dev Team |
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
8 | |
7fe3811 @thomascube Changed license to GNU GPLv3+ with exceptions for skins and plugins
thomascube authored Jan 18, 2012
9 | This program is free software: you can redistribute it and/or modify |
10 | it under the terms of the GNU General Public License (with exceptions |
11 | for skins & plugins) as published by the Free Software Foundation, |
12 | either version 3 of the License, or (at your option) any later version. |
13 | |
14 | This file forms part of the Roundcube Webmail Software for which the |
15 | following exception is added: Plugins and Skins which merely make |
16 | function calls to the Roundcube Webmail Software, and for that purpose |
17 | include it by reference shall not be considered modifications of |
18 | the software. |
19 | |
20 | If you wish to use this file in another project or create a modified |
21 | version that will not be part of the Roundcube Webmail Software, you |
22 | may remove the exception above and use this source code under the |
23 | original version of the license. |
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
24 | |
25 | This program is distributed in the hope that it will be useful, |
26 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
7fe3811 @thomascube Changed license to GNU GPLv3+ with exceptions for skins and plugins
thomascube authored Jan 18, 2012
27 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
28 | GNU General Public License for more details. |
29 | |
7fe3811 @thomascube Changed license to GNU GPLv3+ with exceptions for skins and plugins
thomascube authored Jan 18, 2012
30 | You should have received a copy of the GNU General Public License |
31 | along with this program. If not, see http://www.gnu.org/licenses/. |
a6f90e1 @alecpl -fixed disclaimer
alecpl authored May 11, 2008
32 | |
33 +-------------------------------------------------------------------------+
34 | Author: Thomas Bruederli <roundcube@gmail.com> |
35 +-------------------------------------------------------------------------+
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
36
37 $Id$
38
39 */
40
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
41 // include environment
42 require_once 'program/include/iniset.php';
15a9d1c @thomascube Optimized loading time; added periodic mail check; added EXPUNGE command
thomascube authored Jan 5, 2006
43
48bc52e @alecpl - Fix imap_init hook broken in r3258 (#1486493)
alecpl authored Feb 13, 2010
44 // init application, start session, init output class, etc.
83a7636 @thomascube More code cleanup
thomascube authored Jun 14, 2008
45 $RCMAIL = rcmail::get_instance();
46
9e54e6f @alecpl - Make the whole PHP output non-cacheable (#1487797)
alecpl authored Sep 23, 2011
47 // Make the whole PHP output non-cacheable (#1487797)
48 send_nocacheing_headers();
49
d51c93b @alecpl - get rid of some hardcoded action names and move decission about out…
alecpl authored Jun 1, 2009
50 // turn on output buffering
51 ob_start();
2f2f15b @thomascube Little improvements for message parsing and encoding
thomascube authored Sep 4, 2006
52
8c72e33 @thomascube Show appropriate error message if config files are missing
thomascube authored Jul 28, 2008
53 // check if config files had errors
54 if ($err_str = $RCMAIL->config->get_error()) {
55 raise_error(array(
56 'code' => 601,
57 'type' => 'php',
58 'message' => $err_str), false, true);
59 }
60
8affba5 @thomascube Improved error handling in DB connection failure
thomascube authored Mar 14, 2006
61 // check DB connections and exit on failure
c321a95 @thomascube Merged devel-framework branch (r5746:5779) back into trunk
thomascube authored Jan 16, 2012
62 if ($err_str = $RCMAIL->db->is_error()) {
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
63 raise_error(array(
64 'code' => 603,
65 'type' => 'db',
66 'message' => $err_str), FALSE, TRUE);
67 }
8affba5 @thomascube Improved error handling in DB connection failure
thomascube authored Mar 14, 2006
68
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
69 // error steps
197601e @thomascube Next step: introduce the application class 'rcmail' and get rid of so…
thomascube authored Apr 30, 2008
70 if ($RCMAIL->action=='error' && !empty($_GET['_code'])) {
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
71 raise_error(array('code' => hexdec($_GET['_code'])), FALSE, TRUE);
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
72 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
73
f5d61d8 @thomascube Revert r3038 and allow to specify the port as value of force_https
thomascube authored Oct 21, 2009
74 // check if https is required (for login) and redirect if necessary
75 if (empty($_SESSION['user_id']) && ($force_https = $RCMAIL->config->get('force_https', false))) {
76 $https_port = is_bool($force_https) ? 443 : $force_https;
5818e44 @alecpl - Fix $_SERVER['HTTPS'] check for SSL forcing on IIS (#1486243) + fix…
alecpl authored Oct 27, 2009
77 if (!rcube_https_check($https_port)) {
76c94b6 @alecpl - Fix 'force_https' to specified port when URL contains a port number…
alecpl authored Jan 17, 2010
78 $host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
79 $host .= ($https_port != 443 ? ':' . $https_port : '');
80 header('Location: https://' . $host . $_SERVER['REQUEST_URI']);
f5d61d8 @thomascube Revert r3038 and allow to specify the port as value of force_https
thomascube authored Oct 21, 2009
81 exit;
82 }
83 }
84
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
85 // trigger startup plugin hook
86 $startup = $RCMAIL->plugins->exec_hook('startup', array('task' => $RCMAIL->task, 'action' => $RCMAIL->action));
87 $RCMAIL->set_task($startup['task']);
88 $RCMAIL->action = $startup['action'];
89
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
90 // try to log in
9b94eb6 @alecpl - Fix setting task name according to auth state. So, any action befor…
alecpl authored Feb 6, 2010
91 if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
784a425 @thomascube protect login form submission from CSRF using a request token
thomascube authored Feb 3, 2011
92 $request_valid = $_SESSION['temp'] && $RCMAIL->check_request(RCUBE_INPUT_POST, 'login');
93
0129d7c @alecpl - Fix authentication when submitting form with existing session (#148…
alecpl authored Jan 19, 2009
94 // purge the session in case of new login when a session already exists
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
95 $RCMAIL->kill_session();
5f560ee @alecpl - Plugin API: Add 'pass' argument in 'authenticate' hook (#1487134)
alecpl authored Nov 29, 2010
96
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
97 $auth = $RCMAIL->plugins->exec_hook('authenticate', array(
98 'host' => $RCMAIL->autoselect_host(),
99 'user' => trim(get_input_value('_user', RCUBE_INPUT_POST)),
5f560ee @alecpl - Plugin API: Add 'pass' argument in 'authenticate' hook (#1487134)
alecpl authored Nov 29, 2010
100 'pass' => get_input_value('_pass', RCUBE_INPUT_POST, true,
101 $RCMAIL->config->get('password_charset', 'ISO-8859-1')),
4463648 @thomascube Allow a plugin to disable the cookie check
thomascube authored Aug 5, 2009
102 'cookiecheck' => true,
784a425 @thomascube protect login form submission from CSRF using a request token
thomascube authored Feb 3, 2011
103 'valid' => $request_valid,
64608bf @alecpl - Password: Make passwords encoding consistent with core, add 'passwo…
alecpl authored Feb 25, 2010
104 ));
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
105
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
106 // check if client supports cookies
4463648 @thomascube Allow a plugin to disable the cookie check
thomascube authored Aug 5, 2009
107 if ($auth['cookiecheck'] && empty($_COOKIE)) {
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
108 $OUTPUT->show_message("cookiesdisabled", 'warning');
109 }
784a425 @thomascube protect login form submission from CSRF using a request token
thomascube authored Feb 3, 2011
110 else if ($auth['valid'] && !$auth['abort'] &&
fdff340 @alecpl - Move some checks into login() method
alecpl authored Jan 3, 2012
111 $RCMAIL->login($auth['user'], $auth['pass'], $auth['host'])
4cfe66f @alecpl - small code cleanup
alecpl authored Mar 8, 2011
112 ) {
113 // create new session ID, don't destroy the current session
c294eaa @alecpl - Performance improvement: Remove redundant DELETE query (for old ses…
alecpl authored Mar 8, 2011
114 // it was destroyed already by $RCMAIL->kill_session() above
4cfe66f @alecpl - small code cleanup
alecpl authored Mar 8, 2011
115 $RCMAIL->session->remove('temp');
c294eaa @alecpl - Performance improvement: Remove redundant DELETE query (for old ses…
alecpl authored Mar 8, 2011
116 $RCMAIL->session->regenerate_id(false);
aad6e2a @thomascube New session authentication, should fix bugs #1483951 and #1484299; te…
thomascube authored Mar 27, 2007
117
118 // send auth cookie if necessary
cf2da2f @thomascube Improve session validity check with changing auth cookies; reduce wri…
thomascube authored Jan 28, 2011
119 $RCMAIL->session->set_auth_cookie();
aad6e2a @thomascube New session authentication, should fix bugs #1483951 and #1484299; te…
thomascube authored Mar 27, 2007
120
5e0045b @thomascube Add option to log successful logins.
thomascube authored Jun 6, 2008
121 // log successful login
3544558 @alecpl - Add HTTP_X_REAL_IP and HTTP_X_FORWARDED_FOR to successful logins lo…
alecpl authored Apr 20, 2010
122 rcmail_log_login();
10eedbe @alecpl - add file/line definitions to raise_error() calls
alecpl authored Jan 28, 2010
123
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
124 // restore original request parameters
88007cf @thomascube Fix login redirect issues (#1487686)
thomascube authored Jan 14, 2011
125 $query = array();
32234d7 @thomascube Better fix for login redirect, don't force mail task
thomascube authored Jan 19, 2011
126 if ($url = get_input_value('_url', RCUBE_INPUT_POST)) {
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
127 parse_str($url, $query);
c294eaa @alecpl - Performance improvement: Remove redundant DELETE query (for old ses…
alecpl authored Mar 8, 2011
128
32234d7 @thomascube Better fix for login redirect, don't force mail task
thomascube authored Jan 19, 2011
129 // prevent endless looping on login page
130 if ($query['_task'] == 'login')
131 unset($query['_task']);
132 }
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
133
134 // allow plugins to control the redirect url after login success
32234d7 @thomascube Better fix for login redirect, don't force mail task
thomascube authored Jan 19, 2011
135 $redir = $RCMAIL->plugins->exec_hook('login_after', $query + array('_task' => 'mail'));
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
136 unset($redir['abort'], $redir['_err']);
5e0045b @thomascube Add option to log successful logins.
thomascube authored Jun 6, 2008
137
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
138 // send redirect
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
139 $OUTPUT->redirect($redir);
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
140 }
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
141 else {
c321a95 @thomascube Merged devel-framework branch (r5746:5779) back into trunk
thomascube authored Jan 16, 2012
142 $error_code = is_object($RCMAIL->storage) ? $RCMAIL->storage->get_error_code() : 1;
6d99f99 @alecpl - Handle situation when $IMAP object isn't initialized on log in
alecpl authored Nov 9, 2010
143
c321a95 @thomascube Merged devel-framework branch (r5746:5779) back into trunk
thomascube authored Jan 16, 2012
144 $OUTPUT->show_message($error_code < -1 ? 'storageerror' : (!$auth['valid'] ? 'invalidrequest' : 'loginfailed'), 'warning');
8fcc3e1 @alecpl - Improved IMAP errors handling
alecpl authored Oct 14, 2010
145 $RCMAIL->plugins->exec_hook('login_failed', array(
6d99f99 @alecpl - Handle situation when $IMAP object isn't initialized on log in
alecpl authored Nov 9, 2010
146 'code' => $error_code, 'host' => $auth['host'], 'user' => $auth['user']));
1854c45 @thomascube More code cleanup + oop-ization
thomascube authored May 7, 2008
147 $RCMAIL->kill_session();
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
148 }
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
149 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
150
de62f02 @thomascube Also check referer on logout action
thomascube authored Feb 8, 2011
151 // end session (after optional referer check)
152 else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id']) && (!$RCMAIL->config->get('referer_check') || rcube_check_referer())) {
c321a95 @thomascube Merged devel-framework branch (r5746:5779) back into trunk
thomascube authored Jan 16, 2012
153 $userdata = array(
154 'user' => $_SESSION['username'],
155 'host' => $_SESSION['storage_host'],
156 'lang' => $RCMAIL->user->language,
157 );
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
158 $OUTPUT->show_message('loggedout');
1854c45 @thomascube More code cleanup + oop-ization
thomascube authored May 7, 2008
159 $RCMAIL->logout_actions();
160 $RCMAIL->kill_session();
7ef47e5 @thomascube Add some arguments to the logout_after hook
thomascube authored Aug 14, 2009
161 $RCMAIL->plugins->exec_hook('logout_after', $userdata);
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
162 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
163
bac7d17 @thomascube Fixed bugs #1364122, #1468895, ticket #1483811 and other minor bugs
thomascube authored Jul 18, 2006
164 // check session and auth cookie
9b94eb6 @alecpl - Fix setting task name according to auth state. So, any action befor…
alecpl authored Feb 6, 2010
165 else if ($RCMAIL->task != 'login' && $_SESSION['user_id'] && $RCMAIL->action != 'send') {
cf2da2f @thomascube Improve session validity check with changing auth cookies; reduce wri…
thomascube authored Jan 28, 2011
166 if (!$RCMAIL->session->check_auth()) {
1854c45 @thomascube More code cleanup + oop-ization
thomascube authored May 7, 2008
167 $RCMAIL->kill_session();
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
168 $session_error = true;
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
169 }
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
170 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
171
172 // not logged in -> show login page
197601e @thomascube Next step: introduce the application class 'rcmail' and get rid of so…
thomascube authored Apr 30, 2008
173 if (empty($RCMAIL->user->ID)) {
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
174 // log session failures
6354da5 @thomascube Fix r5117: don't show error on default login page
thomascube authored Aug 24, 2011
175 if (($task = get_input_value('_task', RCUBE_INPUT_GPC)) && !in_array($task, array('login','logout')) && !$session_error && ($sess_id = $_COOKIE[ini_get('session.name')])) {
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
176 $RCMAIL->session->log("Aborted session " . $sess_id . "; no valid session data found");
177 $session_error = true;
178 }
179
ec045b0 @thomascube Revert r4609 and use stateless request tokens; no need to save them i…
thomascube authored Mar 22, 2011
180 if ($OUTPUT->ajax_call)
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
181 $OUTPUT->redirect(array('_err' => 'session'), 2000);
9b94eb6 @alecpl - Fix setting task name according to auth state. So, any action befor…
alecpl authored Feb 6, 2010
182
ccc80d1 @alecpl - Fix login page loading into an iframe when session expires (#1485952)
alecpl authored Oct 14, 2009
183 if (!empty($_REQUEST['_framed']))
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
184 $OUTPUT->command('redirect', $RCMAIL->url(array('_err' => 'session')));
ccc80d1 @alecpl - Fix login page loading into an iframe when session expires (#1485952)
alecpl authored Oct 14, 2009
185
330127a @thomascube Disable PHP notices + check for installer script on login page
thomascube authored Mar 2, 2008
186 // check if installer is still active
83a7636 @thomascube More code cleanup
thomascube authored Jun 14, 2008
187 if ($RCMAIL->config->get('enable_installer') && is_readable('./installer/index.php')) {
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
188 $OUTPUT->add_footer(html::div(array('style' => "background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em"),
189 html::tag('h2', array('style' => "margin-top:0.2em"), "Installer script is still accessible") .
e019f2d @alecpl - s/RoundCube/Roundcube/
alecpl authored Sep 25, 2010
190 html::p(null, "The install script of your Roundcube installation is still stored in its default location!") .
191 html::p(null, "Please <b>remove</b> the whole <tt>installer</tt> folder from the Roundcube directory because .
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
192 these files may expose sensitive configuration data like server passwords and encryption keys
193 to the public. Make sure you cannot access the <a href=\"./installer/\">installer script</a> from your browser.")
194 )
195 );
196 }
9e54e6f @alecpl - Make the whole PHP output non-cacheable (#1487797)
alecpl authored Sep 23, 2011
197
fcc7f86 @thomascube Log session validation errors; keep error message when redirecting to…
thomascube authored Jul 30, 2011
198 if ($session_error || $_REQUEST['_err'] == 'session')
199 $OUTPUT->show_message('sessionerror', 'error', null, true, -1);
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
200
784a425 @thomascube protect login form submission from CSRF using a request token
thomascube authored Feb 3, 2011
201 $RCMAIL->set_task('login');
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
202 $OUTPUT->send('login');
203 }
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
204 // CSRF prevention
205 else {
206 // don't check for valid request tokens in these actions
207 $request_check_whitelist = array('login'=>1, 'spell'=>1);
208
209 // check client X-header to verify request origin
210 if ($OUTPUT->ajax_call) {
ec045b0 @thomascube Revert r4609 and use stateless request tokens; no need to save them i…
thomascube authored Mar 22, 2011
211 if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token() && !$RCMAIL->config->get('devel_mode')) {
abdf314 @thomascube Allow cross-task ajax requests
thomascube authored Oct 30, 2011
212 header('HTTP/1.1 403 Forbidden');
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
213 die("Invalid Request");
214 }
215 }
216 // check request token in POST form submissions
217 else if (!empty($_POST) && !$request_check_whitelist[$RCMAIL->action] && !$RCMAIL->check_request()) {
218 $OUTPUT->show_message('invalidrequest', 'error');
219 $OUTPUT->send($RCMAIL->task);
220 }
a77cf22 @thomascube Add optional referer check to prevent CSRF in GET requests
thomascube authored Feb 8, 2011
221
222 // check referer if configured
223 if (!$request_check_whitelist[$RCMAIL->action] && $RCMAIL->config->get('referer_check') && !rcube_check_referer()) {
224 raise_error(array(
225 'code' => 403,
226 'type' => 'php',
227 'message' => "Referer check failed"), true, true);
228 }
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
229 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
230
3703021 @alecpl - Plugin API: added 'ready' hook (#1488073)
alecpl authored Oct 7, 2011
231 // we're ready, user is authenticated and the request is safe
232 $plugin = $RCMAIL->plugins->exec_hook('ready', array('task' => $RCMAIL->task, 'action' => $RCMAIL->action));
233 $RCMAIL->set_task($plugin['task']);
234 $RCMAIL->action = $plugin['action'];
235
236
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
237 // handle special actions
48aff91 @thomascube Moved code block to a more appropriate position + codestyle
thomascube authored Aug 29, 2008
238 if ($RCMAIL->action == 'keep-alive') {
239 $OUTPUT->reset();
28ac5ca @thomascube Let plugins hook into keep-alive requests
thomascube authored May 24, 2011
240 $RCMAIL->plugins->exec_hook('keep_alive', array());
48aff91 @thomascube Moved code block to a more appropriate position + codestyle
thomascube authored Aug 29, 2008
241 $OUTPUT->send();
242 }
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
243 else if ($RCMAIL->action == 'save-pref') {
4351f7c @alecpl - Improve performance by including files with absolute path (#1487849)
alecpl authored Apr 20, 2011
244 include INSTALL_PATH . 'program/steps/utils/save_pref.inc';
249db18 @alecpl - Fix "Server Error! (Not Found)" when using utils/save-pref action (…
alecpl authored Oct 1, 2010
245 }
1cded85 @thomascube Re-design of caching (new database table added\!); some bugfixes; Pos…
thomascube authored Dec 3, 2005
246
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
247
6ea6c9b @thomascube Simplify step inclusion in controller (index.php)
thomascube authored Jun 20, 2008
248 // include task specific functions
4351f7c @alecpl - Improve performance by including files with absolute path (#1487849)
alecpl authored Apr 20, 2011
249 if (is_file($incfile = INSTALL_PATH . 'program/steps/'.$RCMAIL->task.'/func.inc'))
250 include_once $incfile;
6ea6c9b @thomascube Simplify step inclusion in controller (index.php)
thomascube authored Jun 20, 2008
251
252 // allow 5 "redirects" to another action
253 $redirects = 0; $incstep = null;
254 while ($redirects < 5) {
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
255 // execute a plugin action
05a631a @thomascube Allow plugins to register their own tasks
thomascube authored Jun 3, 2010
256 if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
87e58c7 @thomascube Default action for plugin tasks is 'index'
thomascube authored May 2, 2011
257 if (!$RCMAIL->action) $RCMAIL->action = 'index';
05a631a @thomascube Allow plugins to register their own tasks
thomascube authored Jun 3, 2010
258 $RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
259 break;
260 }
261 else if (preg_match('/^plugin\./', $RCMAIL->action)) {
cc97ea0 @thomascube Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
thomascube authored Apr 19, 2009
262 $RCMAIL->plugins->exec_action($RCMAIL->action);
263 break;
264 }
6ea6c9b @thomascube Simplify step inclusion in controller (index.php)
thomascube authored Jun 20, 2008
265 // try to include the step file
68d2d54 @alecpl - Move action files map from index.php to steps' func.inc files
alecpl authored Jan 16, 2011
266 else if (($stepfile = $RCMAIL->get_action_file())
4351f7c @alecpl - Improve performance by including files with absolute path (#1487849)
alecpl authored Apr 20, 2011
267 && is_file($incfile = INSTALL_PATH . 'program/steps/'.$RCMAIL->task.'/'.$stepfile)
68d2d54 @alecpl - Move action files map from index.php to steps' func.inc files
alecpl authored Jan 16, 2011
268 ) {
4351f7c @alecpl - Improve performance by including files with absolute path (#1487849)
alecpl authored Apr 20, 2011
269 include $incfile;
6ea6c9b @thomascube Simplify step inclusion in controller (index.php)
thomascube authored Jun 20, 2008
270 $redirects++;
271 }
272 else {
273 break;
274 }
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
275 }
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
276
277
6ea6c9b @thomascube Simplify step inclusion in controller (index.php)
thomascube authored Jun 20, 2008
278 // parse main template (default)
197601e @thomascube Next step: introduce the application class 'rcmail' and get rid of so…
thomascube authored Apr 30, 2008
279 $OUTPUT->send($RCMAIL->task);
539cd47 @thomascube Fix for URL injection vulnerability (Bug #1307966)
thomascube authored Sep 29, 2005
280
4e17e6c @thomascube Initial revision
thomascube authored Sep 25, 2005
281
539cd47 @thomascube Fix for URL injection vulnerability (Bug #1307966)
thomascube authored Sep 29, 2005
282 // if we arrive here, something went wrong
f115416 @thomascube Merged branch devel-addressbook from r443 back to trunk
thomascube authored Apr 28, 2007
283 raise_error(array(
284 'code' => 404,
285 'type' => 'php',
286 'line' => __LINE__,
287 'file' => __FILE__,
47124c2 @thomascube Changed codebase to PHP5 with autoloader + added some new classes fro…
thomascube authored Apr 12, 2008
288 'message' => "Invalid request"), true, true);
b25dfd0 @alecpl - removed PHP closing tag
alecpl authored Jun 23, 2010
289
Something went wrong with that request. Please try again.