Fix CGI environment variables - geomyidae - a small C-based gopherd (mirror) | |
git clone git://git.codemadness.org/geomyidae | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 06a070824c9fcbc590986c1931ca6266463a613f | |
parent c5d96276bca47a0598ba696e8787a437a1ba6344 | |
Author: Christopher Williams <[email protected]> | |
Date: Mon, 5 May 2025 16:32:51 -0700 | |
Fix CGI environment variables | |
Rename: | |
* PATH_INFO to SCRIPT_NAME, | |
* PATH_TRANSLATED to SCRIPT_FILENAME, and | |
* TRAVERSAL to PATH_INFO | |
to conform with the CGI/1.1 spec (RFC 3875). | |
Signed-off-by: Christoph Lohmann <[email protected]> | |
Diffstat: | |
M geomyidae.8 | 10 ++++------ | |
M ind.c | 7 +++---- | |
2 files changed, 7 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/geomyidae.8 b/geomyidae.8 | |
@@ -501,23 +501,21 @@ Additionally to the above arguments several environment v… | |
.It Ev GATEWAY_INTERFACE | |
.Qq Cm CGI/1.1 | |
.It Ev PATH_INFO | |
-Script which is executed | |
-.It Ev PATH_TRANSLATED | |
-Absolute path with script which is executed | |
+Traversal (See above.) | |
.It Ev QUERY_STRING | |
Arguments (See above.) | |
.It Ev SELECTOR | |
Raw selector | |
.It Ev REQUEST | |
Raw selector | |
-.It Ev TRAVERSAL | |
-Traversal (See above.) | |
.It Ev REMOTE_ADDR , REMOTE_HOST | |
IP of the client | |
.It Ev REQUEST_METHOD | |
.Qq Cm GET | |
.It Ev SCRIPT_NAME | |
Script which is executed. | |
+.It Ev SCRIPT_FILENAME | |
+Absolute path with script which is executed. | |
.It Ev SERVER_NAME | |
Server's hostname. | |
.It Ev SERVER_PORT | |
@@ -549,7 +547,7 @@ tries to find some index.dcgi or index.cgi file in the last… | |
If this is found and the index files are executable, | |
.Nm | |
will execute them using the traversal and | |
-.Ev TRAVERSAL | |
+.Ev PATH_INFO | |
parameter and environment variable being set to the rest path. | |
.Bd -literal -offset indent | |
Selector: /some/v1/service/add/something?args=value | |
diff --git a/ind.c b/ind.c | |
@@ -548,13 +548,13 @@ setcgienviron(char *file, char *path, char *port, char *b… | |
unsetenv("CONTENT_TYPE"); | |
setenv("GATEWAY_INTERFACE", "CGI/1.1", 1); | |
/* TODO: Separate, if run like rest.dcgi. */ | |
- setenv("PATH_INFO", path+strlen(base), 1); | |
- setenv("PATH_TRANSLATED", path, 1); | |
+ setenv("SCRIPT_NAME", path+strlen(base), 1); | |
+ setenv("SCRIPT_FILENAME", path, 1); | |
setenv("QUERY_STRING", args, 1); | |
setenv("SELECTOR", sel, 1); | |
setenv("REQUEST", sel, 1); | |
- setenv("TRAVERSAL", traverse, 1); | |
+ setenv("PATH_INFO", traverse, 1); | |
setenv("REMOTE_ADDR", chost, 1); | |
/* | |
@@ -572,7 +572,6 @@ setcgienviron(char *file, char *path, char *port, char *bas… | |
* ugly. | |
*/ | |
setenv("REQUEST_METHOD", "GET", 1); | |
- setenv("SCRIPT_NAME", file, 1); | |
setenv("SERVER_NAME", ohost, 1); | |
setenv("SERVER_PORT", port, 1); | |
setenv("SERVER_LISTEN_NAME", bhost, 1); |