Commits


logging reworked and daemonize by default The -l option was removed: now it logs on syslog if -f (foreground) is not passed.


clients certs support for CGI internally, gmid doesn’t care if the client issued a certificate, but now we pass that information to the CGI script in some new environment variables.


fix bug introduced in last version regarding full URLs gemini://example.com was incorrectly parsed.


correctly handle also non absolute URLs


handle //example.com urls


make port number configurable


[cgi] added support for path parameters enhance the CGI scripting support so that script can take path parameters. That is, a script at /cgi/foo is called when the request path is /cgi/foo/bar/... This commit also introduce some backward incompatible changes as the default env variables set for the CGI script changed.


[cgi] execute cgi scripts only inside a specific directory change the meaning of the -x flag: now it takes a string and executes CGI scripts only if they are inside a directory with the given name, relatively to the document root.


[cgi] set QUERY_STRING only if there is a query string


[debug] print number of connected clients on SIGINFO or SIGUSR2 for poor peoples


handle CGI concurrently don’t stop-the-world-until-cgi-end, but rather poll on the script, so we can handle other requests in the meantime.


[cgi] setenv instead of building an env + define more env variables


pass the query parameter to start_cgi


extract query parameters from the URL


ensure the requested protocol is “gemini” …and not something else that happens to be 6-bytes long.