aboutsummaryrefslogtreecommitdiff
path: root/apps/settings.py
diff options
context:
space:
mode:
authorKonstantin Ryabitsev <mricon@kernel.org>2013-10-11 10:47:30 -0400
committerJeremy Kerr <jk@ozlabs.org>2013-10-13 14:58:23 +0800
commit0f62b0c1d9e35319c2f0386ac9ba1371e15dc9ec (patch)
tree5906c26444696911143832ad6c2da51b2e5d0a5f /apps/settings.py
parent4d7fcc9062659aa74377b39dd87de35c07973ec2 (diff)
downloadpatchwork-0f62b0c1d9e35319c2f0386ac9ba1371e15dc9ec.tar
patchwork-0f62b0c1d9e35319c2f0386ac9ba1371e15dc9ec.tar.gz
Add a config option to FORCE_HTTPS_LINKS
In situations where SSL is terminated at the load-balancer, we cannot rely on guessing the scheme based on whether patchwork itself was accessed via http or https, since the last-leg is always going to be done over http. Unfortunately, wrongly using http:// URLs results in unusable .pwclientrc files, since xmlrpc does not handle http->https redirects and instead displays a traceback. This change introduces a FORCE_HTTPS_LINKS option, which forces pwclientrc links to always return "https" regardless of how the project itself is accessed. It appears that the http/https check is currently only used for generating pwclientrc -- a lot of other places seem to hardcode "http://" and rely on the server to transparently upgrade the connection. This is not a secure approach (it allows for MITM and SSL-Strip attacks) and therefore all places currently hardcoding http://{{site.domain}} and similar should be switched to using the "sheme" variable, the same as done for generating pwclientrc files. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/settings.py')
-rw-r--r--apps/settings.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/apps/settings.py b/apps/settings.py
index 537c380..43a37d8 100644
--- a/apps/settings.py
+++ b/apps/settings.py
@@ -114,6 +114,11 @@ ENABLE_XMLRPC = False
# of patchwork
COMPAT_REDIR = True
+# Set to True to always generate https:// links instead of guessing
+# the scheme based on current access. This is useful if SSL protocol
+# is terminated upstream of the server (e.g. at the load balancer)
+FORCE_HTTPS_LINKS = False
+
try:
from local_settings import *
except ImportError, ex: