chiark / gitweb /
Keep track of whether a CGI request is carried over SSL.
[chopwood] / cgi.py
diff --git a/cgi.py b/cgi.py
index 05c6c9e0739bfca0c4198c299e2e08e64ffe8fb0..0bd66cc5ff642049b378cec4f3e41d6ff80202ba 100644 (file)
--- a/cgi.py
+++ b/cgi.py
@@ -291,6 +291,7 @@ SPECIAL = {}
 PARAM = []
 PARAMDICT = {}
 PATH = []
+SSLP = False
 
 ## Regular expressions for splitting apart query and cookie strings.
 R_QSPLIT = RX.compile('[;&]')
@@ -346,8 +347,13 @@ def cgiparse():
   `PATH'
         The trailing `PATH_INFO' path, split at `/' markers, with any
         trailing empty component removed.
+
+  `SSLP'
+        True if the client connection is carried over SSL or TLS.
   """
 
+  global SSLP
+
   def getenv(var):
     try: return ENV[var]
     except KeyError: raise U.ExpectedError, (500, "No `%s' supplied" % var)
@@ -402,6 +408,10 @@ def cgiparse():
     if pp and not pp[-1]: pp.pop()
     PATH[:] = pp
 
+  ## Check the crypto for the connection.
+  if ENV.get('SSL_PROTOCOL'):
+    SSLP = True
+
 ###--------------------------------------------------------------------------
 ### CGI subcommands.