summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-10-27 09:43:39 +0000
committeralecpl <alec@alec.pl>2009-10-27 09:43:39 +0000
commit5818e44345204e2323781adb87edcfba45e246a8 (patch)
tree523983635c190630ae8a57781e3fa1dbbba53798
parentd22f4e67afd40a56db064c571310346bf7acbc55 (diff)
- Fix $_SERVER['HTTPS'] check for SSL forcing on IIS (#1486243) + fix port check
-rw-r--r--CHANGELOG1
-rw-r--r--index.php2
-rw-r--r--program/include/main.inc21
-rw-r--r--program/include/rcube_shared.inc2
4 files changed, 24 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 427955139..7d6e32e3c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
+- Fix $_SERVER['HTTPS'] check for SSL forcing on IIS (#1486243)
- Avoid unnecessary page loads for selected tab (#1486032)
- Fix quota indicator issues by content generation on client-size (#1486197, #1486220)
- Don't display disabled sections in Settings (#1486099)
diff --git a/index.php b/index.php
index e0956b4ff..e9b3676e9 100644
--- a/index.php
+++ b/index.php
@@ -66,7 +66,7 @@ if ($RCMAIL->action=='error' && !empty($_GET['_code'])) {
// check if https is required (for login) and redirect if necessary
if (empty($_SESSION['user_id']) && ($force_https = $RCMAIL->config->get('force_https', false))) {
$https_port = is_bool($force_https) ? 443 : $force_https;
- if (!(isset($_SERVER['HTTPS']) || $_SERVER['SERVER_PORT'] == $use_https || $RCMAIL->config->get('use_https'))) {
+ if (!rcube_https_check($https_port)) {
header('Location: https://' . $_SERVER['HTTP_HOST'] . ($https_port != 443 ? ':' . $https_port : '') . $_SERVER['REQUEST_URI']);
exit;
}
diff --git a/program/include/main.inc b/program/include/main.inc
index 06d7780d1..aa0d3fa26 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -1401,6 +1401,27 @@ function rcube_html_editor($mode='')
/**
+ * Check if working in SSL mode
+ *
+ * @param integer HTTPS port number
+ * @param boolean Enables 'use_https' option checking
+ */
+function rcube_https_check($port=null, $use_https=true)
+{
+ global $RCMAIL;
+
+ if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
+ return true;
+ if ($port && $_SERVER['SERVER_PORT'] == $port)
+ return true;
+ if ($use_https && $RCMAIL->config->get('use_https'))
+ return true;
+
+ return false;
+}
+
+
+/**
* E-mail address validation
*/
function check_email($email)
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 97314ccd1..4119f1287 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -41,7 +41,7 @@ function send_nocacheing_headers()
header("Pragma: no-cache");
// We need to set the following headers to make downloads work using IE in HTTPS mode.
- if (isset($_SERVER['HTTPS']) || rcmail::get_instance()->config->get('use_https')) {
+ if (rcube_https_check()) {
header('Pragma: ');
header('Cache-Control: ');
}