Fossil SCM
Adds the Apache-style REQUEST_SCHEME environment variable to the /ext environment so that CGIs can determine whether they're running in HTTP or HTTPS.
Commit
0d72caae1592769e00ad0752757449c51a37a5a6dcac9b84a378e9b8ef744808
Parent
f0a86f3cacf2f7d…
2 files changed
+5
+1
+5
| --- src/extcgi.c | ||
| +++ src/extcgi.c | ||
| @@ -67,10 +67,12 @@ | ||
| 67 | 67 | "PATH_INFO", |
| 68 | 68 | "QUERY_STRING", |
| 69 | 69 | "REMOTE_ADDR", |
| 70 | 70 | "REMOTE_USER", |
| 71 | 71 | "REQUEST_METHOD", |
| 72 | + "REQUEST_SCHEME", /* non-standard but supported by Apache 2.4+ | |
| 73 | + ** Holds either "http" or "https". */ | |
| 72 | 74 | "REQUEST_URI", |
| 73 | 75 | "SCRIPT_DIRECTORY", |
| 74 | 76 | "SCRIPT_FILENAME", |
| 75 | 77 | "SCRIPT_NAME", |
| 76 | 78 | "SERVER_NAME", |
| @@ -266,10 +268,13 @@ | ||
| 266 | 268 | cgi_set_parameter_nocopy("FOSSIL_URI", g.zTop, 0); |
| 267 | 269 | cgi_set_parameter_nocopy("FOSSIL_CAPABILITIES", |
| 268 | 270 | db_text("","SELECT fullcap(cap) FROM user WHERE login=%Q", |
| 269 | 271 | g.zLogin ? g.zLogin : "nobody"), 0); |
| 270 | 272 | cgi_replace_parameter("GATEWAY_INTERFACE","CGI/1.0"); |
| 273 | + cgi_replace_parameter("REQUEST_SCHEME", | |
| 274 | + strncmp(g.zTop, "https:", 6)==0 | |
| 275 | + ? "https" : "http"); | |
| 271 | 276 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 272 | 277 | (void)P(azCgiEnv[i]); |
| 273 | 278 | } |
| 274 | 279 | fossil_clearenv(); |
| 275 | 280 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 276 | 281 |
| --- src/extcgi.c | |
| +++ src/extcgi.c | |
| @@ -67,10 +67,12 @@ | |
| 67 | "PATH_INFO", |
| 68 | "QUERY_STRING", |
| 69 | "REMOTE_ADDR", |
| 70 | "REMOTE_USER", |
| 71 | "REQUEST_METHOD", |
| 72 | "REQUEST_URI", |
| 73 | "SCRIPT_DIRECTORY", |
| 74 | "SCRIPT_FILENAME", |
| 75 | "SCRIPT_NAME", |
| 76 | "SERVER_NAME", |
| @@ -266,10 +268,13 @@ | |
| 266 | cgi_set_parameter_nocopy("FOSSIL_URI", g.zTop, 0); |
| 267 | cgi_set_parameter_nocopy("FOSSIL_CAPABILITIES", |
| 268 | db_text("","SELECT fullcap(cap) FROM user WHERE login=%Q", |
| 269 | g.zLogin ? g.zLogin : "nobody"), 0); |
| 270 | cgi_replace_parameter("GATEWAY_INTERFACE","CGI/1.0"); |
| 271 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 272 | (void)P(azCgiEnv[i]); |
| 273 | } |
| 274 | fossil_clearenv(); |
| 275 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 276 |
| --- src/extcgi.c | |
| +++ src/extcgi.c | |
| @@ -67,10 +67,12 @@ | |
| 67 | "PATH_INFO", |
| 68 | "QUERY_STRING", |
| 69 | "REMOTE_ADDR", |
| 70 | "REMOTE_USER", |
| 71 | "REQUEST_METHOD", |
| 72 | "REQUEST_SCHEME", /* non-standard but supported by Apache 2.4+ |
| 73 | ** Holds either "http" or "https". */ |
| 74 | "REQUEST_URI", |
| 75 | "SCRIPT_DIRECTORY", |
| 76 | "SCRIPT_FILENAME", |
| 77 | "SCRIPT_NAME", |
| 78 | "SERVER_NAME", |
| @@ -266,10 +268,13 @@ | |
| 268 | cgi_set_parameter_nocopy("FOSSIL_URI", g.zTop, 0); |
| 269 | cgi_set_parameter_nocopy("FOSSIL_CAPABILITIES", |
| 270 | db_text("","SELECT fullcap(cap) FROM user WHERE login=%Q", |
| 271 | g.zLogin ? g.zLogin : "nobody"), 0); |
| 272 | cgi_replace_parameter("GATEWAY_INTERFACE","CGI/1.0"); |
| 273 | cgi_replace_parameter("REQUEST_SCHEME", |
| 274 | strncmp(g.zTop, "https:", 6)==0 |
| 275 | ? "https" : "http"); |
| 276 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 277 | (void)P(azCgiEnv[i]); |
| 278 | } |
| 279 | fossil_clearenv(); |
| 280 | for(i=0; i<sizeof(azCgiEnv)/sizeof(azCgiEnv[0]); i++){ |
| 281 |
+1
| --- www/serverext.wiki | ||
| +++ www/serverext.wiki | ||
| @@ -168,10 +168,11 @@ | ||
| 168 | 168 | * FOSSIL_CAPABILITIES |
| 169 | 169 | * FOSSIL_NONCE |
| 170 | 170 | * FOSSIL_REPOSITORY |
| 171 | 171 | * FOSSIL_URI |
| 172 | 172 | * FOSSIL_USER |
| 173 | + * REQUEST_SCHEME (as used by Apache: "http" or "https") | |
| 173 | 174 | |
| 174 | 175 | The FOSSIL_USER string is the name of the logged-in user. This variable |
| 175 | 176 | is missing or is an empty string if the user is not logged in. The |
| 176 | 177 | FOSSIL_CAPABILITIES string is a list of |
| 177 | 178 | [./caps/ref.html|Fossil capabilities] that |
| 178 | 179 |
| --- www/serverext.wiki | |
| +++ www/serverext.wiki | |
| @@ -168,10 +168,11 @@ | |
| 168 | * FOSSIL_CAPABILITIES |
| 169 | * FOSSIL_NONCE |
| 170 | * FOSSIL_REPOSITORY |
| 171 | * FOSSIL_URI |
| 172 | * FOSSIL_USER |
| 173 | |
| 174 | The FOSSIL_USER string is the name of the logged-in user. This variable |
| 175 | is missing or is an empty string if the user is not logged in. The |
| 176 | FOSSIL_CAPABILITIES string is a list of |
| 177 | [./caps/ref.html|Fossil capabilities] that |
| 178 |
| --- www/serverext.wiki | |
| +++ www/serverext.wiki | |
| @@ -168,10 +168,11 @@ | |
| 168 | * FOSSIL_CAPABILITIES |
| 169 | * FOSSIL_NONCE |
| 170 | * FOSSIL_REPOSITORY |
| 171 | * FOSSIL_URI |
| 172 | * FOSSIL_USER |
| 173 | * REQUEST_SCHEME (as used by Apache: "http" or "https") |
| 174 | |
| 175 | The FOSSIL_USER string is the name of the logged-in user. This variable |
| 176 | is missing or is an empty string if the user is not logged in. The |
| 177 | FOSSIL_CAPABILITIES string is a list of |
| 178 | [./caps/ref.html|Fossil capabilities] that |
| 179 |